diff --git a/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaController.java b/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaController.java index f28e530..5a6d895 100644 --- a/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaController.java +++ b/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaController.java @@ -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); + } } diff --git a/web-app/src/main/java/com/zcloud/primeport/command/convertor/ClosedAreaCountCoConvertor.java b/web-app/src/main/java/com/zcloud/primeport/command/convertor/ClosedAreaCountCoConvertor.java new file mode 100644 index 0000000..9b4172c --- /dev/null +++ b/web-app/src/main/java/com/zcloud/primeport/command/convertor/ClosedAreaCountCoConvertor.java @@ -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 converDOsToCOs(List closedAreaCountDOs); + + ClosedAreaCountCO converDOToCO(ClosedAreaCountDO closedAreaCountDO); +} + diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCountExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCountExe.java new file mode 100644 index 0000000..b529bd7 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCountExe.java @@ -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 execute(ClosedAreaCountCmd cmd) { + + Map params = PageQueryHelper.toHashMap(cmd); +// if (cmd.getCorpId() != null) { +// params.put("corpId", cmd.getCorpId()); +// }else { +// params.put("corpId", AuthContext.getTenantId()); +// } + List pageResponse = closedAreaRepository.listCount(params); + + List examCenterCOS = closedAreaCountCoConvertor.converDOsToCOs(pageResponse); + for (ClosedAreaCountCO closedAreaCountCO : examCenterCOS) { + closedAreaCountCO.setChildren(treeChildren(closedAreaCountCO.getId(), pageResponse)); + } + return MultiResponse.of(examCenterCOS); + } + + private List treeChildren(Long parentId, List closedAreaDOS) { + List 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; + } +} + diff --git a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java index c53f961..c391400 100644 --- a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java @@ -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 count(ClosedAreaCountCmd cmd) { + return closedAreaCountExe.execute(cmd); + } + + @Override public void remove(Long id) { closedAreaRemoveExe.execute(id); diff --git a/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaServiceI.java b/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaServiceI.java index e4f224a..0d333ca 100644 --- a/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaServiceI.java +++ b/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaServiceI.java @@ -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 count(ClosedAreaCountCmd cmd); + void remove(Long id); void removeBatch(Long[] ids); diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCountCmd.java b/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCountCmd.java new file mode 100644 index 0000000..01e3738 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCountCmd.java @@ -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; +} + diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/ClosedAreaCountCO.java b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/ClosedAreaCountCO.java new file mode 100644 index 0000000..39519ca --- /dev/null +++ b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/ClosedAreaCountCO.java @@ -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 children; +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/ClosedAreaCountDO.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/ClosedAreaCountDO.java new file mode 100644 index 0000000..20c69b4 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/ClosedAreaCountDO.java @@ -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; +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaMapper.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaMapper.java index 04cf320..80ea40b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaMapper.java @@ -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 { + + List listCount(@Param("params") Map params); + List getCountByHgAuthArea(); IPage listPage(IPage iPage, @Param("params") Map params); diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaRepository.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaRepository.java index 184f9d3..3cf9df1 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaRepository.java @@ -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 { PageResponse listPage(Map params); + List listCount(Map params); + List getCountByHgAuthArea(); } diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaRepositoryImpl.java index a47b24d..c18917e 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaRepositoryImpl.java @@ -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 listCount(Map params) { + return closedAreaMapper.listCount(params); + } + @Override public List getCountByHgAuthArea() { return closedAreaMapper.getCountByHgAuthArea(); diff --git a/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml b/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml index bb28deb..8800ef2 100644 --- a/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml @@ -56,5 +56,51 @@ ORDER BY c.id + + +