feat(area): 新增区域通道数量统计功能
- 在MkmjAreaController中新增企业ID和名称的自动填充逻辑 - 修改MkmjAreaQueryExe以支持查询区域下的通道数量 - 新增PassageCountE实体类用于通道数量统计 - 更新MkmjAreaCO和相关DTO以支持corpinfoId和corpinfoName字段 - 在MkmjPassageMapper中增加listPassageCountByAreaId方法及XML配置 - 优化区域列表查询逻辑,按area_status排序并统计视频和通道数量 - 修复GateVideo统计查询中的格式问题并增加删除枚举过滤条件master
parent
39a820d568
commit
36d0e38a26
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.primeport.web;
|
package com.zcloud.primeport.web;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.zcloud.primeport.api.MkmjAreaServiceI;
|
import com.zcloud.primeport.api.MkmjAreaServiceI;
|
||||||
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
|
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
|
||||||
import com.zcloud.primeport.dto.MkmjAreaAddCmd;
|
import com.zcloud.primeport.dto.MkmjAreaAddCmd;
|
||||||
|
|
@ -40,6 +41,10 @@ public class MkmjAreaController {
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public SingleResponse<MkmjAreaCO> add(@Validated @RequestBody MkmjAreaAddCmd cmd) {
|
public SingleResponse<MkmjAreaCO> add(@Validated @RequestBody MkmjAreaAddCmd cmd) {
|
||||||
SSOUser ssoUser = AuthContext.getCurrentUser();
|
SSOUser ssoUser = AuthContext.getCurrentUser();
|
||||||
|
if(ObjectUtil.isEmpty(cmd.getCorpinfoId())){
|
||||||
|
cmd.setCorpinfoId(ssoUser.getTenantId());
|
||||||
|
cmd.setCorpinfoName(ssoUser.getTenantName());
|
||||||
|
}
|
||||||
return mkmjAreaService.add(cmd);
|
return mkmjAreaService.add(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,13 @@ import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.zcloud.primeport.command.convertor.MkmjAreaCoConvertor;
|
import com.zcloud.primeport.command.convertor.MkmjAreaCoConvertor;
|
||||||
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
|
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
|
||||||
|
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||||
import com.zcloud.primeport.domain.model.VideoCountE;
|
import com.zcloud.primeport.domain.model.VideoCountE;
|
||||||
import com.zcloud.primeport.dto.MkmjAreaPageQry;
|
import com.zcloud.primeport.dto.MkmjAreaPageQry;
|
||||||
import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
|
import com.zcloud.primeport.dto.clientobject.MkmjAreaCO;
|
||||||
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
|
import com.zcloud.primeport.dto.clientobject.MkmjStatisticsCO;
|
||||||
import com.zcloud.primeport.persistence.dataobject.MkmjAreaDO;
|
import com.zcloud.primeport.persistence.dataobject.MkmjAreaDO;
|
||||||
import com.zcloud.primeport.persistence.repository.MkmjAreaRepository;
|
import com.zcloud.primeport.persistence.repository.*;
|
||||||
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 lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
@ -37,6 +35,7 @@ public class MkmjAreaQueryExe {
|
||||||
private final MkmjGateVideoRepository mkmjGateVideoRepository;
|
private final MkmjGateVideoRepository mkmjGateVideoRepository;
|
||||||
private final MkmjCarRecordRepository mkmjCarRecordRepository;
|
private final MkmjCarRecordRepository mkmjCarRecordRepository;
|
||||||
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
|
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
|
||||||
|
private final MkmjPassageRepository mkmjPassageRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id查询
|
* 根据id查询
|
||||||
|
|
@ -58,15 +57,23 @@ public class MkmjAreaQueryExe {
|
||||||
Map<String, Object> params = PageQueryHelper.toHashMap(mkmjAreaPageQry);
|
Map<String, Object> params = PageQueryHelper.toHashMap(mkmjAreaPageQry);
|
||||||
PageResponse<MkmjAreaDO> pageResponse = mkmjAreaRepository.listPage(params);
|
PageResponse<MkmjAreaDO> pageResponse = mkmjAreaRepository.listPage(params);
|
||||||
List<MkmjAreaCO> examCenterCOS = mkmjAreaCoConvertor.converDOsToCOs(pageResponse.getData());
|
List<MkmjAreaCO> examCenterCOS = mkmjAreaCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||||
List<String> ids = examCenterCOS.stream().map(MkmjAreaCO::getAreaId).collect(Collectors.toList());
|
if(examCenterCOS.size() > 0) {
|
||||||
List<VideoCountE> videoCounts = mkmjGateVideoRepository.listVideoCountByAreaId(ids);
|
List<String> ids = examCenterCOS.stream().map(MkmjAreaCO::getAreaId).collect(Collectors.toList());
|
||||||
examCenterCOS.forEach(examCenterCO -> {
|
List<VideoCountE> videoCounts = mkmjGateVideoRepository.listVideoCountByAreaId(ids);
|
||||||
videoCounts.forEach(videoCount -> {
|
List<PassageCountE> passageCounts = mkmjPassageRepository.listPassageCountByAreaId(ids);
|
||||||
if (examCenterCO.getAreaId().equals(videoCount.getAreaGateId())) {
|
examCenterCOS.forEach(examCenterCO -> {
|
||||||
examCenterCO.setVideoNum(videoCount.getCount());
|
videoCounts.forEach(videoCount -> {
|
||||||
}
|
if (examCenterCO.getAreaId().equals(videoCount.getAreaGateId())) {
|
||||||
|
examCenterCO.setVideoNum(videoCount.getCount());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
passageCounts.forEach(passageCount -> {
|
||||||
|
if (examCenterCO.getAreaId().equals(passageCount.getAreaId())) {
|
||||||
|
examCenterCO.setPassageNum(passageCount.getCount());
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,5 +57,11 @@ public class MkmjAreaAddCmd extends Command {
|
||||||
@NotEmpty(message = "纬度不能为空")
|
@NotEmpty(message = "纬度不能为空")
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
||||||
|
private Long corpinfoId;
|
||||||
|
@ApiModelProperty(value = "企业名称", name = "corpinfoName")
|
||||||
|
private String corpinfoName;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,5 +54,10 @@ public class MkmjAreaUpdateCmd extends Command {
|
||||||
@ApiModelProperty(value = "纬度", name = "latitude", required = true)
|
@ApiModelProperty(value = "纬度", name = "latitude", required = true)
|
||||||
@NotEmpty(message = "纬度不能为空")
|
@NotEmpty(message = "纬度不能为空")
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
||||||
|
private Long corpinfoId;
|
||||||
|
@ApiModelProperty(value = "企业名称", name = "corpinfoName")
|
||||||
|
private String corpinfoName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,9 @@ public class MkmjAreaCO extends ClientObject {
|
||||||
private Integer areaStatus;
|
private Integer areaStatus;
|
||||||
//企业id
|
//企业id
|
||||||
@ApiModelProperty(value = "企业id")
|
@ApiModelProperty(value = "企业id")
|
||||||
private String corpinfoId;
|
private Long corpinfoId;
|
||||||
|
@ApiModelProperty(value = "企业名称")
|
||||||
|
private String corpinfoName;
|
||||||
//经度
|
//经度
|
||||||
@ApiModelProperty(value = "经度")
|
@ApiModelProperty(value = "经度")
|
||||||
private String longitude;
|
private String longitude;
|
||||||
|
|
@ -52,5 +54,8 @@ public class MkmjAreaCO extends ClientObject {
|
||||||
// 视频个数
|
// 视频个数
|
||||||
@ApiModelProperty(value = "视频个数")
|
@ApiModelProperty(value = "视频个数")
|
||||||
private Long videoNum;
|
private Long videoNum;
|
||||||
|
// 通道个数
|
||||||
|
@ApiModelProperty(value = "通道个数")
|
||||||
|
private Long passageNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.primeport.domain.model;
|
package com.zcloud.primeport.domain.model;
|
||||||
|
|
||||||
import com.jjb.saas.framework.domain.model.BaseE;
|
import com.jjb.saas.framework.domain.model.BaseE;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -27,11 +28,12 @@ public class MkmjAreaE extends BaseE {
|
||||||
private Integer areaType;
|
private Integer areaType;
|
||||||
//区域状态 0-停用 1-正常 2-暂时关闭
|
//区域状态 0-停用 1-正常 2-暂时关闭
|
||||||
private Integer areaStatus;
|
private Integer areaStatus;
|
||||||
//企业id
|
|
||||||
private String corpinfoId;
|
|
||||||
//经度
|
//经度
|
||||||
private String longitude;
|
private String longitude;
|
||||||
//纬度
|
//纬度
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
private Long corpinfoId;
|
||||||
|
private String corpinfoName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.zcloud.primeport.domain.model;
|
||||||
|
|
||||||
|
import com.jjb.saas.framework.domain.model.BaseE;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author fangjiakai
|
||||||
|
* @date 2025/11/14 10:24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PassageCountE extends BaseE {
|
||||||
|
private String areaId;
|
||||||
|
private Long count;
|
||||||
|
}
|
||||||
|
|
@ -44,7 +44,9 @@ public class MkmjAreaDO extends BaseDO {
|
||||||
private Integer areaStatus;
|
private Integer areaStatus;
|
||||||
//企业id
|
//企业id
|
||||||
@ApiModelProperty(value = "企业id")
|
@ApiModelProperty(value = "企业id")
|
||||||
private String corpinfoId;
|
private Long corpinfoId;
|
||||||
|
@ApiModelProperty(value = "企业名称")
|
||||||
|
private String corpinfoName;
|
||||||
//经度
|
//经度
|
||||||
@ApiModelProperty(value = "经度")
|
@ApiModelProperty(value = "经度")
|
||||||
private String longitude;
|
private String longitude;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
package com.zcloud.primeport.persistence.mapper;
|
package com.zcloud.primeport.persistence.mapper;
|
||||||
|
|
||||||
|
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||||
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-infrastructure
|
* web-infrastructure
|
||||||
*
|
*
|
||||||
|
|
@ -13,5 +16,6 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface MkmjPassageMapper extends BaseMapper<MkmjPassageDO> {
|
public interface MkmjPassageMapper extends BaseMapper<MkmjPassageDO> {
|
||||||
|
|
||||||
|
List<PassageCountE> listPassageCountByAreaId(List<String> ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
package com.zcloud.primeport.persistence.repository;
|
package com.zcloud.primeport.persistence.repository;
|
||||||
|
|
||||||
|
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||||
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -14,5 +16,7 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
public interface MkmjPassageRepository extends BaseRepository<MkmjPassageDO> {
|
public interface MkmjPassageRepository extends BaseRepository<MkmjPassageDO> {
|
||||||
PageResponse<MkmjPassageDO> listPage(Map<String, Object> params);
|
PageResponse<MkmjPassageDO> listPage(Map<String, Object> params);
|
||||||
|
|
||||||
|
List<PassageCountE> listPassageCountByAreaId(List<String> ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,8 @@ public class MkmjAreaRepositoryImpl extends BaseRepositoryImpl<MkmjAreaMapper, M
|
||||||
IPage<MkmjAreaDO> iPage = new Query<MkmjAreaDO>().getPage(params);
|
IPage<MkmjAreaDO> iPage = new Query<MkmjAreaDO>().getPage(params);
|
||||||
QueryWrapper<MkmjAreaDO> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<MkmjAreaDO> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.apply("FIELD(area_status, 1, 0, 2)")
|
||||||
|
.orderByDesc("create_time");
|
||||||
IPage<MkmjAreaDO> result = mkmjAreaMapper.selectPage(iPage, queryWrapper);
|
IPage<MkmjAreaDO> result = mkmjAreaMapper.selectPage(iPage, queryWrapper);
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ public class MkmjGateVideoRepositoryImpl extends BaseRepositoryImpl<MkmjGateVide
|
||||||
@Override
|
@Override
|
||||||
public List<VideoCountE> listVideoCountByAreaId(List<String> ids){
|
public List<VideoCountE> listVideoCountByAreaId(List<String> ids){
|
||||||
return mkmjGateVideoMapper.listVideoCountByAreaId(ids);
|
return mkmjGateVideoMapper.listVideoCountByAreaId(ids);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.zcloud.primeport.persistence.repository.impl;
|
package com.zcloud.primeport.persistence.repository.impl;
|
||||||
|
|
||||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
import com.jjb.saas.framework.repository.common.PageHelper;
|
||||||
|
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||||
|
import com.zcloud.primeport.domain.model.VideoCountE;
|
||||||
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
||||||
import com.zcloud.primeport.persistence.mapper.MkmjPassageMapper;
|
import com.zcloud.primeport.persistence.mapper.MkmjPassageMapper;
|
||||||
import com.zcloud.primeport.persistence.repository.MkmjPassageRepository;
|
import com.zcloud.primeport.persistence.repository.MkmjPassageRepository;
|
||||||
|
|
@ -13,6 +15,7 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -35,5 +38,10 @@ public class MkmjPassageRepositoryImpl extends BaseRepositoryImpl<MkmjPassageMap
|
||||||
IPage<MkmjPassageDO> result = mkmjPassageMapper.selectPage(iPage, queryWrapper);
|
IPage<MkmjPassageDO> result = mkmjPassageMapper.selectPage(iPage, queryWrapper);
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PassageCountE> listPassageCountByAreaId(List<String> ids){
|
||||||
|
return mkmjPassageMapper.listPassageCountByAreaId(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
select area_gate_id,count(1) as count
|
select area_gate_id,count(1) as count
|
||||||
from mkmj_gate_video
|
from mkmj_gate_video
|
||||||
<where>
|
<where>
|
||||||
|
and delete_enum = 'FALSE'
|
||||||
<if test="ids != null and ids.size() > 0">
|
<if test="ids != null and ids.size() > 0">
|
||||||
and area_gate_id in
|
and area_gate_id in
|
||||||
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
|
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
|
||||||
|
|
|
||||||
|
|
@ -4,5 +4,20 @@
|
||||||
|
|
||||||
<mapper namespace="com.zcloud.primeport.persistence.mapper.MkmjPassageMapper">
|
<mapper namespace="com.zcloud.primeport.persistence.mapper.MkmjPassageMapper">
|
||||||
|
|
||||||
|
<select id="listPassageCountByAreaId" resultType="com.zcloud.primeport.domain.model.PassageCountE">
|
||||||
|
select area_id,count(1) as count
|
||||||
|
from mkmj_passage
|
||||||
|
<where>
|
||||||
|
and delete_enum = 'FALSE'
|
||||||
|
<if test="ids != null and ids.size() > 0">
|
||||||
|
and area_id in
|
||||||
|
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by area_id
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue