feat(enclosed-area): 实现封闭区域管理功能
- 新增封闭区域的增删改查接口及实现 - 支持分页查询和树形结构查询 - 添加区域使用数和子集数统计逻辑 - 实现区域关联口门区域的入出方向字段 - 完成前后端DTO及实体类定义 - 集成权限校验与数据验证逻辑master
parent
36d0e38a26
commit
646e7481c4
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -79,7 +79,6 @@ public class MkmjAreaController {
|
|||
mkmjAreaService.removeBatch(ids);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("修改")
|
||||
@PutMapping("/edit")
|
||||
public SingleResponse edit(@Validated @RequestBody MkmjAreaUpdateCmd mkmjAreaUpdateCmd) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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("修改失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private Long eqParentId;
|
||||
private String likeName;
|
||||
private String eqType;
|
||||
private Long eqCorpinfoId;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
//纬度
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue