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;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.zcloud.primeport.api.MkmjAreaServiceI;
|
||||
import com.zcloud.primeport.domain.model.MkmjStatisticsE;
|
||||
import com.zcloud.primeport.dto.MkmjAreaAddCmd;
|
||||
|
|
@ -40,6 +41,10 @@ public class MkmjAreaController {
|
|||
@PostMapping("/save")
|
||||
public SingleResponse<MkmjAreaCO> add(@Validated @RequestBody MkmjAreaAddCmd cmd) {
|
||||
SSOUser ssoUser = AuthContext.getCurrentUser();
|
||||
if(ObjectUtil.isEmpty(cmd.getCorpinfoId())){
|
||||
cmd.setCorpinfoId(ssoUser.getTenantId());
|
||||
cmd.setCorpinfoName(ssoUser.getTenantName());
|
||||
}
|
||||
return mkmjAreaService.add(cmd);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,15 +4,13 @@ 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.PassageCountE;
|
||||
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.primeport.persistence.repository.MkmjCarRecordRepository;
|
||||
import com.zcloud.primeport.persistence.repository.MkmjGateVideoRepository;
|
||||
import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository;
|
||||
import com.zcloud.primeport.persistence.repository.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -37,6 +35,7 @@ public class MkmjAreaQueryExe {
|
|||
private final MkmjGateVideoRepository mkmjGateVideoRepository;
|
||||
private final MkmjCarRecordRepository mkmjCarRecordRepository;
|
||||
private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository;
|
||||
private final MkmjPassageRepository mkmjPassageRepository;
|
||||
|
||||
/**
|
||||
* 根据id查询
|
||||
|
|
@ -58,15 +57,23 @@ public class MkmjAreaQueryExe {
|
|||
Map<String, Object> params = PageQueryHelper.toHashMap(mkmjAreaPageQry);
|
||||
PageResponse<MkmjAreaDO> pageResponse = mkmjAreaRepository.listPage(params);
|
||||
List<MkmjAreaCO> examCenterCOS = mkmjAreaCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||
List<String> ids = examCenterCOS.stream().map(MkmjAreaCO::getAreaId).collect(Collectors.toList());
|
||||
List<VideoCountE> videoCounts = mkmjGateVideoRepository.listVideoCountByAreaId(ids);
|
||||
examCenterCOS.forEach(examCenterCO -> {
|
||||
videoCounts.forEach(videoCount -> {
|
||||
if (examCenterCO.getAreaId().equals(videoCount.getAreaGateId())) {
|
||||
examCenterCO.setVideoNum(videoCount.getCount());
|
||||
}
|
||||
if(examCenterCOS.size() > 0) {
|
||||
List<String> ids = examCenterCOS.stream().map(MkmjAreaCO::getAreaId).collect(Collectors.toList());
|
||||
List<VideoCountE> videoCounts = mkmjGateVideoRepository.listVideoCountByAreaId(ids);
|
||||
List<PassageCountE> passageCounts = mkmjPassageRepository.listPassageCountByAreaId(ids);
|
||||
examCenterCOS.forEach(examCenterCO -> {
|
||||
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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,5 +57,11 @@ public class MkmjAreaAddCmd extends Command {
|
|||
@NotEmpty(message = "纬度不能为空")
|
||||
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)
|
||||
@NotEmpty(message = "纬度不能为空")
|
||||
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;
|
||||
//企业id
|
||||
@ApiModelProperty(value = "企业id")
|
||||
private String corpinfoId;
|
||||
private Long corpinfoId;
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String corpinfoName;
|
||||
//经度
|
||||
@ApiModelProperty(value = "经度")
|
||||
private String longitude;
|
||||
|
|
@ -52,5 +54,8 @@ public class MkmjAreaCO extends ClientObject {
|
|||
// 视频个数
|
||||
@ApiModelProperty(value = "视频个数")
|
||||
private Long videoNum;
|
||||
// 通道个数
|
||||
@ApiModelProperty(value = "通道个数")
|
||||
private Long passageNum;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.zcloud.primeport.domain.model;
|
||||
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
|
|
@ -27,11 +28,12 @@ public class MkmjAreaE extends BaseE {
|
|||
private Integer areaType;
|
||||
//区域状态 0-停用 1-正常 2-暂时关闭
|
||||
private Integer areaStatus;
|
||||
//企业id
|
||||
private String corpinfoId;
|
||||
//经度
|
||||
private String longitude;
|
||||
//纬度
|
||||
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;
|
||||
//企业id
|
||||
@ApiModelProperty(value = "企业id")
|
||||
private String corpinfoId;
|
||||
private Long corpinfoId;
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String corpinfoName;
|
||||
//经度
|
||||
@ApiModelProperty(value = "经度")
|
||||
private String longitude;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
package com.zcloud.primeport.persistence.mapper;
|
||||
|
||||
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
|
|
@ -13,5 +16,6 @@ import org.apache.ibatis.annotations.Mapper;
|
|||
@Mapper
|
||||
public interface MkmjPassageMapper extends BaseMapper<MkmjPassageDO> {
|
||||
|
||||
List<PassageCountE> listPassageCountByAreaId(List<String> ids);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.zcloud.primeport.persistence.repository;
|
||||
|
||||
import com.zcloud.primeport.domain.model.PassageCountE;
|
||||
import com.zcloud.primeport.persistence.dataobject.MkmjPassageDO;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -14,5 +16,7 @@ import java.util.Map;
|
|||
*/
|
||||
public interface MkmjPassageRepository extends BaseRepository<MkmjPassageDO> {
|
||||
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);
|
||||
QueryWrapper<MkmjAreaDO> queryWrapper = new QueryWrapper<>();
|
||||
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);
|
||||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ public class MkmjGateVideoRepositoryImpl extends BaseRepositoryImpl<MkmjGateVide
|
|||
@Override
|
||||
public List<VideoCountE> listVideoCountByAreaId(List<String> ids){
|
||||
return mkmjGateVideoMapper.listVideoCountByAreaId(ids);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.zcloud.primeport.persistence.repository.impl;
|
||||
|
||||
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.mapper.MkmjPassageMapper;
|
||||
import com.zcloud.primeport.persistence.repository.MkmjPassageRepository;
|
||||
|
|
@ -13,6 +15,7 @@ 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;
|
||||
|
||||
/**
|
||||
|
|
@ -35,5 +38,10 @@ public class MkmjPassageRepositoryImpl extends BaseRepositoryImpl<MkmjPassageMap
|
|||
IPage<MkmjPassageDO> result = mkmjPassageMapper.selectPage(iPage, queryWrapper);
|
||||
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
|
||||
from mkmj_gate_video
|
||||
<where>
|
||||
and delete_enum = 'FALSE'
|
||||
<if test="ids != null and ids.size() > 0">
|
||||
and area_gate_id in
|
||||
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
|
||||
|
|
|
|||
|
|
@ -4,5 +4,20 @@
|
|||
|
||||
<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>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue