feat(enclosed-area): 实现封闭区域管理功能

- 新增封闭区域的增删改查接口及实现
- 支持分页查询和树形结构查询
- 添加区域使用数和子集数统计逻辑
- 实现区域关联口门区域的入出方向字段
- 完成前后端DTO及实体类定义
- 集成权限校验与数据验证逻辑
master
fangjiakai 2025-12-18 09:16:23 +08:00
parent 36d0e38a26
commit 646e7481c4
25 changed files with 953 additions and 2 deletions

View File

@ -0,0 +1,91 @@
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.EnclosedAreaServiceI;
import com.zcloud.primeport.dto.EnclosedAreaAddCmd;
import com.zcloud.primeport.dto.EnclosedAreaPageQry;
import com.zcloud.primeport.dto.EnclosedAreaUpdateCmd;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaCO;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaTreeCO;
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-12-12 16:49:31
*/
@Api(tags = "封闭区域")
@RequestMapping("/${application.gateway}/enclosedArea")
@RestController
@AllArgsConstructor
public class EnclosedAreaController {
private final EnclosedAreaServiceI enclosedAreaService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<EnclosedAreaCO> add(@Validated @RequestBody EnclosedAreaAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
cmd.setCorpinfoId(ssoUser.getTenantId());
cmd.setCorpinfoName(ssoUser.getTenantName());
return enclosedAreaService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<EnclosedAreaCO> page(@RequestBody EnclosedAreaPageQry qry) {
return enclosedAreaService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<EnclosedAreaCO> listAll() {
return MultiResponse.of(new ArrayList<EnclosedAreaCO>());
}
@ApiOperation("所有数据")
@GetMapping("/listAllTree")
public MultiResponse<EnclosedAreaTreeCO> listAllTree() {
return MultiResponse.of(enclosedAreaService.listAllTree());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<EnclosedAreaCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(enclosedAreaService.queryById(id));
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
enclosedAreaService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
enclosedAreaService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody EnclosedAreaUpdateCmd enclosedAreaUpdateCmd) {
enclosedAreaService.edit(enclosedAreaUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -79,7 +79,6 @@ public class MkmjAreaController {
mkmjAreaService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody MkmjAreaUpdateCmd mkmjAreaUpdateCmd) {

View File

@ -0,0 +1,40 @@
package com.zcloud.primeport.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.primeport.domain.gateway.EnclosedAreaGateway;
import com.zcloud.primeport.domain.model.EnclosedAreaE;
import com.zcloud.primeport.dto.EnclosedAreaAddCmd;
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-12-12 16:49:30
*/
@Component
@AllArgsConstructor
public class EnclosedAreaAddExe {
private final EnclosedAreaGateway enclosedAreaGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(EnclosedAreaAddCmd cmd) {
EnclosedAreaE enclosedAreaE = new EnclosedAreaE();
BeanUtils.copyProperties(cmd, enclosedAreaE);
boolean res = false;
try {
res = enclosedAreaGateway.add(enclosedAreaE);
} 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.EnclosedAreaGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Component
@AllArgsConstructor
public class EnclosedAreaRemoveExe {
private final EnclosedAreaGateway enclosedAreaGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = enclosedAreaGateway.deletedEnclosedAreaById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = enclosedAreaGateway.deletedEnclosedAreaByIds(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.EnclosedAreaGateway;
import com.zcloud.primeport.domain.model.EnclosedAreaE;
import com.zcloud.primeport.dto.EnclosedAreaUpdateCmd;
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-12-12 16:49:32
*/
@Component
@AllArgsConstructor
public class EnclosedAreaUpdateExe {
private final EnclosedAreaGateway enclosedAreaGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(EnclosedAreaUpdateCmd enclosedAreaUpdateCmd) {
EnclosedAreaE enclosedAreaE = new EnclosedAreaE();
BeanUtils.copyProperties(enclosedAreaUpdateCmd, enclosedAreaE);
boolean res = enclosedAreaGateway.update(enclosedAreaE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,31 @@
package com.zcloud.primeport.command.convertor;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaCO;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaTreeCO;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Mapper(componentModel = "spring")
public interface EnclosedAreaCoConvertor {
/**
* @param enclosedAreaDOs
* @return
*/
List<EnclosedAreaCO> converDOsToCOs(List<EnclosedAreaDO> enclosedAreaDOs);
EnclosedAreaCO converDOToCO(EnclosedAreaDO enclosedAreaDO);
List<EnclosedAreaTreeCO> converDOToTreeCOs(List<EnclosedAreaDO> enclosedAreaDOs);
EnclosedAreaTreeCO converDOToTreeCO(EnclosedAreaDO enclosedAreaDO);
}

View File

@ -0,0 +1,85 @@
package com.zcloud.primeport.command.query;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.primeport.command.convertor.EnclosedAreaCoConvertor;
import com.zcloud.primeport.dto.EnclosedAreaPageQry;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaCO;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaTreeCO;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import com.zcloud.primeport.persistence.dataobject.MkmjAreaDO;
import com.zcloud.primeport.persistence.repository.EnclosedAreaRepository;
import com.zcloud.primeport.persistence.repository.MkmjAreaRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Component
@AllArgsConstructor
public class EnclosedAreaQueryExe {
private final EnclosedAreaRepository enclosedAreaRepository;
private final EnclosedAreaCoConvertor enclosedAreaCoConvertor;
private final MkmjAreaRepository mkmjAreaRepository;
/**
* id
*
* @param id
* @return
*/
public EnclosedAreaCO queryById(Long id) {
return enclosedAreaCoConvertor.converDOToCO(enclosedAreaRepository.getById(id));
}
/**
*
*
* @param enclosedAreaPageQry
* @return
*/
public PageResponse<EnclosedAreaCO> execute(EnclosedAreaPageQry enclosedAreaPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(enclosedAreaPageQry);
PageResponse<EnclosedAreaDO> pageResponse = enclosedAreaRepository.listPage(params);
List<EnclosedAreaCO> enclosedAreaCOS = enclosedAreaCoConvertor.converDOsToCOs(pageResponse.getData());
if(ObjectUtil.isNotEmpty(enclosedAreaCOS)){
List<Long> ids = enclosedAreaCOS.stream().map(EnclosedAreaCO::getId).collect(Collectors.toList());
List<MkmjAreaDO> mkmjAreaDOs = mkmjAreaRepository.list(new LambdaQueryWrapper<MkmjAreaDO>()
.eq(MkmjAreaDO::getDeleteEnum,"FALSE")
.or(w -> w.in(MkmjAreaDO::getInDirectionArea, ids)
.in(MkmjAreaDO::getOutDirectionArea, ids)));
List<EnclosedAreaDO> children = enclosedAreaRepository.list(new QueryWrapper<EnclosedAreaDO>().lambda()
.eq(EnclosedAreaDO::getDeleteEnum, "FALSE")
.in(EnclosedAreaDO::getParentId, ids));
enclosedAreaCOS.forEach(enclosedAreaCO -> {
enclosedAreaCO.setUseCount(mkmjAreaDOs.stream().filter(mkmjAreaDO -> mkmjAreaDO.getInDirectionArea().equals(enclosedAreaCO.getId()) || mkmjAreaDO.getOutDirectionArea().equals(enclosedAreaCO.getId())).count());
enclosedAreaCO.setChildCount(children.stream().filter(child -> child.getParentId().equals(enclosedAreaCO.getId())).count());
});
}
return PageResponse.of(enclosedAreaCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public List<EnclosedAreaTreeCO> listAllTree() {
LambdaQueryWrapper<EnclosedAreaDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EnclosedAreaDO::getDeleteEnum, "FALSE");
List<EnclosedAreaDO> enclosedAreaDOs = enclosedAreaRepository.list(queryWrapper);
List<EnclosedAreaTreeCO> enclosedAreaTreeCOS = enclosedAreaCoConvertor.converDOToTreeCOs(enclosedAreaDOs);
return Tools.buildEntityTree(enclosedAreaTreeCOS, "id", "parentId", "children");
}
}

View File

@ -0,0 +1,72 @@
package com.zcloud.primeport.service;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.api.EnclosedAreaServiceI;
import com.zcloud.primeport.command.EnclosedAreaAddExe;
import com.zcloud.primeport.command.EnclosedAreaRemoveExe;
import com.zcloud.primeport.command.EnclosedAreaUpdateExe;
import com.zcloud.primeport.command.query.EnclosedAreaQueryExe;
import com.zcloud.primeport.dto.EnclosedAreaAddCmd;
import com.zcloud.primeport.dto.EnclosedAreaPageQry;
import com.zcloud.primeport.dto.EnclosedAreaUpdateCmd;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaCO;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaTreeCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* web-app
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:32
*/
@Service
@AllArgsConstructor
public class EnclosedAreaServiceImpl implements EnclosedAreaServiceI {
private final EnclosedAreaAddExe enclosedAreaAddExe;
private final EnclosedAreaUpdateExe enclosedAreaUpdateExe;
private final EnclosedAreaRemoveExe enclosedAreaRemoveExe;
private final EnclosedAreaQueryExe enclosedAreaQueryExe;
@Override
public EnclosedAreaCO queryById(Long id) {
return enclosedAreaQueryExe.queryById(id);
}
@Override
public PageResponse<EnclosedAreaCO> listPage(EnclosedAreaPageQry qry) {
return enclosedAreaQueryExe.execute(qry);
}
@Override
public SingleResponse add(EnclosedAreaAddCmd cmd) {
enclosedAreaAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(EnclosedAreaUpdateCmd enclosedAreaUpdateCmd) {
enclosedAreaUpdateExe.execute(enclosedAreaUpdateCmd);
}
@Override
public void remove(Long id) {
enclosedAreaRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
enclosedAreaRemoveExe.execute(ids);
}
@Override
public List<EnclosedAreaTreeCO> listAllTree(){
return enclosedAreaQueryExe.listAllTree();
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.primeport.api;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.EnclosedAreaAddCmd;
import com.zcloud.primeport.dto.EnclosedAreaPageQry;
import com.zcloud.primeport.dto.EnclosedAreaUpdateCmd;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaCO;
import com.zcloud.primeport.dto.clientobject.EnclosedAreaTreeCO;
import java.util.List;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
public interface EnclosedAreaServiceI {
EnclosedAreaCO queryById(Long id);
PageResponse<EnclosedAreaCO> listPage(EnclosedAreaPageQry qry);
SingleResponse<EnclosedAreaCO> add(EnclosedAreaAddCmd cmd);
void edit(EnclosedAreaUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
List<EnclosedAreaTreeCO> listAllTree();
}

View File

@ -0,0 +1,61 @@
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-12-12 16:49:30
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EnclosedAreaAddCmd extends Command {
@ApiModelProperty(value = "父级id", name = "parentId", required = true)
@NotNull(message = "父级id不能为空")
private Long parentId;
@ApiModelProperty(value = "父级名称", name = "parentName", required = true)
@NotEmpty(message = "父级名称不能为空")
private String parentName;
@ApiModelProperty(value = "封闭区域名称", name = "name", required = true)
@NotEmpty(message = "封闭区域名称不能为空")
private String name;
@ApiModelProperty(value = "封闭区域类型", name = "type", required = true)
@NotEmpty(message = "封闭区域类型不能为空")
private String type;
@ApiModelProperty(value = "封闭区域类型", name = "typeName", required = true)
@NotEmpty(message = "封闭区域类型不能为空")
private String typeName;
@ApiModelProperty(value = "管辖单位", name = "corpinfoId", required = true)
@NotNull(message = "管辖单位不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "管辖单位", name = "corpinfoName", required = true)
@NotEmpty(message = "管辖单位不能为空")
private String corpinfoName;
@ApiModelProperty(value = "经度", name = "longitude", required = true)
@NotEmpty(message = "经度不能为空")
private String longitude;
@ApiModelProperty(value = "纬度", name = "latitude", required = true)
@NotEmpty(message = "纬度不能为空")
private String latitude;
}

View File

@ -0,0 +1,31 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Data
public class EnclosedAreaPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private Long eqParentId;
private String likeName;
private String eqType;
private Long eqCorpinfoId;
}

View File

@ -0,0 +1,55 @@
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-12-12 16:49:32
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EnclosedAreaUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "父级id", name = "parentId", required = true)
@NotNull(message = "父级id不能为空")
private Long parentId;
@ApiModelProperty(value = "父级名称", name = "parentName", required = true)
@NotEmpty(message = "父级名称不能为空")
private String parentName;
@ApiModelProperty(value = "封闭区域名称", name = "name", required = true)
@NotEmpty(message = "封闭区域名称不能为空")
private String name;
@ApiModelProperty(value = "封闭区域类型", name = "type", required = true)
@NotEmpty(message = "封闭区域类型不能为空")
private String type;
@ApiModelProperty(value = "封闭区域类型", name = "typeName", required = true)
@NotEmpty(message = "封闭区域类型不能为空")
private String typeName;
@ApiModelProperty(value = "管辖单位", name = "corpinfoId", required = true)
@NotNull(message = "管辖单位不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "管辖单位", name = "corpinfoName", required = true)
@NotEmpty(message = "管辖单位不能为空")
private String corpinfoName;
@ApiModelProperty(value = "经度", name = "longitude", required = true)
@NotEmpty(message = "经度不能为空")
private String longitude;
@ApiModelProperty(value = "纬度", name = "latitude", required = true)
@NotEmpty(message = "纬度不能为空")
private String latitude;
}

View File

@ -0,0 +1,90 @@
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-12-12 16:49:31
*/
@Data
public class EnclosedAreaCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//父级id
@ApiModelProperty(value = "父级id")
private Long parentId;
//父级名称
@ApiModelProperty(value = "父级名称")
private String parentName;
//封闭区域名称
@ApiModelProperty(value = "封闭区域名称")
private String name;
//封闭区域类型
@ApiModelProperty(value = "封闭区域类型")
private String type;
//封闭区域类型
@ApiModelProperty(value = "封闭区域类型")
private String typeName;
//管辖单位
@ApiModelProperty(value = "管辖单位")
private Long corpinfoId;
//管辖单位
@ApiModelProperty(value = "管辖单位")
private String corpinfoName;
//经度
@ApiModelProperty(value = "经度")
private String longitude;
//纬度
@ApiModelProperty(value = "纬度")
private String latitude;
// 子集数
@ApiModelProperty(value = "子集数")
private Long childCount;
// 使用数
@ApiModelProperty(value = "使用数")
private Long useCount;
//删除标识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,26 @@
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 fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Data
public class EnclosedAreaTreeCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//封闭区域名称
@ApiModelProperty(value = "封闭区域名称")
private String name;
@ApiModelProperty(value = "子节点")
private List<EnclosedAreaTreeCO> children;
}

View File

@ -40,6 +40,12 @@ public class MkmjAreaCO extends ClientObject {
//区域状态 0-停用 1-正常 2-暂时关闭
@ApiModelProperty(value = "区域状态 0-停用 1-正常 2-暂时关闭")
private Integer areaStatus;
//入方向区域
@ApiModelProperty(value = "入方向区域")
private Long inDirectionArea;
//出方向区域
@ApiModelProperty(value = "出方向区域")
private Long outDirectionArea;
//企业id
@ApiModelProperty(value = "企业id")
private Long corpinfoId;

View File

@ -0,0 +1,30 @@
package com.zcloud.primeport.domain.gateway;
import com.zcloud.primeport.domain.model.EnclosedAreaE;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
public interface EnclosedAreaGateway {
/**
*
*/
Boolean add(EnclosedAreaE enclosedAreaE);
/**
*
*/
Boolean update(EnclosedAreaE enclosedAreaE);
/**
*
*/
Boolean deletedEnclosedAreaById(Long id);
Boolean deletedEnclosedAreaByIds(Long[] id);
}

View File

@ -0,0 +1,33 @@
package com.zcloud.primeport.domain.model;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
/**
* web-domain
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Data
public class EnclosedAreaE extends BaseE {
//父级id
private Long parentId;
//父级名称
private String parentName;
//封闭区域名称
private String name;
//封闭区域类型
private String type;
//封闭区域类型
private String typeName;
//管辖单位
private Long corpinfoId;
//管辖单位
private String corpinfoName;
//经度
private String longitude;
//纬度
private String latitude;
}

View File

@ -28,6 +28,10 @@ public class MkmjAreaE extends BaseE {
private Integer areaType;
//区域状态 0-停用 1-正常 2-暂时关闭
private Integer areaStatus;
//入方向区域
private Long inDirectionArea;
//出方向区域
private Long outDirectionArea;
//经度
private String longitude;
//纬度

View File

@ -0,0 +1,51 @@
package com.zcloud.primeport.gatewayimpl;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.primeport.domain.gateway.EnclosedAreaGateway;
import com.zcloud.primeport.domain.model.EnclosedAreaE;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import com.zcloud.primeport.persistence.repository.EnclosedAreaRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Service
@AllArgsConstructor
public class EnclosedAreaGatewayImpl implements EnclosedAreaGateway {
private final EnclosedAreaRepository enclosedAreaRepository;
@Override
public Boolean add(EnclosedAreaE enclosedAreaE) {
EnclosedAreaDO d = new EnclosedAreaDO();
BeanUtils.copyProperties(enclosedAreaE, d);
enclosedAreaRepository.save(d);
return true;
}
@Override
public Boolean update(EnclosedAreaE enclosedAreaE) {
EnclosedAreaDO d = new EnclosedAreaDO();
BeanUtils.copyProperties(enclosedAreaE, d);
enclosedAreaRepository.updateById(d);
return true;
}
@Override
public Boolean deletedEnclosedAreaById(Long id) {
return enclosedAreaRepository.removeById(id);
}
@Override
public Boolean deletedEnclosedAreaByIds(Long[] ids) {
return enclosedAreaRepository.removeByIds(Collections.singletonList(ids));
}
}

View File

@ -0,0 +1,50 @@
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-12-12 16:49:31
*/
@Data
@TableName("enclosed_area")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EnclosedAreaDO extends BaseDO {
//父级id
@ApiModelProperty(value = "父级id")
private Long parentId;
//父级名称
@ApiModelProperty(value = "父级名称")
private String parentName;
//封闭区域名称
@ApiModelProperty(value = "封闭区域名称")
private String name;
//封闭区域类型
@ApiModelProperty(value = "封闭区域类型")
private String type;
//封闭区域类型
@ApiModelProperty(value = "封闭区域类型")
private String typeName;
//管辖单位
@ApiModelProperty(value = "管辖单位")
private Long corpinfoId;
//管辖单位
@ApiModelProperty(value = "管辖单位")
private String corpinfoName;
//经度
@ApiModelProperty(value = "经度")
private String longitude;
//纬度
@ApiModelProperty(value = "纬度")
private String latitude;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -22,7 +23,7 @@ public class MkmjAreaDO extends BaseDO {
@ApiModelProperty(value = "业务主键id")
private String areaId;
//区域名称
@ApiModelProperty(value = "区域名称")
@ApiModelProperty(value = "口门名称")
private String areaName;
//区域范围
@ApiModelProperty(value = "区域范围")
@ -42,6 +43,12 @@ public class MkmjAreaDO extends BaseDO {
//区域状态 0-停用 1-正常 2-暂时关闭
@ApiModelProperty(value = "区域状态 0-停用 1-正常 2-暂时关闭")
private Integer areaStatus;
//入方向区域
@ApiModelProperty(value = "入方向区域")
private Long inDirectionArea;
//出方向区域
@ApiModelProperty(value = "出方向区域")
private Long outDirectionArea;
//企业id
@ApiModelProperty(value = "企业id")
private Long corpinfoId;

View File

@ -0,0 +1,17 @@
package com.zcloud.primeport.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import org.apache.ibatis.annotations.Mapper;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Mapper
public interface EnclosedAreaMapper extends BaseMapper<EnclosedAreaDO> {
}

View File

@ -0,0 +1,18 @@
package com.zcloud.primeport.persistence.repository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
public interface EnclosedAreaRepository extends BaseRepository<EnclosedAreaDO> {
PageResponse<EnclosedAreaDO> listPage(Map<String, Object> params);
}

View File

@ -0,0 +1,39 @@
package com.zcloud.primeport.persistence.repository.impl;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.zcloud.primeport.persistence.dataobject.EnclosedAreaDO;
import com.zcloud.primeport.persistence.mapper.EnclosedAreaMapper;
import com.zcloud.primeport.persistence.repository.EnclosedAreaRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* web-infrastructure
*
* @Author fangjiakai
* @Date 2025-12-12 16:49:31
*/
@Service
@RequiredArgsConstructor
public class EnclosedAreaRepositoryImpl extends BaseRepositoryImpl<EnclosedAreaMapper, EnclosedAreaDO> implements EnclosedAreaRepository {
private final EnclosedAreaMapper enclosedAreaMapper;
@Override
public PageResponse<EnclosedAreaDO> listPage(Map<String, Object> params) {
IPage<EnclosedAreaDO> iPage = new Query<EnclosedAreaDO>().getPage(params);
QueryWrapper<EnclosedAreaDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<EnclosedAreaDO> result = enclosedAreaMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
}

View File

@ -0,0 +1,8 @@
<?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.EnclosedAreaMapper">
</mapper>