Compare commits

..

2 Commits

Author SHA1 Message Date
guoyuepeng 2929a7fc31 Merge pull request 'feat(web): 新增车辆和刷卡记录统计功能- 在 MkmjAreaController 和 MkmjPassageController 中添加 statistics 接口' (#2) from master into koumen
Reviewed-on: #2
2025-11-18 14:16:15 +08:00
fangjiakai 39a820d568 feat(web): 新增车辆和刷卡记录统计功能- 在 MkmjAreaController 和 MkmjPassageController 中添加 statistics 接口
- 新增 MkmjCarRecordController 和 MkmjSwipeCardRecordController 控制器- 实现车辆和人员进出统计数据的查询逻辑- 添加相关的 DTO、CO 转换器及服务实现类
- 支持通过区域或通道 ID 查询统计信息
- 提供车辆和人员出入数量的聚合展示接口
2025-11-18 10:01:07 +08:00
51 changed files with 2730 additions and 9 deletions

View File

@ -2,9 +2,11 @@ package com.zcloud.primeport.web;
import com.zcloud.primeport.api.MkmjAreaServiceI;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.dto.MkmjAreaAddCmd;
import com.zcloud.primeport.dto.MkmjAreaPageQry;
import com.zcloud.primeport.dto.MkmjAreaUpdateCmd;
import com.zcloud.primeport.dto.StatisticsByAreaCmd;
import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
@ -12,6 +14,7 @@ import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -78,5 +81,11 @@ public class MkmjAreaController {
mkmjAreaService.edit(mkmjAreaUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("统计")
@PostMapping("/statistics")
public MultiResponse<MkmjStatisticsCO> statistics(@RequestBody StatisticsByAreaCmd qry) {
return MultiResponse.of(mkmjAreaService.statistics(qry.getIds()));
}
}

View File

@ -0,0 +1,82 @@
package com.zcloud.primeport.web;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.api.MkmjCarRecordServiceI;
import com.zcloud.primeport.dto.MkmjCarRecordAddCmd;
import com.zcloud.primeport.dto.MkmjCarRecordPageQry;
import com.zcloud.primeport.dto.MkmjCarRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjCarRecordCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Api(tags = "车辆进出港记录")
@RequestMapping("/${application.gateway}/mkmjCarRecord")
@RestController
@AllArgsConstructor
public class MkmjCarRecordController {
private final MkmjCarRecordServiceI mkmjCarRecordService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<MkmjCarRecordCO> add(@Validated @RequestBody MkmjCarRecordAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return mkmjCarRecordService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<MkmjCarRecordCO> page(@RequestBody MkmjCarRecordPageQry qry) {
return mkmjCarRecordService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<MkmjCarRecordCO> listAll() {
return MultiResponse.of(new ArrayList<MkmjCarRecordCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<MkmjCarRecordCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(mkmjCarRecordService.queryById(id));
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
mkmjCarRecordService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
mkmjCarRecordService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody MkmjCarRecordUpdateCmd mkmjCarRecordUpdateCmd) {
mkmjCarRecordService.edit(mkmjCarRecordUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -5,6 +5,7 @@ import com.zcloud.primeport.api.MkmjPassageServiceI;
import com.zcloud.primeport.dto.MkmjPassageAddCmd;
import com.zcloud.primeport.dto.MkmjPassagePageQry;
import com.zcloud.primeport.dto.MkmjPassageUpdateCmd;
import com.zcloud.primeport.dto.StatisticsByAreaCmd;
import com.zcloud.primeport.dto.clientobject.MkmjPassageCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
@ -12,6 +13,7 @@ import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -57,6 +59,11 @@ public class MkmjPassageController {
public SingleResponse<MkmjPassageCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(mkmjPassageService.queryById(id));
}
@ApiOperation("是否重名")
@GetMapping("/hasName/{name}")
public SingleResponse<MkmjPassageCO> hasName(@PathVariable("name") String name) {
return SingleResponse.of(mkmjPassageService.queryByName(name));
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
@ -78,5 +85,11 @@ public class MkmjPassageController {
mkmjPassageService.edit(mkmjPassageUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("统计")
@PostMapping("/statistics")
public MultiResponse<MkmjStatisticsCO> statistics(@RequestBody StatisticsByAreaCmd qry) {
return MultiResponse.of(mkmjPassageService.statistics(qry.getIds()));
}
}

View File

@ -0,0 +1,82 @@
package com.zcloud.primeport.web;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.api.MkmjSwipeCardRecordServiceI;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordAddCmd;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordPageQry;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Api(tags = "")
@RequestMapping("/${application.gateway}/mkmjSwipeCardRecord")
@RestController
@AllArgsConstructor
public class MkmjSwipeCardRecordController {
private final MkmjSwipeCardRecordServiceI mkmjSwipeCardRecordService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<MkmjSwipeCardRecordCO> add(@Validated @RequestBody MkmjSwipeCardRecordAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return mkmjSwipeCardRecordService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<MkmjSwipeCardRecordCO> page(@RequestBody MkmjSwipeCardRecordPageQry qry) {
return mkmjSwipeCardRecordService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<MkmjSwipeCardRecordCO> listAll() {
return MultiResponse.of(new ArrayList<MkmjSwipeCardRecordCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<MkmjSwipeCardRecordCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(mkmjSwipeCardRecordService.queryById(id));
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
mkmjSwipeCardRecordService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
mkmjSwipeCardRecordService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody MkmjSwipeCardRecordUpdateCmd mkmjSwipeCardRecordUpdateCmd) {
mkmjSwipeCardRecordService.edit(mkmjSwipeCardRecordUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjCarRecordGateway;
import com.zcloud.primeport.domain.model.MkmjCarRecordE;
import com.zcloud.primeport.dto.MkmjCarRecordAddCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Component
@AllArgsConstructor
public class MkmjCarRecordAddExe {
private final MkmjCarRecordGateway mkmjCarRecordGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(MkmjCarRecordAddCmd cmd) {
MkmjCarRecordE mkmjCarRecordE = new MkmjCarRecordE();
BeanUtils.copyProperties(cmd, mkmjCarRecordE);
boolean res = false;
try {
res = mkmjCarRecordGateway.add(mkmjCarRecordE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,39 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjCarRecordGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Component
@AllArgsConstructor
public class MkmjCarRecordRemoveExe {
private final MkmjCarRecordGateway mkmjCarRecordGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = mkmjCarRecordGateway.deletedMkmjCarRecordById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = mkmjCarRecordGateway.deletedMkmjCarRecordByIds(ids);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjCarRecordGateway;
import com.zcloud.primeport.domain.model.MkmjCarRecordE;
import com.zcloud.primeport.dto.MkmjCarRecordUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Component
@AllArgsConstructor
public class MkmjCarRecordUpdateExe {
private final MkmjCarRecordGateway mkmjCarRecordGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(MkmjCarRecordUpdateCmd mkmjCarRecordUpdateCmd) {
MkmjCarRecordE mkmjCarRecordE = new MkmjCarRecordE();
BeanUtils.copyProperties(mkmjCarRecordUpdateCmd, mkmjCarRecordE);
boolean res = mkmjCarRecordGateway.update(mkmjCarRecordE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjSwipeCardRecordGateway;
import com.zcloud.primeport.domain.model.MkmjSwipeCardRecordE;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordAddCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Component
@AllArgsConstructor
public class MkmjSwipeCardRecordAddExe {
private final MkmjSwipeCardRecordGateway mkmjSwipeCardRecordGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(MkmjSwipeCardRecordAddCmd cmd) {
MkmjSwipeCardRecordE mkmjSwipeCardRecordE = new MkmjSwipeCardRecordE();
BeanUtils.copyProperties(cmd, mkmjSwipeCardRecordE);
boolean res = false;
try {
res = mkmjSwipeCardRecordGateway.add(mkmjSwipeCardRecordE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,39 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjSwipeCardRecordGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Component
@AllArgsConstructor
public class MkmjSwipeCardRecordRemoveExe {
private final MkmjSwipeCardRecordGateway mkmjSwipeCardRecordGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = mkmjSwipeCardRecordGateway.deletedMkmjSwipeCardRecordById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = mkmjSwipeCardRecordGateway.deletedMkmjSwipeCardRecordByIds(ids);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.MkmjSwipeCardRecordGateway;
import com.zcloud.primeport.domain.model.MkmjSwipeCardRecordE;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Component
@AllArgsConstructor
public class MkmjSwipeCardRecordUpdateExe {
private final MkmjSwipeCardRecordGateway mkmjSwipeCardRecordGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(MkmjSwipeCardRecordUpdateCmd mkmjSwipeCardRecordUpdateCmd) {
MkmjSwipeCardRecordE mkmjSwipeCardRecordE = new MkmjSwipeCardRecordE();
BeanUtils.copyProperties(mkmjSwipeCardRecordUpdateCmd, mkmjSwipeCardRecordE);
boolean res = mkmjSwipeCardRecordGateway.update(mkmjSwipeCardRecordE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,26 @@
package com.zcloud.primeport.command.convertor;
import com.zcloud.primeport.dto.clientobject.MkmjCarRecordCO;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Mapper(componentModel = "spring")
public interface MkmjCarRecordCoConvertor {
/**
* @param mkmjCarRecordDOs
* @return
*/
List<MkmjCarRecordCO> converDOsToCOs(List<MkmjCarRecordDO> mkmjCarRecordDOs);
MkmjCarRecordCO converDOToCO(MkmjCarRecordDO mkmjCarRecordDO);
}

View File

@ -0,0 +1,26 @@
package com.zcloud.primeport.command.convertor;
import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO;
import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Mapper(componentModel = "spring")
public interface MkmjSwipeCardRecordCoConvertor {
/**
* @param mkmjSwipeCardRecordDOs
* @return
*/
List<MkmjSwipeCardRecordCO> converDOsToCOs(List<MkmjSwipeCardRecordDO> mkmjSwipeCardRecordDOs);
MkmjSwipeCardRecordCO converDOToCO(MkmjSwipeCardRecordDO mkmjSwipeCardRecordDO);
}

View File

@ -1,17 +1,23 @@
package com.zcloud.primeport.command.query;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.primeport.command.convertor.MkmjAreaCoConvertor;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.domain.model.VideoCountE;
import com.zcloud.primeport.dto.MkmjAreaPageQry;
import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import com.zcloud.primeport.persistence.dataobject.MkmjAreaDO;
import com.zcloud.primeport.persistence.repository.MkmjAreaRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.primeport.persistence.repository.MkmjCarRecordRepository;
import com.zcloud.primeport.persistence.repository.MkmjGateVideoRepository;
import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -29,6 +35,8 @@ public class MkmjAreaQueryExe {
private final MkmjAreaRepository mkmjAreaRepository;
private final MkmjAreaCoConvertor mkmjAreaCoConvertor;
private final MkmjGateVideoRepository mkmjGateVideoRepository;
private final MkmjCarRecordRepository mkmjCarRecordRepository;
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
/**
* id
@ -61,5 +69,35 @@ public class MkmjAreaQueryExe {
});
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public List<MkmjStatisticsCO> statistics(List<String> ids) {
// 获取车辆和人员统计数据
List<MkmjStatisticsE> carCounts = mkmjCarRecordRepository.statisticsByArea(ids);
List<MkmjStatisticsE> personCounts = mkmjSwipeCardRecordRepository.statisticsByArea(ids);
// 创建一个 map 来存储 areaId 对应的统计数据
Map<String, MkmjStatisticsCO> statisticsMap = new HashMap<>();
// 处理车辆统计数据
for (MkmjStatisticsE carCount : carCounts) {
MkmjStatisticsCO co = new MkmjStatisticsCO();
co.setId(carCount.getId());
co.setCarInCount(carCount.getCarInCount());
co.setCarOutCount(carCount.getCarOutCount());
statisticsMap.put(carCount.getId(), co);
}
// 处理人员统计数据
for (MkmjStatisticsE personCount : personCounts) {
MkmjStatisticsCO co = statisticsMap.getOrDefault(personCount.getId(), new MkmjStatisticsCO());
co.setId(personCount.getId());
co.setPersonInCount(personCount.getPersonInCount());
co.setPersonOutCount(personCount.getPersonOutCount());
statisticsMap.put(personCount.getId(), co);
}
// 返回合并后的列表
return new ArrayList<>(statisticsMap.values());
}
}

View File

@ -0,0 +1,52 @@
package com.zcloud.primeport.command.query;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.primeport.command.convertor.MkmjCarRecordCoConvertor;
import com.zcloud.primeport.dto.MkmjCarRecordPageQry;
import com.zcloud.primeport.dto.clientobject.MkmjCarRecordCO;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import com.zcloud.primeport.persistence.repository.MkmjCarRecordRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Component
@AllArgsConstructor
public class MkmjCarRecordQueryExe {
private final MkmjCarRecordRepository mkmjCarRecordRepository;
private final MkmjCarRecordCoConvertor mkmjCarRecordCoConvertor;
/**
* id
*
* @param id
* @return
*/
public MkmjCarRecordCO queryById(Long id) {
return mkmjCarRecordCoConvertor.converDOToCO(mkmjCarRecordRepository.getById(id));
}
/**
*
*
* @param mkmjCarRecordPageQry
* @return
*/
public PageResponse<MkmjCarRecordCO> execute(MkmjCarRecordPageQry mkmjCarRecordPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(mkmjCarRecordPageQry);
PageResponse<MkmjCarRecordDO> pageResponse = mkmjCarRecordRepository.listPage(params);
List<MkmjCarRecordCO> examCenterCOS = mkmjCarRecordCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -1,17 +1,24 @@
package com.zcloud.primeport.command.query;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.primeport.command.convertor.MkmjPassageCoConvertor;
import com.zcloud.primeport.domain.model.GateCountE;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.dto.MkmjPassagePageQry;
import com.zcloud.primeport.dto.clientobject.MkmjPassageCO;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
import com.zcloud.primeport.persistence.repository.MkmjAreaGateRepository;
import com.zcloud.primeport.persistence.repository.MkmjCarRecordRepository;
import com.zcloud.primeport.persistence.repository.MkmjPassageRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -29,6 +36,8 @@ public class MkmjPassageQueryExe {
private final MkmjPassageRepository mkmjPassageRepository;
private final MkmjPassageCoConvertor mkmjPassageCoConvertor;
private final MkmjAreaGateRepository mkmjAreaGateRepository;
private final MkmjCarRecordRepository mkmjCarRecordRepository;
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
/**
* id
@ -40,6 +49,11 @@ public class MkmjPassageQueryExe {
return mkmjPassageCoConvertor.converDOToCO(mkmjPassageRepository.getById(id));
}
public MkmjPassageCO queryByName(String name) {
return mkmjPassageCoConvertor.converDOToCO(mkmjPassageRepository.getOne(
new LambdaQueryWrapper<MkmjPassageDO>().eq(MkmjPassageDO::getPassageName, name)));
}
/**
*
*
@ -61,5 +75,36 @@ public class MkmjPassageQueryExe {
});
return PageResponse.of(passageCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public List<MkmjStatisticsCO> statistics(List<String> ids) {
List<MkmjStatisticsE> carCounts = mkmjCarRecordRepository.statisticsByPassage(ids);
List<MkmjStatisticsE> personCounts = mkmjSwipeCardRecordRepository.statisticsByPassage(ids);
// 创建一个 map 来存储 areaId 对应的统计数据
Map<String, MkmjStatisticsCO> statisticsMap = new HashMap<>();
// 处理车辆统计数据
for (MkmjStatisticsE carCount : carCounts) {
MkmjStatisticsCO co = new MkmjStatisticsCO();
co.setId(carCount.getId());
co.setCarInCount(carCount.getCarInCount());
co.setCarOutCount(carCount.getCarOutCount());
statisticsMap.put(carCount.getId(), co);
}
// 处理人员统计数据
for (MkmjStatisticsE personCount : personCounts) {
MkmjStatisticsCO co = statisticsMap.getOrDefault(personCount.getId(), new MkmjStatisticsCO());
co.setId(personCount.getId());
co.setPersonInCount(personCount.getPersonInCount());
co.setPersonOutCount(personCount.getPersonOutCount());
statisticsMap.put(personCount.getId(), co);
}
// 返回合并后的列表
return new ArrayList<>(statisticsMap.values());
}
}

View File

@ -0,0 +1,52 @@
package com.zcloud.primeport.command.query;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
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 lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Component
@AllArgsConstructor
public class MkmjSwipeCardRecordQueryExe {
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
private final MkmjSwipeCardRecordCoConvertor mkmjSwipeCardRecordCoConvertor;
/**
* id
*
* @param id
* @return
*/
public MkmjSwipeCardRecordCO queryById(Long id) {
return mkmjSwipeCardRecordCoConvertor.converDOToCO(mkmjSwipeCardRecordRepository.getById(id));
}
/**
*
*
* @param mkmjSwipeCardRecordPageQry
* @return
*/
public PageResponse<MkmjSwipeCardRecordCO> execute(MkmjSwipeCardRecordPageQry mkmjSwipeCardRecordPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(mkmjSwipeCardRecordPageQry);
PageResponse<MkmjSwipeCardRecordDO> pageResponse = mkmjSwipeCardRecordRepository.listPage(params);
List<MkmjSwipeCardRecordCO> examCenterCOS = mkmjSwipeCardRecordCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -12,9 +12,12 @@ import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* web-app
*
@ -61,5 +64,10 @@ public class MkmjAreaServiceImpl implements MkmjAreaServiceI {
public void removeBatch(Long[] ids) {
mkmjAreaRemoveExe.execute(ids);
}
@Override
public List<MkmjStatisticsCO> statistics(List<String> ids) {
return mkmjAreaQueryExe.statistics(ids);
}
}

View File

@ -0,0 +1,64 @@
package com.zcloud.primeport.service;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.api.MkmjCarRecordServiceI;
import com.zcloud.primeport.command.MkmjCarRecordAddExe;
import com.zcloud.primeport.command.MkmjCarRecordRemoveExe;
import com.zcloud.primeport.command.MkmjCarRecordUpdateExe;
import com.zcloud.primeport.command.query.MkmjCarRecordQueryExe;
import com.zcloud.primeport.dto.MkmjCarRecordAddCmd;
import com.zcloud.primeport.dto.MkmjCarRecordPageQry;
import com.zcloud.primeport.dto.MkmjCarRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjCarRecordCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Service
@AllArgsConstructor
public class MkmjCarRecordServiceImpl implements MkmjCarRecordServiceI {
private final MkmjCarRecordAddExe mkmjCarRecordAddExe;
private final MkmjCarRecordUpdateExe mkmjCarRecordUpdateExe;
private final MkmjCarRecordRemoveExe mkmjCarRecordRemoveExe;
private final MkmjCarRecordQueryExe mkmjCarRecordQueryExe;
@Override
public MkmjCarRecordCO queryById(Long id) {
return mkmjCarRecordQueryExe.queryById(id);
}
@Override
public PageResponse<MkmjCarRecordCO> listPage(MkmjCarRecordPageQry qry) {
return mkmjCarRecordQueryExe.execute(qry);
}
@Override
public SingleResponse add(MkmjCarRecordAddCmd cmd) {
mkmjCarRecordAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(MkmjCarRecordUpdateCmd mkmjCarRecordUpdateCmd) {
mkmjCarRecordUpdateExe.execute(mkmjCarRecordUpdateCmd);
}
@Override
public void remove(Long id) {
mkmjCarRecordRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
mkmjCarRecordRemoveExe.execute(ids);
}
}

View File

@ -12,9 +12,12 @@ import com.zcloud.primeport.dto.clientobject.MkmjPassageCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* web-app
*
@ -33,7 +36,10 @@ public class MkmjPassageServiceImpl implements MkmjPassageServiceI {
public MkmjPassageCO queryById(Long id) {
return mkmjPassageQueryExe.queryById(id);
}
@Override
public MkmjPassageCO queryByName(String name){
return mkmjPassageQueryExe.queryByName(name);
}
@Override
public PageResponse<MkmjPassageCO> listPage(MkmjPassagePageQry qry) {
@ -61,5 +67,10 @@ public class MkmjPassageServiceImpl implements MkmjPassageServiceI {
public void removeBatch(Long[] ids) {
mkmjPassageRemoveExe.execute(ids);
}
@Override
public List<MkmjStatisticsCO> statistics(List<String> ids){
return mkmjPassageQueryExe.statistics(ids);
}
}

View File

@ -0,0 +1,64 @@
package com.zcloud.primeport.service;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.api.MkmjSwipeCardRecordServiceI;
import com.zcloud.primeport.command.MkmjSwipeCardRecordAddExe;
import com.zcloud.primeport.command.MkmjSwipeCardRecordRemoveExe;
import com.zcloud.primeport.command.MkmjSwipeCardRecordUpdateExe;
import com.zcloud.primeport.command.query.MkmjSwipeCardRecordQueryExe;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordAddCmd;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordPageQry;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Service
@AllArgsConstructor
public class MkmjSwipeCardRecordServiceImpl implements MkmjSwipeCardRecordServiceI {
private final MkmjSwipeCardRecordAddExe mkmjSwipeCardRecordAddExe;
private final MkmjSwipeCardRecordUpdateExe mkmjSwipeCardRecordUpdateExe;
private final MkmjSwipeCardRecordRemoveExe mkmjSwipeCardRecordRemoveExe;
private final MkmjSwipeCardRecordQueryExe mkmjSwipeCardRecordQueryExe;
@Override
public MkmjSwipeCardRecordCO queryById(Long id) {
return mkmjSwipeCardRecordQueryExe.queryById(id);
}
@Override
public PageResponse<MkmjSwipeCardRecordCO> listPage(MkmjSwipeCardRecordPageQry qry) {
return mkmjSwipeCardRecordQueryExe.execute(qry);
}
@Override
public SingleResponse add(MkmjSwipeCardRecordAddCmd cmd) {
mkmjSwipeCardRecordAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(MkmjSwipeCardRecordUpdateCmd mkmjSwipeCardRecordUpdateCmd) {
mkmjSwipeCardRecordUpdateExe.execute(mkmjSwipeCardRecordUpdateCmd);
}
@Override
public void remove(Long id) {
mkmjSwipeCardRecordRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
mkmjSwipeCardRecordRemoveExe.execute(ids);
}
}

View File

@ -7,6 +7,9 @@ import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import java.util.List;
/**
* web-client
@ -26,5 +29,7 @@ public interface MkmjAreaServiceI {
void remove(Long id);
void removeBatch(Long[] ids);
List<MkmjStatisticsCO> statistics(List<String> ids);
}

View File

@ -0,0 +1,29 @@
package com.zcloud.primeport.api;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.MkmjCarRecordAddCmd;
import com.zcloud.primeport.dto.MkmjCarRecordPageQry;
import com.zcloud.primeport.dto.MkmjCarRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjCarRecordCO;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
public interface MkmjCarRecordServiceI {
MkmjCarRecordCO queryById(Long id);
PageResponse<MkmjCarRecordCO> listPage(MkmjCarRecordPageQry qry);
SingleResponse<MkmjCarRecordCO> add(MkmjCarRecordAddCmd cmd);
void edit(MkmjCarRecordUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -7,6 +7,9 @@ import com.zcloud.primeport.dto.clientobject.MkmjPassageCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
import java.util.List;
/**
* web-client
@ -16,6 +19,7 @@ import com.alibaba.cola.dto.SingleResponse;
*/
public interface MkmjPassageServiceI {
MkmjPassageCO queryById(Long id);
MkmjPassageCO queryByName(String name);
PageResponse<MkmjPassageCO> listPage(MkmjPassagePageQry qry);
@ -26,5 +30,9 @@ public interface MkmjPassageServiceI {
void remove(Long id);
void removeBatch(Long[] ids);
List<MkmjStatisticsCO> statistics(List<String> ids);
}

View File

@ -0,0 +1,29 @@
package com.zcloud.primeport.api;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordAddCmd;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordPageQry;
import com.zcloud.primeport.dto.MkmjSwipeCardRecordUpdateCmd;
import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
public interface MkmjSwipeCardRecordServiceI {
MkmjSwipeCardRecordCO queryById(Long id);
PageResponse<MkmjSwipeCardRecordCO> listPage(MkmjSwipeCardRecordPageQry qry);
SingleResponse<MkmjSwipeCardRecordCO> add(MkmjSwipeCardRecordAddCmd cmd);
void edit(MkmjSwipeCardRecordUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -0,0 +1,124 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.sql.Date;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:08
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkmjCarRecordAddCmd extends Command {
@ApiModelProperty(value = "车辆id", name = "vehicleRecordId", required = true)
@NotEmpty(message = "车辆id不能为空")
private String vehicleRecordId;
@ApiModelProperty(value = "车辆牌照号码", name = "vehiclePlateNumber", required = true)
@NotEmpty(message = "车辆牌照号码不能为空")
private String vehiclePlateNumber;
@ApiModelProperty(value = "车辆行驶证号码", name = "vehicleRegistrationNumber", required = true)
@NotEmpty(message = "车辆行驶证号码不能为空")
private String vehicleRegistrationNumber;
@ApiModelProperty(value = "车辆类型名称", name = "vehicleCategoryName", required = true)
@NotEmpty(message = "车辆类型名称不能为空")
private String vehicleCategoryName;
@ApiModelProperty(value = "车辆联系人姓名", name = "vehicleContactName", required = true)
@NotEmpty(message = "车辆联系人姓名不能为空")
private String vehicleContactName;
@ApiModelProperty(value = "车辆联系人电话", name = "vehicleContactPhoneNumber", required = true)
@NotEmpty(message = "车辆联系人电话不能为空")
private String vehicleContactPhoneNumber;
@ApiModelProperty(value = "车辆备案信息录入单位", name = "vehicleFilingInfoRecordingOrg", required = true)
@NotEmpty(message = "车辆备案信息录入单位不能为空")
private String vehicleFilingInfoRecordingOrg;
@ApiModelProperty(value = "车辆牌照颜色名称", name = "vehiclePlateColor", required = true)
@NotEmpty(message = "车辆牌照颜色名称不能为空")
private String vehiclePlateColor;
@ApiModelProperty(value = "车辆入港闸口", name = "vehicleArrivalBarrier", required = true)
@NotEmpty(message = "车辆入港闸口不能为空")
private String vehicleArrivalBarrier;
@ApiModelProperty(value = "${column.comment}", name = "regexArrivalBarrier", required = true)
@NotEmpty(message = "${column.comment}不能为空")
private String regexArrivalBarrier;
@ApiModelProperty(value = "车辆入港时间", name = "vehicleArrivalTime", required = true)
@NotEmpty(message = "车辆入港时间不能为空")
private String vehicleArrivalTime;
@ApiModelProperty(value = "车辆离港闸口", name = "vehicleDepartureBarrier", required = true)
@NotEmpty(message = "车辆离港闸口不能为空")
private String vehicleDepartureBarrier;
@ApiModelProperty(value = "${column.comment}", name = "regexDepartureBarrier", required = true)
@NotEmpty(message = "${column.comment}不能为空")
private String regexDepartureBarrier;
@ApiModelProperty(value = "车辆离港时间", name = "vehicleDepartureTime", required = true)
@NotEmpty(message = "车辆离港时间不能为空")
private String vehicleDepartureTime;
@ApiModelProperty(value = "车辆备案方式", name = "vehicleFilingMethod", required = true)
@NotEmpty(message = "车辆备案方式不能为空")
private String vehicleFilingMethod;
@ApiModelProperty(value = "车辆在港状态", name = "vehicleArrivalStatus", required = true)
@NotEmpty(message = "车辆在港状态不能为空")
private String vehicleArrivalStatus;
@ApiModelProperty(value = "数据来源", name = "edwDataSource", required = true)
@NotEmpty(message = "数据来源不能为空")
private String edwDataSource;
@ApiModelProperty(value = "数据创建日期", name = "edwCreateDate", required = true)
@NotEmpty(message = "数据创建日期不能为空")
private String edwCreateDate;
@ApiModelProperty(value = "数据更新日期", name = "edwLastUpdate", required = true)
@NotEmpty(message = "数据更新日期不能为空")
private String edwLastUpdate;
@ApiModelProperty(value = "数据有效标识", name = "edwValidFlag", required = true)
@NotEmpty(message = "数据有效标识不能为空")
private String edwValidFlag;
@ApiModelProperty(value = "分区列", name = "dataVersion", required = true)
@NotNull(message = "分区列不能为空")
private Long dataVersion;
@ApiModelProperty(value = "同步时间", name = "accLastUpdateDate", required = true)
@NotNull(message = "同步时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date accLastUpdateDate;
@ApiModelProperty(value = "自增长id主键", name = "idSequence", required = true)
@NotNull(message = "自增长id主键不能为空")
private Long idSequence;
@ApiModelProperty(value = "同步时间", name = "synctime", required = true)
@NotEmpty(message = "同步时间不能为空")
private String synctime;
}

View File

@ -0,0 +1,28 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Data
public class MkmjCarRecordPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeVehicleRecordId;
}

View File

@ -0,0 +1,103 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.sql.Date;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkmjCarRecordUpdateCmd extends Command {
@ApiModelProperty(value = "主键id", name = "id", required = true)
@NotNull(message = "主键id不能为空")
private Long id;
@ApiModelProperty(value = "车辆id", name = "vehicleRecordId", required = true)
@NotEmpty(message = "车辆id不能为空")
private String vehicleRecordId;
@ApiModelProperty(value = "车辆牌照号码", name = "vehiclePlateNumber", required = true)
@NotEmpty(message = "车辆牌照号码不能为空")
private String vehiclePlateNumber;
@ApiModelProperty(value = "车辆行驶证号码", name = "vehicleRegistrationNumber", required = true)
@NotEmpty(message = "车辆行驶证号码不能为空")
private String vehicleRegistrationNumber;
@ApiModelProperty(value = "车辆类型名称", name = "vehicleCategoryName", required = true)
@NotEmpty(message = "车辆类型名称不能为空")
private String vehicleCategoryName;
@ApiModelProperty(value = "车辆联系人姓名", name = "vehicleContactName", required = true)
@NotEmpty(message = "车辆联系人姓名不能为空")
private String vehicleContactName;
@ApiModelProperty(value = "车辆联系人电话", name = "vehicleContactPhoneNumber", required = true)
@NotEmpty(message = "车辆联系人电话不能为空")
private String vehicleContactPhoneNumber;
@ApiModelProperty(value = "车辆备案信息录入单位", name = "vehicleFilingInfoRecordingOrg", required = true)
@NotEmpty(message = "车辆备案信息录入单位不能为空")
private String vehicleFilingInfoRecordingOrg;
@ApiModelProperty(value = "车辆牌照颜色名称", name = "vehiclePlateColor", required = true)
@NotEmpty(message = "车辆牌照颜色名称不能为空")
private String vehiclePlateColor;
@ApiModelProperty(value = "车辆入港闸口", name = "vehicleArrivalBarrier", required = true)
@NotEmpty(message = "车辆入港闸口不能为空")
private String vehicleArrivalBarrier;
@ApiModelProperty(value = "${column.comment}", name = "regexArrivalBarrier", required = true)
@NotEmpty(message = "${column.comment}不能为空")
private String regexArrivalBarrier;
@ApiModelProperty(value = "车辆入港时间", name = "vehicleArrivalTime", required = true)
@NotEmpty(message = "车辆入港时间不能为空")
private String vehicleArrivalTime;
@ApiModelProperty(value = "车辆离港闸口", name = "vehicleDepartureBarrier", required = true)
@NotEmpty(message = "车辆离港闸口不能为空")
private String vehicleDepartureBarrier;
@ApiModelProperty(value = "${column.comment}", name = "regexDepartureBarrier", required = true)
@NotEmpty(message = "${column.comment}不能为空")
private String regexDepartureBarrier;
@ApiModelProperty(value = "车辆离港时间", name = "vehicleDepartureTime", required = true)
@NotEmpty(message = "车辆离港时间不能为空")
private String vehicleDepartureTime;
@ApiModelProperty(value = "车辆备案方式", name = "vehicleFilingMethod", required = true)
@NotEmpty(message = "车辆备案方式不能为空")
private String vehicleFilingMethod;
@ApiModelProperty(value = "车辆在港状态", name = "vehicleArrivalStatus", required = true)
@NotEmpty(message = "车辆在港状态不能为空")
private String vehicleArrivalStatus;
@ApiModelProperty(value = "数据来源", name = "edwDataSource", required = true)
@NotEmpty(message = "数据来源不能为空")
private String edwDataSource;
@ApiModelProperty(value = "数据创建日期", name = "edwCreateDate", required = true)
@NotEmpty(message = "数据创建日期不能为空")
private String edwCreateDate;
@ApiModelProperty(value = "数据更新日期", name = "edwLastUpdate", required = true)
@NotEmpty(message = "数据更新日期不能为空")
private String edwLastUpdate;
@ApiModelProperty(value = "数据有效标识", name = "edwValidFlag", required = true)
@NotEmpty(message = "数据有效标识不能为空")
private String edwValidFlag;
@ApiModelProperty(value = "分区列", name = "dataVersion", required = true)
@NotNull(message = "分区列不能为空")
private Long dataVersion;
@ApiModelProperty(value = "同步时间", name = "accLastUpdateDate", required = true)
@NotNull(message = "同步时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date accLastUpdateDate;
@ApiModelProperty(value = "自增长id主键", name = "idSequence", required = true)
@NotNull(message = "自增长id主键不能为空")
private Long idSequence;
@ApiModelProperty(value = "同步时间", name = "synctime", required = true)
@NotEmpty(message = "同步时间不能为空")
private String synctime;
}

View File

@ -0,0 +1,205 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkmjSwipeCardRecordAddCmd extends Command {
@ApiModelProperty(value = "节点编码", name = "nodecode", required = true)
@NotEmpty(message = "节点编码不能为空")
private String nodecode;
@ApiModelProperty(value = "报警编号", name = "alarmcode", required = true)
@NotEmpty(message = "报警编号不能为空")
private String alarmcode;
@ApiModelProperty(value = "报警图片路径", name = "alarmpicture", required = true)
@NotEmpty(message = "报警图片路径不能为空")
private String alarmpicture;
@ApiModelProperty(value = "节点类型", name = "nodetype", required = true)
@NotEmpty(message = "节点类型不能为空")
private String nodetype;
@ApiModelProperty(value = "报警时间10位时间戳", name = "alarmdate", required = true)
@NotNull(message = "报警时间10位时间戳不能为空")
private Integer alarmdate;
@ApiModelProperty(value = "报警等级 1严重2一般3轻微", name = "alarmgrade", required = true)
@NotNull(message = "报警等级 1严重2一般3轻微不能为空")
private Integer alarmgrade;
@ApiModelProperty(value = "单元类型", name = "unittype", required = true)
@NotNull(message = "单元类型不能为空")
private Integer unittype;
@ApiModelProperty(value = "报警类型", name = "alarmtype", required = true)
@NotNull(message = "报警类型不能为空")
private Integer alarmtype;
@ApiModelProperty(value = "通道序号", name = "channelseq", required = true)
@NotNull(message = "通道序号不能为空")
private Integer channelseq;
@ApiModelProperty(value = "通道名称", name = "channelname", required = true)
@NotEmpty(message = "通道名称不能为空")
private String channelname;
@ApiModelProperty(value = "报警状态 1报警产生2报警消失", name = "alarmstat", required = true)
@NotNull(message = "报警状态 1报警产生2报警消失不能为空")
private Integer alarmstat;
@ApiModelProperty(value = "部门名称", name = "deptname", required = true)
@NotEmpty(message = "部门名称不能为空")
private String deptname;
@ApiModelProperty(value = "通道编号", name = "acschannelcode", required = true)
@NotEmpty(message = "通道编号不能为空")
private String acschannelcode;
@ApiModelProperty(value = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知", name = "maskstate", required = true)
@NotNull(message = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知不能为空")
private Integer maskstate;
@ApiModelProperty(value = "进出门类型: 详见 读卡器业务类型字典", name = "enterorexit", required = true)
@NotEmpty(message = "进出门类型: 详见 读卡器业务类型字典不能为空")
private String enterorexit;
@ApiModelProperty(value = "开门类型字符串", name = "opentypestr", required = true)
@NotEmpty(message = "开门类型字符串不能为空")
private String opentypestr;
@ApiModelProperty(value = "刷卡时间格式yyyy-MM:dd HH:mm:ss", name = "swingtime", required = true)
@NotEmpty(message = "刷卡时间格式yyyy-MM:dd HH:mm:ss不能为空")
private String swingtime;
@ApiModelProperty(value = "设备名称", name = "devicename", required = true)
@NotEmpty(message = "设备名称不能为空")
private String devicename;
@ApiModelProperty(value = "人员编号", name = "personcode", required = true)
@NotEmpty(message = "人员编号不能为空")
private String personcode;
@ApiModelProperty(value = "开门类型, 详见开门类型 字典", name = "opentype", required = true)
@NotEmpty(message = "开门类型, 详见开门类型 字典不能为空")
private String opentype;
@ApiModelProperty(value = "组织编码", name = "orgcode", required = true)
@NotEmpty(message = "组织编码不能为空")
private String orgcode;
@ApiModelProperty(value = "证件类型", name = "papertype", required = true)
@NotEmpty(message = "证件类型不能为空")
private String papertype;
@ApiModelProperty(value = "证件号", name = "papernumber", required = true)
@NotEmpty(message = "证件号不能为空")
private String papernumber;
@ApiModelProperty(value = "错误详情", name = "errordetail", required = true)
@NotEmpty(message = "错误详情不能为空")
private String errordetail;
@ApiModelProperty(value = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码", name = "openfailedcod", required = true)
@NotEmpty(message = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码不能为空")
private String openfailedcod;
@ApiModelProperty(value = "固定值evo-accesscontrol", name = "from", required = true)
@NotEmpty(message = "固定值evo-accesscontrol不能为空")
private String from;
@ApiModelProperty(value = "extendId标识", name = "extendid", required = true)
@NotNull(message = "extendId标识不能为空")
private Long extendid;
@ApiModelProperty(value = "开始时间, 13位时间戳", name = "begintime", required = true)
@NotNull(message = "开始时间, 13位时间戳不能为空")
private Long begintime;
@ApiModelProperty(value = "通道名称", name = "acschannelname", required = true)
@NotEmpty(message = "通道名称不能为空")
private String acschannelname;
@ApiModelProperty(value = "预留字段暂未使用默认值为0", name = "cardstatus", required = true)
@NotNull(message = "预留字段暂未使用默认值为0不能为空")
private Integer cardstatus;
@ApiModelProperty(value = "组织名称", name = "orgname", required = true)
@NotEmpty(message = "组织名称不能为空")
private String orgname;
@ApiModelProperty(value = "性别 1 男2 女, 0 未知", name = "sex", required = true)
@NotNull(message = "性别 1 男2 女, 0 未知不能为空")
private Integer sex;
@ApiModelProperty(value = "人员部门id", name = "deptid", required = true)
@NotNull(message = "人员部门id不能为空")
private Integer deptid;
@ApiModelProperty(value = "卡类型", name = "cardtype", required = true)
@NotNull(message = "卡类型不能为空")
private Integer cardtype;
@ApiModelProperty(value = "设备编号", name = "devicecode", required = true)
@NotEmpty(message = "设备编号不能为空")
private String devicecode;
@ApiModelProperty(value = "人员姓名", name = "personname", required = true)
@NotEmpty(message = "人员姓名不能为空")
private String personname;
@ApiModelProperty(value = "刷卡人在平台上的图片,相对路径", name = "personimg", required = true)
@NotEmpty(message = "刷卡人在平台上的图片,相对路径不能为空")
private String personimg;
@ApiModelProperty(value = "开门结果 0 失败 1 成功", name = "openresult", required = true)
@NotNull(message = "开门结果 0 失败 1 成功不能为空")
private Integer openresult;
@ApiModelProperty(value = "人员id", name = "personid", required = true)
@NotNull(message = "人员id不能为空")
private Integer personid;
@ApiModelProperty(value = "抓拍图,相对路径", name = "recordimage1", required = true)
@NotEmpty(message = "抓拍图,相对路径不能为空")
private String recordimage1;
@ApiModelProperty(value = "卡介质 0 IC 1 有源RFID 2 CPU", name = "category", required = true)
@NotEmpty(message = "卡介质 0 IC 1 有源RFID 2 CPU不能为空")
private String category;
@ApiModelProperty(value = "卡号", name = "cardnumber", required = true)
@NotEmpty(message = "卡号不能为空")
private String cardnumber;
@ApiModelProperty(value = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物", name = "rfidtype", required = true)
@NotNull(message = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物不能为空")
private Integer rfidtype;
@ApiModelProperty(value = "年龄", name = "age", required = true)
@NotNull(message = "年龄不能为空")
private Integer age;
@ApiModelProperty(value = "0-非访客1-访客", name = "vrecordflag", required = true)
@NotNull(message = "0-非访客1-访客不能为空")
private Integer vrecordflag;
}

View File

@ -0,0 +1,28 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Data
public class MkmjSwipeCardRecordPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeNodecode;
}

View File

@ -0,0 +1,163 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkmjSwipeCardRecordUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "节点编码", name = "nodecode", required = true)
@NotEmpty(message = "节点编码不能为空")
private String nodecode;
@ApiModelProperty(value = "报警编号", name = "alarmcode", required = true)
@NotEmpty(message = "报警编号不能为空")
private String alarmcode;
@ApiModelProperty(value = "报警图片路径", name = "alarmpicture", required = true)
@NotEmpty(message = "报警图片路径不能为空")
private String alarmpicture;
@ApiModelProperty(value = "节点类型", name = "nodetype", required = true)
@NotEmpty(message = "节点类型不能为空")
private String nodetype;
@ApiModelProperty(value = "报警时间10位时间戳", name = "alarmdate", required = true)
@NotNull(message = "报警时间10位时间戳不能为空")
private Integer alarmdate;
@ApiModelProperty(value = "报警等级 1严重2一般3轻微", name = "alarmgrade", required = true)
@NotNull(message = "报警等级 1严重2一般3轻微不能为空")
private Integer alarmgrade;
@ApiModelProperty(value = "单元类型", name = "unittype", required = true)
@NotNull(message = "单元类型不能为空")
private Integer unittype;
@ApiModelProperty(value = "报警类型", name = "alarmtype", required = true)
@NotNull(message = "报警类型不能为空")
private Integer alarmtype;
@ApiModelProperty(value = "通道序号", name = "channelseq", required = true)
@NotNull(message = "通道序号不能为空")
private Integer channelseq;
@ApiModelProperty(value = "通道名称", name = "channelname", required = true)
@NotEmpty(message = "通道名称不能为空")
private String channelname;
@ApiModelProperty(value = "报警状态 1报警产生2报警消失", name = "alarmstat", required = true)
@NotNull(message = "报警状态 1报警产生2报警消失不能为空")
private Integer alarmstat;
@ApiModelProperty(value = "部门名称", name = "deptname", required = true)
@NotEmpty(message = "部门名称不能为空")
private String deptname;
@ApiModelProperty(value = "通道编号", name = "acschannelcode", required = true)
@NotEmpty(message = "通道编号不能为空")
private String acschannelcode;
@ApiModelProperty(value = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知", name = "maskstate", required = true)
@NotNull(message = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知不能为空")
private Integer maskstate;
@ApiModelProperty(value = "进出门类型: 详见 读卡器业务类型字典", name = "enterorexit", required = true)
@NotEmpty(message = "进出门类型: 详见 读卡器业务类型字典不能为空")
private String enterorexit;
@ApiModelProperty(value = "开门类型字符串", name = "opentypestr", required = true)
@NotEmpty(message = "开门类型字符串不能为空")
private String opentypestr;
@ApiModelProperty(value = "刷卡时间格式yyyy-MM:dd HH:mm:ss", name = "swingtime", required = true)
@NotEmpty(message = "刷卡时间格式yyyy-MM:dd HH:mm:ss不能为空")
private String swingtime;
@ApiModelProperty(value = "设备名称", name = "devicename", required = true)
@NotEmpty(message = "设备名称不能为空")
private String devicename;
@ApiModelProperty(value = "人员编号", name = "personcode", required = true)
@NotEmpty(message = "人员编号不能为空")
private String personcode;
@ApiModelProperty(value = "开门类型, 详见开门类型 字典", name = "opentype", required = true)
@NotEmpty(message = "开门类型, 详见开门类型 字典不能为空")
private String opentype;
@ApiModelProperty(value = "组织编码", name = "orgcode", required = true)
@NotEmpty(message = "组织编码不能为空")
private String orgcode;
@ApiModelProperty(value = "证件类型", name = "papertype", required = true)
@NotEmpty(message = "证件类型不能为空")
private String papertype;
@ApiModelProperty(value = "证件号", name = "papernumber", required = true)
@NotEmpty(message = "证件号不能为空")
private String papernumber;
@ApiModelProperty(value = "错误详情", name = "errordetail", required = true)
@NotEmpty(message = "错误详情不能为空")
private String errordetail;
@ApiModelProperty(value = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码", name = "openfailedcod", required = true)
@NotEmpty(message = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码不能为空")
private String openfailedcod;
@ApiModelProperty(value = "固定值evo-accesscontrol", name = "from", required = true)
@NotEmpty(message = "固定值evo-accesscontrol不能为空")
private String from;
@ApiModelProperty(value = "extendId标识", name = "extendid", required = true)
@NotNull(message = "extendId标识不能为空")
private Long extendid;
@ApiModelProperty(value = "开始时间, 13位时间戳", name = "begintime", required = true)
@NotNull(message = "开始时间, 13位时间戳不能为空")
private Long begintime;
@ApiModelProperty(value = "通道名称", name = "acschannelname", required = true)
@NotEmpty(message = "通道名称不能为空")
private String acschannelname;
@ApiModelProperty(value = "预留字段暂未使用默认值为0", name = "cardstatus", required = true)
@NotNull(message = "预留字段暂未使用默认值为0不能为空")
private Integer cardstatus;
@ApiModelProperty(value = "组织名称", name = "orgname", required = true)
@NotEmpty(message = "组织名称不能为空")
private String orgname;
@ApiModelProperty(value = "性别 1 男2 女, 0 未知", name = "sex", required = true)
@NotNull(message = "性别 1 男2 女, 0 未知不能为空")
private Integer sex;
@ApiModelProperty(value = "人员部门id", name = "deptid", required = true)
@NotNull(message = "人员部门id不能为空")
private Integer deptid;
@ApiModelProperty(value = "卡类型", name = "cardtype", required = true)
@NotNull(message = "卡类型不能为空")
private Integer cardtype;
@ApiModelProperty(value = "设备编号", name = "devicecode", required = true)
@NotEmpty(message = "设备编号不能为空")
private String devicecode;
@ApiModelProperty(value = "人员姓名", name = "personname", required = true)
@NotEmpty(message = "人员姓名不能为空")
private String personname;
@ApiModelProperty(value = "刷卡人在平台上的图片,相对路径", name = "personimg", required = true)
@NotEmpty(message = "刷卡人在平台上的图片,相对路径不能为空")
private String personimg;
@ApiModelProperty(value = "开门结果 0 失败 1 成功", name = "openresult", required = true)
@NotNull(message = "开门结果 0 失败 1 成功不能为空")
private Integer openresult;
@ApiModelProperty(value = "人员id", name = "personid", required = true)
@NotNull(message = "人员id不能为空")
private Integer personid;
@ApiModelProperty(value = "抓拍图,相对路径", name = "recordimage1", required = true)
@NotEmpty(message = "抓拍图,相对路径不能为空")
private String recordimage1;
@ApiModelProperty(value = "卡介质 0 IC 1 有源RFID 2 CPU", name = "category", required = true)
@NotEmpty(message = "卡介质 0 IC 1 有源RFID 2 CPU不能为空")
private String category;
@ApiModelProperty(value = "卡号", name = "cardnumber", required = true)
@NotEmpty(message = "卡号不能为空")
private String cardnumber;
@ApiModelProperty(value = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物", name = "rfidtype", required = true)
@NotNull(message = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物不能为空")
private Integer rfidtype;
@ApiModelProperty(value = "年龄", name = "age", required = true)
@NotNull(message = "年龄不能为空")
private Integer age;
@ApiModelProperty(value = "0-非访客1-访客", name = "vrecordflag", required = true)
@NotNull(message = "0-非访客1-访客不能为空")
private Integer vrecordflag;
}

View File

@ -7,6 +7,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author fangjiakai
* @date 2025/11/17 9:41
@ -16,5 +18,5 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
public class StatisticsByAreaCmd extends Command {
String[] ids;
List<String> ids;
}

View File

@ -0,0 +1,126 @@
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.sql.Date;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Data
public class MkmjCarRecordCO extends ClientObject {
//主键id
@ApiModelProperty(value = "主键id")
private Long id;
//车辆id
@ApiModelProperty(value = "车辆id")
private String vehicleRecordId;
//车辆牌照号码
@ApiModelProperty(value = "车辆牌照号码")
private String vehiclePlateNumber;
//车辆行驶证号码
@ApiModelProperty(value = "车辆行驶证号码")
private String vehicleRegistrationNumber;
//车辆类型名称
@ApiModelProperty(value = "车辆类型名称")
private String vehicleCategoryName;
//车辆联系人姓名
@ApiModelProperty(value = "车辆联系人姓名")
private String vehicleContactName;
//车辆联系人电话
@ApiModelProperty(value = "车辆联系人电话")
private String vehicleContactPhoneNumber;
//车辆备案信息录入单位
@ApiModelProperty(value = "车辆备案信息录入单位")
private String vehicleFilingInfoRecordingOrg;
//车辆牌照颜色名称
@ApiModelProperty(value = "车辆牌照颜色名称")
private String vehiclePlateColor;
//车辆入港闸口
@ApiModelProperty(value = "车辆入港闸口")
private String vehicleArrivalBarrier;
private String regexArrivalBarrier;
//车辆入港时间
@ApiModelProperty(value = "车辆入港时间")
private String vehicleArrivalTime;
//车辆离港闸口
@ApiModelProperty(value = "车辆离港闸口")
private String vehicleDepartureBarrier;
private String regexDepartureBarrier;
//车辆离港时间
@ApiModelProperty(value = "车辆离港时间")
private String vehicleDepartureTime;
//车辆备案方式
@ApiModelProperty(value = "车辆备案方式")
private String vehicleFilingMethod;
//车辆在港状态
@ApiModelProperty(value = "车辆在港状态")
private String vehicleArrivalStatus;
//数据来源
@ApiModelProperty(value = "数据来源")
private String edwDataSource;
//数据创建日期
@ApiModelProperty(value = "数据创建日期")
private String edwCreateDate;
//数据更新日期
@ApiModelProperty(value = "数据更新日期")
private String edwLastUpdate;
//数据有效标识
@ApiModelProperty(value = "数据有效标识")
private String edwValidFlag;
//分区列
@ApiModelProperty(value = "分区列")
private Long dataVersion;
//同步时间
@ApiModelProperty(value = "同步时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date accLastUpdateDate;
//自增长id主键
@ApiModelProperty(value = "自增长id主键")
private Long idSequence;
//同步时间
@ApiModelProperty(value = "同步时间")
private String synctime;
//删除标识true false
@ApiModelProperty(value = "删除标识true false")
private String deleteEnum;
//备注
@ApiModelProperty(value = "备注")
private String remarks;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//更新人姓名
@ApiModelProperty(value = "更新人姓名")
private String updateName;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//单位id
@ApiModelProperty(value = "单位id")
private Long orgId;
//版本
@ApiModelProperty(value = "版本")
private String version;
//创建时间
@ApiModelProperty(value = "创建时间")
private String createTime;
//修改时间
@ApiModelProperty(value = "修改时间")
private String updateTime;
//创建人id
@ApiModelProperty(value = "创建人id")
private Long createId;
//修改人id
@ApiModelProperty(value = "修改人id")
private Long updateId;
private String env;
}

View File

@ -0,0 +1,189 @@
package com.zcloud.primeport.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Data
public class MkmjSwipeCardRecordCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//节点编码
@ApiModelProperty(value = "节点编码")
private String nodecode;
//报警编号
@ApiModelProperty(value = "报警编号")
private String alarmcode;
//报警图片路径
@ApiModelProperty(value = "报警图片路径")
private String alarmpicture;
//节点类型
@ApiModelProperty(value = "节点类型")
private String nodetype;
//报警时间10位时间戳
@ApiModelProperty(value = "报警时间10位时间戳")
private Integer alarmdate;
//报警等级 1严重2一般3轻微
@ApiModelProperty(value = "报警等级 1严重2一般3轻微")
private Integer alarmgrade;
//单元类型
@ApiModelProperty(value = "单元类型")
private Integer unittype;
//报警类型
@ApiModelProperty(value = "报警类型")
private Integer alarmtype;
//通道序号
@ApiModelProperty(value = "通道序号")
private Integer channelseq;
//通道名称
@ApiModelProperty(value = "通道名称")
private String channelname;
//报警状态 1报警产生2报警消失
@ApiModelProperty(value = "报警状态 1报警产生2报警消失")
private Integer alarmstat;
//部门名称
@ApiModelProperty(value = "部门名称")
private String deptname;
//通道编号
@ApiModelProperty(value = "通道编号")
private String acschannelcode;
//口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知
@ApiModelProperty(value = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知")
private Integer maskstate;
//进出门类型: 详见 读卡器业务类型字典
@ApiModelProperty(value = "进出门类型: 详见 读卡器业务类型字典")
private String enterorexit;
//开门类型字符串
@ApiModelProperty(value = "开门类型字符串")
private String opentypestr;
//刷卡时间格式yyyy-MM:dd HH:mm:ss
@ApiModelProperty(value = "刷卡时间格式yyyy-MM:dd HH:mm:ss")
private String swingtime;
//设备名称
@ApiModelProperty(value = "设备名称")
private String devicename;
//人员编号
@ApiModelProperty(value = "人员编号")
private String personcode;
//开门类型, 详见开门类型 字典
@ApiModelProperty(value = "开门类型, 详见开门类型 字典")
private String opentype;
//组织编码
@ApiModelProperty(value = "组织编码")
private String orgcode;
//证件类型
@ApiModelProperty(value = "证件类型")
private String papertype;
//证件号
@ApiModelProperty(value = "证件号")
private String papernumber;
//错误详情
@ApiModelProperty(value = "错误详情")
private String errordetail;
//开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码
@ApiModelProperty(value = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码")
private String openfailedcod;
//固定值evo-accesscontrol
@ApiModelProperty(value = "固定值evo-accesscontrol")
private String from;
//extendId标识
@ApiModelProperty(value = "extendId标识")
private Long extendid;
//开始时间, 13位时间戳
@ApiModelProperty(value = "开始时间, 13位时间戳")
private Long begintime;
//通道名称
@ApiModelProperty(value = "通道名称")
private String acschannelname;
//预留字段暂未使用默认值为0
@ApiModelProperty(value = "预留字段暂未使用默认值为0")
private Integer cardstatus;
//组织名称
@ApiModelProperty(value = "组织名称")
private String orgname;
//性别 1 男2 女, 0 未知
@ApiModelProperty(value = "性别 1 男2 女, 0 未知")
private Integer sex;
//人员部门id
@ApiModelProperty(value = "人员部门id")
private Integer deptid;
//卡类型
@ApiModelProperty(value = "卡类型")
private Integer cardtype;
//设备编号
@ApiModelProperty(value = "设备编号")
private String devicecode;
//人员姓名
@ApiModelProperty(value = "人员姓名")
private String personname;
//刷卡人在平台上的图片,相对路径
@ApiModelProperty(value = "刷卡人在平台上的图片,相对路径")
private String personimg;
//开门结果 0 失败 1 成功
@ApiModelProperty(value = "开门结果 0 失败 1 成功")
private Integer openresult;
//人员id
@ApiModelProperty(value = "人员id")
private Integer personid;
//抓拍图,相对路径
@ApiModelProperty(value = "抓拍图,相对路径")
private String recordimage1;
//卡介质 0 IC 1 有源RFID 2 CPU
@ApiModelProperty(value = "卡介质 0 IC 1 有源RFID 2 CPU")
private String category;
//卡号
@ApiModelProperty(value = "卡号")
private String cardnumber;
//rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物
@ApiModelProperty(value = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物")
private Integer rfidtype;
//年龄
@ApiModelProperty(value = "年龄")
private Integer age;
//0-非访客1-访客
@ApiModelProperty(value = "0-非访客1-访客")
private Integer vrecordflag;
//删除标识true false
@ApiModelProperty(value = "删除标识true false")
private String deleteEnum;
//备注
@ApiModelProperty(value = "备注")
private String remarks;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//更新人姓名
@ApiModelProperty(value = "更新人姓名")
private String updateName;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//单位id
@ApiModelProperty(value = "单位id")
private Long orgId;
//版本
@ApiModelProperty(value = "版本")
private String version;
//创建时间
@ApiModelProperty(value = "创建时间")
private String createTime;
//修改时间
@ApiModelProperty(value = "修改时间")
private String updateTime;
//创建人id
@ApiModelProperty(value = "创建人id")
private Long createId;
//修改人id
@ApiModelProperty(value = "修改人id")
private Long updateId;
private String env;
}

View File

@ -0,0 +1,30 @@
package com.zcloud.primeport.domain.gateway;
import com.zcloud.primeport.domain.model.MkmjCarRecordE;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
public interface MkmjCarRecordGateway {
/**
*
*/
Boolean add(MkmjCarRecordE mkmjCarRecordE);
/**
*
*/
Boolean update(MkmjCarRecordE mkmjCarRecordE);
/**
*
*/
Boolean deletedMkmjCarRecordById(Long id);
Boolean deletedMkmjCarRecordByIds(Long[] id);
}

View File

@ -0,0 +1,30 @@
package com.zcloud.primeport.domain.gateway;
import com.zcloud.primeport.domain.model.MkmjSwipeCardRecordE;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
public interface MkmjSwipeCardRecordGateway {
/**
*
*/
Boolean add(MkmjSwipeCardRecordE mkmjSwipeCardRecordE);
/**
*
*/
Boolean update(MkmjSwipeCardRecordE mkmjSwipeCardRecordE);
/**
*
*/
Boolean deletedMkmjSwipeCardRecordById(Long id);
Boolean deletedMkmjSwipeCardRecordByIds(Long[] id);
}

View File

@ -0,0 +1,63 @@
package com.zcloud.primeport.domain.model;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
import java.sql.Date;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Data
public class MkmjCarRecordE extends BaseE {
//车辆id
private String vehicleRecordId;
//车辆牌照号码
private String vehiclePlateNumber;
//车辆行驶证号码
private String vehicleRegistrationNumber;
//车辆类型名称
private String vehicleCategoryName;
//车辆联系人姓名
private String vehicleContactName;
//车辆联系人电话
private String vehicleContactPhoneNumber;
//车辆备案信息录入单位
private String vehicleFilingInfoRecordingOrg;
//车辆牌照颜色名称
private String vehiclePlateColor;
//车辆入港闸口
private String vehicleArrivalBarrier;
private String regexArrivalBarrier;
//车辆入港时间
private String vehicleArrivalTime;
//车辆离港闸口
private String vehicleDepartureBarrier;
private String regexDepartureBarrier;
//车辆离港时间
private String vehicleDepartureTime;
//车辆备案方式
private String vehicleFilingMethod;
//车辆在港状态
private String vehicleArrivalStatus;
//数据来源
private String edwDataSource;
//数据创建日期
private String edwCreateDate;
//数据更新日期
private String edwLastUpdate;
//数据有效标识
private String edwValidFlag;
//分区列
private Long dataVersion;
//同步时间
private Date accLastUpdateDate;
//自增长id主键
private Long idSequence;
//同步时间
private String synctime;
}

View File

@ -4,12 +4,15 @@ import com.alibaba.cola.dto.ClientObject;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
import java.io.Serializable;
/**
* @author fangjiakai
* @date 2025/11/17 9:44
*/
@Data
public class MkmjStatisticsE extends BaseE {
public class MkmjStatisticsE implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private Long carInCount;
private Long carOutCount;

View File

@ -0,0 +1,105 @@
package com.zcloud.primeport.domain.model;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Data
public class MkmjSwipeCardRecordE extends BaseE {
//节点编码
private String nodecode;
//报警编号
private String alarmcode;
//报警图片路径
private String alarmpicture;
//节点类型
private String nodetype;
//报警时间10位时间戳
private Integer alarmdate;
//报警等级 1严重2一般3轻微
private Integer alarmgrade;
//单元类型
private Integer unittype;
//报警类型
private Integer alarmtype;
//通道序号
private Integer channelseq;
//通道名称
private String channelname;
//报警状态 1报警产生2报警消失
private Integer alarmstat;
//部门名称
private String deptname;
//通道编号
private String acschannelcode;
//口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知
private Integer maskstate;
//进出门类型: 详见 读卡器业务类型字典
private String enterorexit;
//开门类型字符串
private String opentypestr;
//刷卡时间格式yyyy-MM:dd HH:mm:ss
private String swingtime;
//设备名称
private String devicename;
//人员编号
private String personcode;
//开门类型, 详见开门类型 字典
private String opentype;
//组织编码
private String orgcode;
//证件类型
private String papertype;
//证件号
private String papernumber;
//错误详情
private String errordetail;
//开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码
private String openfailedcod;
//固定值evo-accesscontrol
private String from;
//extendId标识
private Long extendid;
//开始时间, 13位时间戳
private Long begintime;
//通道名称
private String acschannelname;
//预留字段暂未使用默认值为0
private Integer cardstatus;
//组织名称
private String orgname;
//性别 1 男2 女, 0 未知
private Integer sex;
//人员部门id
private Integer deptid;
//卡类型
private Integer cardtype;
//设备编号
private String devicecode;
//人员姓名
private String personname;
//刷卡人在平台上的图片,相对路径
private String personimg;
//开门结果 0 失败 1 成功
private Integer openresult;
//人员id
private Integer personid;
//抓拍图,相对路径
private String recordimage1;
//卡介质 0 IC 1 有源RFID 2 CPU
private String category;
//卡号
private String cardnumber;
//rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物
private Integer rfidtype;
//年龄
private Integer age;
//0-非访客1-访客
private Integer vrecordflag;
}

View File

@ -0,0 +1,52 @@
package com.zcloud.primeport.gatewayimpl;
import com.zcloud.primeport.domain.gateway.MkmjCarRecordGateway;
import com.zcloud.primeport.domain.model.MkmjCarRecordE;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import com.zcloud.primeport.persistence.repository.MkmjCarRecordRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Service
@AllArgsConstructor
public class MkmjCarRecordGatewayImpl implements MkmjCarRecordGateway {
private final MkmjCarRecordRepository mkmjCarRecordRepository;
@Override
public Boolean add(MkmjCarRecordE mkmjCarRecordE) {
MkmjCarRecordDO d = new MkmjCarRecordDO();
BeanUtils.copyProperties(mkmjCarRecordE, d);
mkmjCarRecordRepository.save(d);
return true;
}
@Override
public Boolean update(MkmjCarRecordE mkmjCarRecordE) {
MkmjCarRecordDO d = new MkmjCarRecordDO();
BeanUtils.copyProperties(mkmjCarRecordE, d);
mkmjCarRecordRepository.updateById(d);
return true;
}
@Override
public Boolean deletedMkmjCarRecordById(Long id) {
return mkmjCarRecordRepository.removeById(id);
}
@Override
public Boolean deletedMkmjCarRecordByIds(Long[] ids) {
return mkmjCarRecordRepository.removeByIds(Collections.singletonList(ids));
}
}

View File

@ -24,8 +24,8 @@ public class MkmjGateVideoGatewayImpl implements MkmjGateVideoGateway {
@Override
public Boolean add(MkmjGateVideoE mkmjGateVideoE) {
MkmjGateVideoDO d = new MkmjGateVideoDO(Tools.get32UUID());
BeanUtils.copyProperties(mkmjGateVideoE, d, "${uuid}");
MkmjGateVideoDO d = new MkmjGateVideoDO();
BeanUtils.copyProperties(mkmjGateVideoE, d);
mkmjGateVideoRepository.save(d);
return true;
}

View File

@ -0,0 +1,52 @@
package com.zcloud.primeport.gatewayimpl;
import com.zcloud.primeport.domain.gateway.MkmjSwipeCardRecordGateway;
import com.zcloud.primeport.domain.model.MkmjSwipeCardRecordE;
import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO;
import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Service
@AllArgsConstructor
public class MkmjSwipeCardRecordGatewayImpl implements MkmjSwipeCardRecordGateway {
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
@Override
public Boolean add(MkmjSwipeCardRecordE mkmjSwipeCardRecordE) {
MkmjSwipeCardRecordDO d = new MkmjSwipeCardRecordDO();
BeanUtils.copyProperties(mkmjSwipeCardRecordE, d);
mkmjSwipeCardRecordRepository.save(d);
return true;
}
@Override
public Boolean update(MkmjSwipeCardRecordE mkmjSwipeCardRecordE) {
MkmjSwipeCardRecordDO d = new MkmjSwipeCardRecordDO();
BeanUtils.copyProperties(mkmjSwipeCardRecordE, d);
mkmjSwipeCardRecordRepository.updateById(d);
return true;
}
@Override
public Boolean deletedMkmjSwipeCardRecordById(Long id) {
return mkmjSwipeCardRecordRepository.removeById(id);
}
@Override
public Boolean deletedMkmjSwipeCardRecordByIds(Long[] ids) {
return mkmjSwipeCardRecordRepository.removeByIds(Collections.singletonList(ids));
}
}

View File

@ -0,0 +1,94 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.sql.Date;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Data
@TableName("mkmj_car_record")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class MkmjCarRecordDO extends BaseDO {
//车辆id
@ApiModelProperty(value = "车辆id")
private String vehicleRecordId;
//车辆牌照号码
@ApiModelProperty(value = "车辆牌照号码")
private String vehiclePlateNumber;
//车辆行驶证号码
@ApiModelProperty(value = "车辆行驶证号码")
private String vehicleRegistrationNumber;
//车辆类型名称
@ApiModelProperty(value = "车辆类型名称")
private String vehicleCategoryName;
//车辆联系人姓名
@ApiModelProperty(value = "车辆联系人姓名")
private String vehicleContactName;
//车辆联系人电话
@ApiModelProperty(value = "车辆联系人电话")
private String vehicleContactPhoneNumber;
//车辆备案信息录入单位
@ApiModelProperty(value = "车辆备案信息录入单位")
private String vehicleFilingInfoRecordingOrg;
//车辆牌照颜色名称
@ApiModelProperty(value = "车辆牌照颜色名称")
private String vehiclePlateColor;
//车辆入港闸口
@ApiModelProperty(value = "车辆入港闸口")
private String vehicleArrivalBarrier;
private String regexArrivalBarrier;
//车辆入港时间
@ApiModelProperty(value = "车辆入港时间")
private String vehicleArrivalTime;
//车辆离港闸口
@ApiModelProperty(value = "车辆离港闸口")
private String vehicleDepartureBarrier;
private String regexDepartureBarrier;
//车辆离港时间
@ApiModelProperty(value = "车辆离港时间")
private String vehicleDepartureTime;
//车辆备案方式
@ApiModelProperty(value = "车辆备案方式")
private String vehicleFilingMethod;
//车辆在港状态
@ApiModelProperty(value = "车辆在港状态")
private String vehicleArrivalStatus;
//数据来源
@ApiModelProperty(value = "数据来源")
private String edwDataSource;
//数据创建日期
@ApiModelProperty(value = "数据创建日期")
private String edwCreateDate;
//数据更新日期
@ApiModelProperty(value = "数据更新日期")
private String edwLastUpdate;
//数据有效标识
@ApiModelProperty(value = "数据有效标识")
private String edwValidFlag;
//分区列
@ApiModelProperty(value = "分区列")
private Long dataVersion;
//同步时间
@ApiModelProperty(value = "同步时间")
private Date accLastUpdateDate;
//自增长id主键
@ApiModelProperty(value = "自增长id主键")
private Long idSequence;
//同步时间
@ApiModelProperty(value = "同步时间")
private String synctime;
}

View File

@ -0,0 +1,159 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Data
@TableName("mkmj_swipe_card_record")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class MkmjSwipeCardRecordDO extends BaseDO {
//节点编码
@ApiModelProperty(value = "节点编码")
private String nodecode;
//报警编号
@ApiModelProperty(value = "报警编号")
private String alarmcode;
//报警图片路径
@ApiModelProperty(value = "报警图片路径")
private String alarmpicture;
//节点类型
@ApiModelProperty(value = "节点类型")
private String nodetype;
//报警时间10位时间戳
@ApiModelProperty(value = "报警时间10位时间戳")
private Integer alarmdate;
//报警等级 1严重2一般3轻微
@ApiModelProperty(value = "报警等级 1严重2一般3轻微")
private Integer alarmgrade;
//单元类型
@ApiModelProperty(value = "单元类型")
private Integer unittype;
//报警类型
@ApiModelProperty(value = "报警类型")
private Integer alarmtype;
//通道序号
@ApiModelProperty(value = "通道序号")
private Integer channelseq;
//通道名称
@ApiModelProperty(value = "通道名称")
private String channelname;
//报警状态 1报警产生2报警消失
@ApiModelProperty(value = "报警状态 1报警产生2报警消失")
private Integer alarmstat;
//部门名称
@ApiModelProperty(value = "部门名称")
private String deptname;
//通道编号
@ApiModelProperty(value = "通道编号")
private String acschannelcode;
//口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知
@ApiModelProperty(value = "口罩状态 3-戴口罩2-未戴口罩1-未识别0-未知")
private Integer maskstate;
//进出门类型: 详见 读卡器业务类型字典
@ApiModelProperty(value = "进出门类型: 详见 读卡器业务类型字典")
private String enterorexit;
//开门类型字符串
@ApiModelProperty(value = "开门类型字符串")
private String opentypestr;
//刷卡时间格式yyyy-MM:dd HH:mm:ss
@ApiModelProperty(value = "刷卡时间格式yyyy-MM:dd HH:mm:ss")
private String swingtime;
//设备名称
@ApiModelProperty(value = "设备名称")
private String devicename;
//人员编号
@ApiModelProperty(value = "人员编号")
private String personcode;
//开门类型, 详见开门类型 字典
@ApiModelProperty(value = "开门类型, 详见开门类型 字典")
private String opentype;
//组织编码
@ApiModelProperty(value = "组织编码")
private String orgcode;
//证件类型
@ApiModelProperty(value = "证件类型")
private String papertype;
//证件号
@ApiModelProperty(value = "证件号")
private String papernumber;
//错误详情
@ApiModelProperty(value = "错误详情")
private String errordetail;
//开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码
@ApiModelProperty(value = "开门错误码0代表成功96代表需远程验证(需结合平台上远程验证功能使用),其他参考门禁开门错误码")
private String openfailedcod;
//固定值evo-accesscontrol
@ApiModelProperty(value = "固定值evo-accesscontrol")
private String from;
//extendId标识
@ApiModelProperty(value = "extendId标识")
private Long extendid;
//开始时间, 13位时间戳
@ApiModelProperty(value = "开始时间, 13位时间戳")
private Long begintime;
//通道名称
@ApiModelProperty(value = "通道名称")
private String acschannelname;
//预留字段暂未使用默认值为0
@ApiModelProperty(value = "预留字段暂未使用默认值为0")
private Integer cardstatus;
//组织名称
@ApiModelProperty(value = "组织名称")
private String orgname;
//性别 1 男2 女, 0 未知
@ApiModelProperty(value = "性别 1 男2 女, 0 未知")
private Integer sex;
//人员部门id
@ApiModelProperty(value = "人员部门id")
private Integer deptid;
//卡类型
@ApiModelProperty(value = "卡类型")
private Integer cardtype;
//设备编号
@ApiModelProperty(value = "设备编号")
private String devicecode;
//人员姓名
@ApiModelProperty(value = "人员姓名")
private String personname;
//刷卡人在平台上的图片,相对路径
@ApiModelProperty(value = "刷卡人在平台上的图片,相对路径")
private String personimg;
//开门结果 0 失败 1 成功
@ApiModelProperty(value = "开门结果 0 失败 1 成功")
private Integer openresult;
//人员id
@ApiModelProperty(value = "人员id")
private Integer personid;
//抓拍图,相对路径
@ApiModelProperty(value = "抓拍图,相对路径")
private String recordimage1;
//卡介质 0 IC 1 有源RFID 2 CPU
@ApiModelProperty(value = "卡介质 0 IC 1 有源RFID 2 CPU")
private String category;
//卡号
@ApiModelProperty(value = "卡号")
private String cardnumber;
//rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物
@ApiModelProperty(value = "rfid子类型0普通门禁1电动车2特殊人群关怀 3宠物")
private Integer rfidtype;
//年龄
@ApiModelProperty(value = "年龄")
private Integer age;
//0-非访客1-访客
@ApiModelProperty(value = "0-非访客1-访客")
private Integer vrecordflag;
}

View File

@ -0,0 +1,23 @@
package com.zcloud.primeport.persistence.mapper;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Mapper
public interface MkmjCarRecordMapper extends BaseMapper<MkmjCarRecordDO> {
List<MkmjStatisticsE> statisticsByArea(@Param("ids") List<String> ids);
List<MkmjStatisticsE> statisticsByPassage(@Param("ids") List<String> ids);
}

View File

@ -0,0 +1,23 @@
package com.zcloud.primeport.persistence.mapper;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Mapper
public interface MkmjSwipeCardRecordMapper extends BaseMapper<MkmjSwipeCardRecordDO> {
List<MkmjStatisticsE> statisticsByArea(@Param("ids") List<String> ids);
List<MkmjStatisticsE> statisticsByPassage(@Param("ids") List<String> ids);
}

View File

@ -0,0 +1,25 @@
package com.zcloud.primeport.persistence.repository;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
public interface MkmjCarRecordRepository extends BaseRepository<MkmjCarRecordDO> {
PageResponse<MkmjCarRecordDO> listPage(Map<String, Object> params);
List<MkmjStatisticsE> statisticsByArea(List<String> ids);
List<MkmjStatisticsE> statisticsByPassage(List<String> ids);
}

View File

@ -0,0 +1,25 @@
package com.zcloud.primeport.persistence.repository;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
public interface MkmjSwipeCardRecordRepository extends BaseRepository<MkmjSwipeCardRecordDO> {
PageResponse<MkmjSwipeCardRecordDO> listPage(Map<String, Object> params);
List<MkmjStatisticsE> statisticsByArea(List<String> ids);
List<MkmjStatisticsE> statisticsByPassage(List<String> ids);
}

View File

@ -0,0 +1,51 @@
package com.zcloud.primeport.persistence.repository.impl;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjCarRecordDO;
import com.zcloud.primeport.persistence.mapper.MkmjCarRecordMapper;
import com.zcloud.primeport.persistence.repository.MkmjCarRecordRepository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:09
*/
@Service
@RequiredArgsConstructor
public class MkmjCarRecordRepositoryImpl extends BaseRepositoryImpl<MkmjCarRecordMapper, MkmjCarRecordDO> implements MkmjCarRecordRepository {
private final MkmjCarRecordMapper mkmjCarRecordMapper;
@Override
public PageResponse<MkmjCarRecordDO> listPage(Map<String, Object> params) {
IPage<MkmjCarRecordDO> iPage = new Query<MkmjCarRecordDO>().getPage(params);
QueryWrapper<MkmjCarRecordDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<MkmjCarRecordDO> result = mkmjCarRecordMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<MkmjStatisticsE> statisticsByArea(List<String> ids){
return mkmjCarRecordMapper.statisticsByArea(ids);
}
@Override
public List<MkmjStatisticsE> statisticsByPassage(List<String> ids){
return mkmjCarRecordMapper.statisticsByPassage(ids);
}
}

View File

@ -0,0 +1,50 @@
package com.zcloud.primeport.persistence.repository.impl;
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO;
import com.zcloud.primeport.persistence.mapper.MkmjSwipeCardRecordMapper;
import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-11-17 13:42:10
*/
@Service
@RequiredArgsConstructor
public class MkmjSwipeCardRecordRepositoryImpl extends BaseRepositoryImpl<MkmjSwipeCardRecordMapper, MkmjSwipeCardRecordDO> implements MkmjSwipeCardRecordRepository {
private final MkmjSwipeCardRecordMapper mkmjSwipeCardRecordMapper;
@Override
public PageResponse<MkmjSwipeCardRecordDO> listPage(Map<String, Object> params) {
IPage<MkmjSwipeCardRecordDO> iPage = new Query<MkmjSwipeCardRecordDO>().getPage(params);
QueryWrapper<MkmjSwipeCardRecordDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<MkmjSwipeCardRecordDO> result = mkmjSwipeCardRecordMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<MkmjStatisticsE> statisticsByArea(List<String> ids){
return mkmjSwipeCardRecordMapper.statisticsByArea(ids);
}
@Override
public List<MkmjStatisticsE> statisticsByPassage(List<String> ids){
return mkmjSwipeCardRecordMapper.statisticsByPassage(ids);
}
}

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.primeport.persistence.mapper.MkmjCarRecordMapper">
<select id="statisticsByArea" resultType="com.zcloud.primeport.domain.model.MkmjStatisticsE">
SELECT p.area_id AS id,
SUM(combined.in_count) AS car_in_count,
SUM(combined.out_count) AS car_out_count
FROM (
-- 进港统计
SELECT vehicle_arrival_barrier AS barrier,
COUNT(*) AS in_count,
0 AS out_count
FROM mkmj_car_record
WHERE vehicle_arrival_barrier IS NOT NULL
GROUP BY vehicle_arrival_barrier
UNION ALL
-- 出港统计
SELECT vehicle_departure_barrier AS barrier,
0 AS in_count,
COUNT(*) AS out_count
FROM mkmj_car_record
WHERE vehicle_departure_barrier IS NOT NULL
GROUP BY vehicle_departure_barrier) combined
left join mkmj_passage p on combined.barrier = p.passage_name
where p.area_id in
<foreach item="item" collection="ids" separator="," open="(" close=")" index="index">
#{item}
</foreach>
GROUP BY p.area_id
</select>
<select id="statisticsByPassage" resultType="com.zcloud.primeport.domain.model.MkmjStatisticsE">
SELECT p.passage_id AS id,
SUM(combined.in_count) AS car_in_count,
SUM(combined.out_count) AS car_out_count
FROM (
-- 进港统计
SELECT vehicle_arrival_barrier AS barrier,
COUNT(*) AS in_count,
0 AS out_count
FROM mkmj_car_record
WHERE vehicle_arrival_barrier IS NOT NULL
GROUP BY vehicle_arrival_barrier
UNION ALL
-- 出港统计
SELECT vehicle_departure_barrier AS barrier,
0 AS in_count,
COUNT(*) AS out_count
FROM mkmj_car_record
WHERE vehicle_departure_barrier IS NOT NULL
GROUP BY vehicle_departure_barrier) combined
left join mkmj_passage p on combined.barrier = p.passage_name
where p.passage_id in
<foreach item="item" collection="ids" separator="," open="(" close=")" index="index">
#{item}
</foreach>
GROUP BY p.passage_id
</select>
</mapper>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.primeport.persistence.mapper.MkmjSwipeCardRecordMapper">
<select id="statisticsByArea" resultType="com.zcloud.primeport.domain.model.MkmjStatisticsE">
SELECT p.area_id as id,
SUM(case when r.enter_or_exit = 1 then 1 else 0 end) AS person_in_count,
SUM(case when r.enter_or_exit = 2 then 1 else 0 end) AS person_out_count
FROM mkmj_swipe_card_record r
left join mkmj_passage p on r.acs_channel_name = p.passage_name
where p.area_id in
<foreach item="item" collection="ids" separator="," open="(" close=")" index="index">
#{item}
</foreach>
GROUP BY p.area_id
</select>
<select id="statisticsByPassage" resultType="com.zcloud.primeport.domain.model.MkmjStatisticsE">
SELECT p.passage_id as id,
SUM(case when r.enter_or_exit = 1 then 1 else 0 end) AS person_in_count,
SUM(case when r.enter_or_exit = 2 then 1 else 0 end) AS person_out_count
FROM mkmj_swipe_card_record r
left join mkmj_passage p on r.acs_channel_name = p.passage_name
where p.passage_id in
<foreach item="item" collection="ids" separator="," open="(" close=")" index="index">
#{item}
</foreach>
GROUP BY p.passage_id
</select>
</mapper>