0701 - bug修改
parent
3c49092b13
commit
5620914fb1
|
|
@ -3,6 +3,7 @@ package com.zcloud.primeport.web.close;
|
|||
|
||||
import com.zcloud.primeport.api.ClosedAreaServiceI;
|
||||
import com.zcloud.primeport.dto.ClosedAreaAddCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaCountCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaPageQry;
|
||||
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
|
||||
|
|
@ -98,5 +99,11 @@ public class ClosedAreaController {
|
|||
closedAreaService.edit(closedAreaUpdateCmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("区域人员和车辆统计")
|
||||
@PostMapping("/count")
|
||||
public MultiResponse count(@RequestBody ClosedAreaCountCmd closedAreaCountCmd) {
|
||||
return closedAreaService.count(closedAreaCountCmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
package com.zcloud.primeport.command.convertor;
|
||||
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
* @Author dearLin
|
||||
* @Date 2026-03-19 10:27:50
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ClosedAreaCountCoConvertor {
|
||||
/**
|
||||
* @param closedAreaCountDOs
|
||||
* @return
|
||||
*/
|
||||
List<ClosedAreaCountCO> converDOsToCOs(List<ClosedAreaCountDO> closedAreaCountDOs);
|
||||
|
||||
ClosedAreaCountCO converDOToCO(ClosedAreaCountDO closedAreaCountDO);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package com.zcloud.primeport.command.query;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import com.zcloud.gbscommon.utils.Tools;
|
||||
import com.zcloud.primeport.command.convertor.ClosedAreaCoConvertor;
|
||||
import com.zcloud.primeport.command.convertor.ClosedAreaCountCoConvertor;
|
||||
import com.zcloud.primeport.dto.ClosedAreaCountCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaPageQry;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
|
||||
import com.zcloud.primeport.persistence.repository.ClosedAreaRepository;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author dearLin
|
||||
* @Date 2026-03-19 10:27:51
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ClosedAreaCountExe {
|
||||
private final ClosedAreaRepository closedAreaRepository;
|
||||
private final ClosedAreaCountCoConvertor closedAreaCountCoConvertor;
|
||||
|
||||
|
||||
/**
|
||||
* 分页
|
||||
*
|
||||
* @param cmd
|
||||
* @return
|
||||
*/
|
||||
public MultiResponse<ClosedAreaCountCO> execute(ClosedAreaCountCmd cmd) {
|
||||
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(cmd);
|
||||
// if (cmd.getCorpId() != null) {
|
||||
// params.put("corpId", cmd.getCorpId());
|
||||
// }else {
|
||||
// params.put("corpId", AuthContext.getTenantId());
|
||||
// }
|
||||
List<ClosedAreaCountDO> pageResponse = closedAreaRepository.listCount(params);
|
||||
|
||||
List<ClosedAreaCountCO> examCenterCOS = closedAreaCountCoConvertor.converDOsToCOs(pageResponse);
|
||||
for (ClosedAreaCountCO closedAreaCountCO : examCenterCOS) {
|
||||
closedAreaCountCO.setChildren(treeChildren(closedAreaCountCO.getId(), pageResponse));
|
||||
}
|
||||
return MultiResponse.of(examCenterCOS);
|
||||
}
|
||||
|
||||
private List<ClosedAreaCountCO> treeChildren(Long parentId, List<ClosedAreaCountDO> closedAreaDOS) {
|
||||
List<ClosedAreaCountCO> childList = new ArrayList<>();
|
||||
for (ClosedAreaCountDO closedAreaCountDO : closedAreaDOS) {
|
||||
//遍历所有节点,与上级传过来的父节点id比较
|
||||
if (parentId.equals(closedAreaCountDO.getParentId())) {
|
||||
childList.add(closedAreaCountCoConvertor.converDOToCO(closedAreaCountDO));
|
||||
}
|
||||
}
|
||||
//递归
|
||||
for (ClosedAreaCountCO route : childList) {
|
||||
route.setChildren(treeChildren(route.getId(), closedAreaDOS));
|
||||
}
|
||||
return childList.isEmpty() ? null : childList;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5,14 +5,17 @@ import com.zcloud.primeport.api.ClosedAreaServiceI;
|
|||
import com.zcloud.primeport.command.ClosedAreaAddExe;
|
||||
import com.zcloud.primeport.command.ClosedAreaRemoveExe;
|
||||
import com.zcloud.primeport.command.ClosedAreaUpdateExe;
|
||||
import com.zcloud.primeport.command.query.ClosedAreaCountExe;
|
||||
import com.zcloud.primeport.command.query.ClosedAreaQueryExe;
|
||||
import com.zcloud.primeport.dto.ClosedAreaAddCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaCountCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaPageQry;
|
||||
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -32,6 +35,7 @@ public class ClosedAreaServiceImpl implements ClosedAreaServiceI {
|
|||
private final ClosedAreaUpdateExe closedAreaUpdateExe;
|
||||
private final ClosedAreaRemoveExe closedAreaRemoveExe;
|
||||
private final ClosedAreaQueryExe closedAreaQueryExe;
|
||||
private final ClosedAreaCountExe closedAreaCountExe;
|
||||
|
||||
@Override
|
||||
public ClosedAreaCO queryById(Long id) {
|
||||
|
|
@ -56,6 +60,12 @@ public class ClosedAreaServiceImpl implements ClosedAreaServiceI {
|
|||
closedAreaUpdateExe.execute(closedAreaUpdateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MultiResponse<ClosedAreaCountCO> count(ClosedAreaCountCmd cmd) {
|
||||
return closedAreaCountExe.execute(cmd);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void remove(Long id) {
|
||||
closedAreaRemoveExe.execute(id);
|
||||
|
|
|
|||
|
|
@ -2,12 +2,14 @@ package com.zcloud.primeport.api;
|
|||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.zcloud.primeport.dto.ClosedAreaAddCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaCountCmd;
|
||||
import com.zcloud.primeport.dto.ClosedAreaPageQry;
|
||||
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
|
|
@ -23,6 +25,8 @@ public interface ClosedAreaServiceI {
|
|||
|
||||
void edit(ClosedAreaUpdateCmd cmd);
|
||||
|
||||
MultiResponse<ClosedAreaCountCO> count(ClosedAreaCountCmd cmd);
|
||||
|
||||
void remove(Long id);
|
||||
|
||||
void removeBatch(Long[] ids);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
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.NotNull;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
* @Author dearLin
|
||||
* @Date 2026-03-19 10:27:51
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ClosedAreaCountCmd extends Command {
|
||||
@ApiModelProperty(value = "公司id", name = "corpId", required = true)
|
||||
private Long corpId;
|
||||
|
||||
@ApiModelProperty(value = "封闭区域名称", name = "closedAreaName", required = true)
|
||||
private String closedAreaName;
|
||||
|
||||
@ApiModelProperty(value = "父节点ID", name = "parentId", required = true)
|
||||
private Long parentId;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.zcloud.primeport.dto.clientobject;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author dearLin
|
||||
* @Date 2026-03-19 10:27:50
|
||||
*/
|
||||
@Data
|
||||
public class ClosedAreaCountCO extends ClientObject {
|
||||
//主键
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Long id;
|
||||
//父id
|
||||
@ApiModelProperty(value = "父id")
|
||||
private Long parentId;
|
||||
@ApiModelProperty(value = "所属港区")
|
||||
private String hgAuthArea;
|
||||
@ApiModelProperty(value = "所属港区名称")
|
||||
private String hgAuthAreaName;
|
||||
//封闭区域名称
|
||||
@ApiModelProperty(value = "封闭区域名称")
|
||||
private String closedAreaName;
|
||||
//区域类型
|
||||
@ApiModelProperty(value = "区域类型")
|
||||
private String closedAreaType;
|
||||
//区域类型名称
|
||||
@ApiModelProperty(value = "区域类型名称")
|
||||
private String closedAreaTypeName;
|
||||
|
||||
@ApiModelProperty(value = "封闭区域数")
|
||||
private Integer totalAreaCount;
|
||||
@ApiModelProperty(value = "管辖单位数")
|
||||
private Integer totalCorpCount;
|
||||
@ApiModelProperty(value = "是否有子集,1有2没有")
|
||||
private Integer hasChild;
|
||||
|
||||
@ApiModelProperty(value = "人员数")
|
||||
private Integer personCount;
|
||||
@ApiModelProperty(value = "车辆数")
|
||||
private Integer carCount;
|
||||
|
||||
@ApiModelProperty
|
||||
private List<ClosedAreaCountCO> children;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package com.zcloud.primeport.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
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 dearLin
|
||||
* @Date 2026-03-19 10:27:50
|
||||
*/
|
||||
@Data
|
||||
@TableName("closed_area")
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ClosedAreaCountDO extends BaseDO {
|
||||
//父id
|
||||
@ApiModelProperty(value = "父id")
|
||||
private Long parentId;
|
||||
//封闭区域名称
|
||||
@ApiModelProperty(value = "所属港区")
|
||||
private String hgAuthArea;
|
||||
@ApiModelProperty(value = "所属港区名称")
|
||||
private String hgAuthAreaName;
|
||||
@ApiModelProperty(value = "封闭区域名称")
|
||||
private String closedAreaName;
|
||||
//区域类型
|
||||
@ApiModelProperty(value = "区域类型")
|
||||
private String closedAreaType;
|
||||
//区域类型名称
|
||||
@ApiModelProperty(value = "区域类型名称")
|
||||
private String closedAreaTypeName;
|
||||
//管辖单位名id
|
||||
@ApiModelProperty(value = "管辖单位名id")
|
||||
private Long jurisdictionalCorpId;
|
||||
//管辖单位名称
|
||||
@ApiModelProperty(value = "管辖单位名称")
|
||||
private String jurisdictionalCorpName;
|
||||
//区域经纬度
|
||||
@ApiModelProperty(value = "区域经纬度")
|
||||
private String location;
|
||||
|
||||
@ApiModelProperty(value = "人员数")
|
||||
@TableField(exist = false)
|
||||
private Integer personCount;
|
||||
@ApiModelProperty(value = "车辆数")
|
||||
@TableField(exist = false)
|
||||
private Integer carCount;
|
||||
}
|
||||
|
||||
|
|
@ -3,6 +3,7 @@ package com.zcloud.primeport.persistence.mapper;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jjb.saas.framework.datascope.annotation.DataScope;
|
||||
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
|
@ -23,6 +24,9 @@ import java.util.Map;
|
|||
)
|
||||
public interface ClosedAreaMapper extends BaseMapper<ClosedAreaDO> {
|
||||
|
||||
|
||||
List<ClosedAreaCountDO> listCount(@Param("params") Map<String,Object> params);
|
||||
|
||||
List<ClosedAreaDO> getCountByHgAuthArea();
|
||||
|
||||
IPage<ClosedAreaDO> listPage(IPage<ClosedAreaDO> iPage, @Param("params") Map<String, Object> params);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.zcloud.primeport.persistence.repository;
|
||||
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
|
|
@ -15,6 +16,8 @@ import java.util.Map;
|
|||
public interface ClosedAreaRepository extends BaseRepository<ClosedAreaDO> {
|
||||
PageResponse<ClosedAreaDO> listPage(Map<String,Object> params);
|
||||
|
||||
List<ClosedAreaCountDO> listCount(Map<String,Object> params);
|
||||
|
||||
List<ClosedAreaDO> getCountByHgAuthArea();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.zcloud.primeport.persistence.repository.impl;
|
||||
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
|
||||
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
|
||||
import com.zcloud.primeport.persistence.mapper.ClosedAreaMapper;
|
||||
import com.zcloud.primeport.persistence.repository.ClosedAreaRepository;
|
||||
|
|
@ -36,6 +37,11 @@ public class ClosedAreaRepositoryImpl extends BaseRepositoryImpl<ClosedAreaMappe
|
|||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClosedAreaCountDO> listCount(Map<String,Object> params) {
|
||||
return closedAreaMapper.listCount(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClosedAreaDO> getCountByHgAuthArea() {
|
||||
return closedAreaMapper.getCountByHgAuthArea();
|
||||
|
|
|
|||
|
|
@ -56,5 +56,51 @@
|
|||
ORDER BY
|
||||
c.id
|
||||
</select>
|
||||
|
||||
<select id="listCount" resultType="com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO">
|
||||
SELECT
|
||||
c.*,
|
||||
CASE WHEN child_cnt > 0 THEN 1 ELSE 2 END AS has_child,
|
||||
IFNULL(person_cnt, 0) AS person_count,
|
||||
IFNULL(car_cnt, 0) AS car_count
|
||||
FROM
|
||||
closed_area c
|
||||
LEFT JOIN (
|
||||
SELECT parent_id, COUNT(id) child_cnt
|
||||
FROM closed_area
|
||||
WHERE delete_enum = 'FALSE'
|
||||
GROUP BY parent_id
|
||||
) child ON c.id = child.parent_id
|
||||
-- 人员申请数量预统计
|
||||
LEFT JOIN (
|
||||
SELECT closed_area_id, COUNT(DISTINCT id) person_cnt
|
||||
FROM closed_area_person_apply
|
||||
WHERE delete_enum = 'FALSE'
|
||||
GROUP BY closed_area_id
|
||||
) cpa ON c.id = cpa.closed_area_id
|
||||
-- 车辆申请数量预统计
|
||||
LEFT JOIN (
|
||||
SELECT closed_area_id, COUNT(DISTINCT id) car_cnt
|
||||
FROM closed_area_car_apply
|
||||
WHERE delete_enum = 'FALSE'
|
||||
GROUP BY closed_area_id
|
||||
) cca ON c.id = cca.closed_area_id
|
||||
WHERE
|
||||
c.delete_enum = 'FALSE'
|
||||
<if test="params.corpId != null">
|
||||
AND c.tenant_id = #{params.corpId}
|
||||
</if>
|
||||
<if test="params.parentId != null">
|
||||
AND c.parent_id = #{params.parentId}
|
||||
</if>
|
||||
<if test="params.closedAreaName != null and params.closedAreaName != ''">
|
||||
AND C.closed_area_name LIKE CONCAT('%', #{params.closedAreaName}, '%')
|
||||
</if>
|
||||
GROUP BY
|
||||
c.id
|
||||
ORDER BY
|
||||
c.id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue