唐耀东
2022-05-12 d44b855ffdda21a5abf8e00bc3381310882f9375
提交代码
10个文件已修改
24个文件已添加
2004 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/BsBuildingController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/BsOrganizationController.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgIpcController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgNvrController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/BsOrganization.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgConstructionBatch.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgIpc.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgNvr.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgReserveIp.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/BsOrganizationBo.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgConstructionBatchBo.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgIpcBo.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgNvrBo.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgReserveIpBo.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/BsOrganizationVo.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgConstructionBatchVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgIpcVo.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgNvrVo.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgReserveIpVo.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/BsOrganizationMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/BsSchoolMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgIpcMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgNvrMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/IBsOrganizationService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgIpcService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgNvrService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/BsOrganizationServiceImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgConstructionBatchServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgIpcServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgNvrServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgReserveIpServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/resources/mapper/oa/BsOrganizationMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/resources/mapper/oa/SgIpcMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-oa/src/main/resources/mapper/oa/SgNvrMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/BsBuildingController.java
@@ -69,7 +69,7 @@
     * 获取建筑单元详细信息
     */
    @ApiOperation("获取建筑单元详细信息")
    @PreAuthorize("@ss.hasPermi('oa:building:query')")
//    @PreAuthorize("@ss.hasPermi('oa:building:query')")
    @GetMapping("/{id}")
    public AjaxResult<BsBuildingVo> getInfo(@ApiParam("主键")
                                                  @NotNull(message = "主键不能为空")
@@ -81,7 +81,7 @@
     * 新增建筑单元
     */
    @ApiOperation("新增建筑单元")
    @PreAuthorize("@ss.hasPermi('oa:building:add')")
//    @PreAuthorize("@ss.hasPermi('oa:building:add')")
    @Log(title = "建筑单元", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
@@ -93,7 +93,7 @@
     * 修改建筑单元
     */
    @ApiOperation("修改建筑单元")
    @PreAuthorize("@ss.hasPermi('oa:building:edit')")
//    @PreAuthorize("@ss.hasPermi('oa:building:edit')")
    @Log(title = "建筑单元", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
@@ -105,7 +105,7 @@
     * 删除建筑单元
     */
    @ApiOperation("删除建筑单元")
    @PreAuthorize("@ss.hasPermi('oa:building:remove')")
//    @PreAuthorize("@ss.hasPermi('oa:building:remove')")
    @Log(title = "建筑单元" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult<Void> remove(@ApiParam("主键串")
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/BsOrganizationController.java
New file
@@ -0,0 +1,116 @@
package com.ruoyi.web.controller.oa;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.BsOrganizationVo;
import com.ruoyi.oa.domain.bo.BsOrganizationBo;
import com.ruoyi.oa.service.IBsOrganizationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiOperation;
/**
 * 高校组织机构Controller
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Validated
@Api(value = "高校组织机构控制器", tags = {"高校组织机构管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/oa/organization")
public class BsOrganizationController extends BaseController {
    private final IBsOrganizationService iBsOrganizationService;
    /**
     * 查询高校组织机构列表
     */
    @ApiOperation("查询高校组织机构列表")
//    @PreAuthorize("@ss.hasPermi('oa:organization:list')")
    @GetMapping("/list")
    public AjaxResult<List<BsOrganizationVo>> list(@Validated(QueryGroup.class) BsOrganizationBo bo) {
        List<BsOrganizationVo> list = iBsOrganizationService.queryList(bo);
        return AjaxResult.success(list);
    }
    /**
     * 导出高校组织机构列表
     */
    @ApiOperation("导出高校组织机构列表")
//    @PreAuthorize("@ss.hasPermi('oa:organization:export')")
    @Log(title = "高校组织机构", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public void export(@Validated BsOrganizationBo bo, HttpServletResponse response) {
        List<BsOrganizationVo> list = iBsOrganizationService.queryList(bo);
        ExcelUtil.exportExcel(list, "高校组织机构", BsOrganizationVo.class, response);
    }
    /**
     * 获取高校组织机构详细信息
     */
    @ApiOperation("获取高校组织机构详细信息")
//    @PreAuthorize("@ss.hasPermi('oa:organization:query')")
    @GetMapping("/{id}")
    public AjaxResult<BsOrganizationVo> getInfo(@ApiParam("主键")
                                                  @NotNull(message = "主键不能为空")
                                                  @PathVariable("id") Long id) {
        return AjaxResult.success(iBsOrganizationService.queryById(id));
    }
    /**
     * 新增高校组织机构
     */
    @ApiOperation("新增高校组织机构")
//    @PreAuthorize("@ss.hasPermi('oa:organization:add')")
    @Log(title = "高校组织机构", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody BsOrganizationBo bo) {
        return toAjax(iBsOrganizationService.insertByBo(bo) ? 1 : 0);
    }
    /**
     * 修改高校组织机构
     */
    @ApiOperation("修改高校组织机构")
//    @PreAuthorize("@ss.hasPermi('oa:organization:edit')")
    @Log(title = "高校组织机构", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody BsOrganizationBo bo) {
        return toAjax(iBsOrganizationService.updateByBo(bo) ? 1 : 0);
    }
    /**
     * 删除高校组织机构
     */
    @ApiOperation("删除高校组织机构")
//    @PreAuthorize("@ss.hasPermi('oa:organization:remove')")
    @Log(title = "高校组织机构" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult<Void> remove(@ApiParam("主键串")
                                       @NotEmpty(message = "主键不能为空")
                                       @PathVariable Long[] ids) {
        return toAjax(iBsOrganizationService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgIpcController.java
New file
@@ -0,0 +1,118 @@
package com.ruoyi.web.controller.oa;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.common.annotation.DataDictClass;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.SgIpcVo;
import com.ruoyi.oa.domain.bo.SgIpcBo;
import com.ruoyi.oa.service.ISgIpcService;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiOperation;
/**
 * ipc设备Controller
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Validated
@Api(value = "ipc设备控制器", tags = {"ipc设备管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/oa/ipc")
public class SgIpcController extends BaseController {
    private final ISgIpcService iSgIpcService;
    /**
     * 查询ipc设备列表
     */
    @DataDictClass
    @ApiOperation("查询ipc设备列表")
    @PreAuthorize("@ss.hasPermi('oa:ipc:list')")
    @GetMapping("/list")
    public TableDataInfo<SgIpcVo> list(@Validated(QueryGroup.class) SgIpcBo bo) {
        return iSgIpcService.queryPageList(bo);
    }
    /**
     * 导出ipc设备列表
     */
    @ApiOperation("导出ipc设备列表")
    @PreAuthorize("@ss.hasPermi('oa:ipc:export')")
    @Log(title = "ipc设备", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public void export(@Validated SgIpcBo bo, HttpServletResponse response) {
        List<SgIpcVo> list = iSgIpcService.queryList(bo);
        ExcelUtil.exportExcel(list, "ipc设备", SgIpcVo.class, response);
    }
    /**
     * 获取ipc设备详细信息
     */
    @ApiOperation("获取ipc设备详细信息")
    @PreAuthorize("@ss.hasPermi('oa:ipc:query')")
    @GetMapping("/{id}")
    public AjaxResult<SgIpcVo> getInfo(@ApiParam("主键")
                                                  @NotNull(message = "主键不能为空")
                                                  @PathVariable("id") Long id) {
        return AjaxResult.success(iSgIpcService.queryById(id));
    }
    /**
     * 新增ipc设备
     */
    @ApiOperation("新增ipc设备")
    @PreAuthorize("@ss.hasPermi('oa:ipc:add')")
    @Log(title = "ipc设备", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody SgIpcBo bo) {
        return toAjax(iSgIpcService.insertByBo(bo) ? 1 : 0);
    }
    /**
     * 修改ipc设备
     */
    @ApiOperation("修改ipc设备")
    @PreAuthorize("@ss.hasPermi('oa:ipc:edit')")
    @Log(title = "ipc设备", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody SgIpcBo bo) {
        return toAjax(iSgIpcService.updateByBo(bo) ? 1 : 0);
    }
    /**
     * 删除ipc设备
     */
    @ApiOperation("删除ipc设备")
    @PreAuthorize("@ss.hasPermi('oa:ipc:remove')")
    @Log(title = "ipc设备" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult<Void> remove(@ApiParam("主键串")
                                       @NotEmpty(message = "主键不能为空")
                                       @PathVariable Long[] ids) {
        return toAjax(iSgIpcService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgNvrController.java
New file
@@ -0,0 +1,118 @@
package com.ruoyi.web.controller.oa;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.common.annotation.DataDictClass;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.SgNvrVo;
import com.ruoyi.oa.domain.bo.SgNvrBo;
import com.ruoyi.oa.service.ISgNvrService;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiOperation;
/**
 * NVR设备Controller
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Validated
@Api(value = "NVR设备控制器", tags = {"NVR设备管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/oa/nvr")
public class SgNvrController extends BaseController {
    private final ISgNvrService iSgNvrService;
    /**
     * 查询NVR设备列表
     */
    @DataDictClass
    @ApiOperation("查询NVR设备列表")
    @PreAuthorize("@ss.hasPermi('oa:nvr:list')")
    @GetMapping("/list")
    public TableDataInfo<SgNvrVo> list(@Validated(QueryGroup.class) SgNvrBo bo) {
        return iSgNvrService.queryPageList(bo);
    }
    /**
     * 导出NVR设备列表
     */
    @ApiOperation("导出NVR设备列表")
    @PreAuthorize("@ss.hasPermi('oa:nvr:export')")
    @Log(title = "NVR设备", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public void export(@Validated SgNvrBo bo, HttpServletResponse response) {
        List<SgNvrVo> list = iSgNvrService.queryList(bo);
        ExcelUtil.exportExcel(list, "NVR设备", SgNvrVo.class, response);
    }
    /**
     * 获取NVR设备详细信息
     */
    @ApiOperation("获取NVR设备详细信息")
    @PreAuthorize("@ss.hasPermi('oa:nvr:query')")
    @GetMapping("/{id}")
    public AjaxResult<SgNvrVo> getInfo(@ApiParam("主键")
                                                  @NotNull(message = "主键不能为空")
                                                  @PathVariable("id") Long id) {
        return AjaxResult.success(iSgNvrService.queryById(id));
    }
    /**
     * 新增NVR设备
     */
    @ApiOperation("新增NVR设备")
    @PreAuthorize("@ss.hasPermi('oa:nvr:add')")
    @Log(title = "NVR设备", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody SgNvrBo bo) {
        return toAjax(iSgNvrService.insertByBo(bo) ? 1 : 0);
    }
    /**
     * 修改NVR设备
     */
    @ApiOperation("修改NVR设备")
    @PreAuthorize("@ss.hasPermi('oa:nvr:edit')")
    @Log(title = "NVR设备", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody SgNvrBo bo) {
        return toAjax(iSgNvrService.updateByBo(bo) ? 1 : 0);
    }
    /**
     * 删除NVR设备
     */
    @ApiOperation("删除NVR设备")
    @PreAuthorize("@ss.hasPermi('oa:nvr:remove')")
    @Log(title = "NVR设备" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult<Void> remove(@ApiParam("主键串")
                                       @NotEmpty(message = "主键不能为空")
                                       @PathVariable Long[] ids) {
        return toAjax(iSgNvrService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
    }
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/BsOrganization.java
New file
@@ -0,0 +1,61 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.ruoyi.common.core.domain.TreeEntity;
/**
 * 高校组织机构对象 bs_organization
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@Accessors(chain = true)
@TableName("bs_organization")
public class BsOrganization extends TreeEntity {
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 机构编号
     */
    private String code;
    /**
     * 机构名称
     */
    private String name;
    /**
     * 详细名称
     */
    private String detailedName;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 祖级列表
     */
    private String ancestors;
    /**
     * 显示顺序
     */
    private Integer orderNum;
    /**
     *
     */
    @TableLogic
    private String delFlag;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgConstructionBatch.java
@@ -26,10 +26,14 @@
    private static final long serialVersionUID=1L;
    /**
     *
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 施工批次
     */
@@ -55,7 +59,7 @@
     */
    private String remarks;
    /**
     *
     *
     */
    @TableLogic
    private String delFlag;
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgIpc.java
New file
@@ -0,0 +1,89 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * ipc设备对象 sg_ipc
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@Accessors(chain = true)
@TableName("sg_ipc")
public class SgIpc extends BaseEntity {
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * mac
     */
    private String mac;
    /**
     * IP
     */
    private String ip;
    /**
     * 端口
     */
    private Integer port;
    /**
     * 登录账户
     */
    private String loginAccount;
    /**
     * nvr
     */
    private Long nvrId;
    /**
     * 通道
     */
    private String passageway;
    /**
     * 安装位置
     */
    private Long buildingId;
    /**
     * 所属单位
     */
    private Long organizationId;
    /**
     * 施工批次
     */
    private Long constructionBatchId;
    /**
     * 序列号
     */
    private String serialNumber;
    /**
     * 型号
     */
    private String model;
    /**
     * 生产厂商
     */
    private Long manufacturerId;
    /**
     *
     */
    @TableLogic
    private String delFlag;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgNvr.java
New file
@@ -0,0 +1,101 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * NVR设备对象 sg_nvr
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@Accessors(chain = true)
@TableName("sg_nvr")
public class SgNvr extends BaseEntity {
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 部署名称
     */
    private String deploymentName;
    /**
     * 通道
     */
    private String passageway;
    /**
     * LAN1
     */
    private String lanOne;
    /**
     * ip1
     */
    private String ipOne;
    /**
     * LAN2
     */
    private String lanTwo;
    /**
     * ip2
     */
    private String ipTwo;
    /**
     * 登录账号
     */
    private String loginAccount;
    /**
     * 硬盘
     */
    private String hardDisk;
    /**
     * 建筑单元
     */
    private Long buildingId;
    /**
     * 所属机构
     */
    private Long organizationId;
    /**
     * 施工批次
     */
    private Long constructionBatchId;
    /**
     * 序列号
     */
    private String serialNumber;
    /**
     * 型号
     */
    private String model;
    /**
     * 生产厂商
     */
    private Long manufacturerId;
    /**
     * 附件
     */
    private String filePath;
    /**
     *
     */
    @TableLogic
    private String delFlag;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgReserveIp.java
@@ -26,10 +26,14 @@
    private static final long serialVersionUID=1L;
    /**
     *
     *
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * ip地址
     */
@@ -51,7 +55,7 @@
     */
    private String remarks;
    /**
     *
     *
     */
    @TableLogic
    private String delFlag;
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/BsOrganizationBo.java
New file
@@ -0,0 +1,98 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.core.domain.TreeEntity;
/**
 * 高校组织机构业务对象 bs_organization
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("高校组织机构业务对象")
public class BsOrganizationBo extends TreeEntity {
    /**
     *
     */
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 机构编号
     */
    @ApiModelProperty(value = "机构编号", required = true)
    @NotBlank(message = "机构编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String code;
    /**
     * 机构名称
     */
    @ApiModelProperty(value = "机构名称", required = true)
    @NotBlank(message = "机构名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;
    /**
     * 详细名称
     */
    @ApiModelProperty(value = "详细名称")
    private String detailedName;
    /**
     * 高校
     */
    @ApiModelProperty(value = "高校", required = true)
    @NotNull(message = "高校不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long schoolId;
    /**
     * 祖级列表
     */
    @ApiModelProperty(value = "祖级列表")
    private String ancestors;
    /**
     * 显示顺序
     */
    @ApiModelProperty(value = "显示顺序")
    private Integer orderNum;
    /**
     * 分页大小
     */
    @ApiModelProperty("分页大小")
    private Integer pageSize;
    /**
     * 当前页数
     */
    @ApiModelProperty("当前页数")
    private Integer pageNum;
    /**
     * 排序列
     */
    @ApiModelProperty("排序列")
    private String orderByColumn;
    /**
     * 排序的方向desc或者asc
     */
    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
    private String isAsc;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgConstructionBatchBo.java
@@ -31,7 +31,10 @@
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 施工批次
     */
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgIpcBo.java
New file
@@ -0,0 +1,141 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * ipc设备业务对象 sg_ipc
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("ipc设备业务对象")
public class SgIpcBo extends BaseEntity {
    /**
     *
     */
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * mac
     */
    @ApiModelProperty(value = "mac", required = true)
    @NotBlank(message = "mac不能为空", groups = { AddGroup.class, EditGroup.class })
    private String mac;
    /**
     * IP
     */
    @ApiModelProperty(value = "IP", required = true)
    @NotBlank(message = "IP不能为空", groups = { AddGroup.class, EditGroup.class })
    private String ip;
    /**
     * 端口
     */
    @ApiModelProperty(value = "端口", required = true)
    @NotNull(message = "端口不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer port;
    /**
     * 登录账户
     */
    @ApiModelProperty(value = "登录账户", required = true)
    @NotBlank(message = "登录账户不能为空", groups = { AddGroup.class, EditGroup.class })
    private String loginAccount;
    /**
     * nvr
     */
    @ApiModelProperty(value = "nvr")
    private Long nvrId;
    /**
     * 通道
     */
    @ApiModelProperty(value = "通道")
    private String passageway;
    /**
     * 安装位置
     */
    @ApiModelProperty(value = "安装位置", required = true)
    @NotNull(message = "安装位置不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long buildingId;
    /**
     * 所属单位
     */
    @ApiModelProperty(value = "所属单位", required = true)
    @NotNull(message = "所属单位不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long organizationId;
    /**
     * 施工批次
     */
    @ApiModelProperty(value = "施工批次", required = true)
    @NotNull(message = "施工批次不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long constructionBatchId;
    /**
     * 序列号
     */
    @ApiModelProperty(value = "序列号")
    private String serialNumber;
    /**
     * 型号
     */
    @ApiModelProperty(value = "型号")
    private String model;
    /**
     * 生产厂商
     */
    @ApiModelProperty(value = "生产厂商")
    private Long manufacturerId;
    /**
     * 分页大小
     */
    @ApiModelProperty("分页大小")
    private Integer pageSize;
    /**
     * 当前页数
     */
    @ApiModelProperty("当前页数")
    private Integer pageNum;
    /**
     * 排序列
     */
    @ApiModelProperty("排序列")
    private String orderByColumn;
    /**
     * 排序的方向desc或者asc
     */
    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
    private String isAsc;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgNvrBo.java
New file
@@ -0,0 +1,162 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * NVR设备业务对象 sg_nvr
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("NVR设备业务对象")
public class SgNvrBo extends BaseEntity {
    /**
     *
     */
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 部署名称
     */
    @ApiModelProperty(value = "部署名称", required = true)
    @NotBlank(message = "部署名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String deploymentName;
    /**
     * 通道
     */
    @ApiModelProperty(value = "通道", required = true)
    @NotBlank(message = "通道不能为空", groups = { AddGroup.class, EditGroup.class })
    private String passageway;
    /**
     * LAN1
     */
    @ApiModelProperty(value = "LAN1", required = true)
    @NotBlank(message = "LAN1不能为空", groups = { AddGroup.class, EditGroup.class })
    private String lanOne;
    /**
     * ip1
     */
    @ApiModelProperty(value = "ip1", required = true)
    @NotBlank(message = "ip1不能为空", groups = { AddGroup.class, EditGroup.class })
    private String ipOne;
    /**
     * LAN2
     */
    @ApiModelProperty(value = "LAN2", required = true)
    @NotBlank(message = "LAN2不能为空", groups = { AddGroup.class, EditGroup.class })
    private String lanTwo;
    /**
     * ip2
     */
    @ApiModelProperty(value = "ip2", required = true)
    @NotBlank(message = "ip2不能为空", groups = { AddGroup.class, EditGroup.class })
    private String ipTwo;
    /**
     * 登录账号
     */
    @ApiModelProperty(value = "登录账号", required = true)
    @NotBlank(message = "登录账号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String loginAccount;
    /**
     * 硬盘
     */
    @ApiModelProperty(value = "硬盘", required = true)
    @NotBlank(message = "硬盘不能为空", groups = { AddGroup.class, EditGroup.class })
    private String hardDisk;
    /**
     * 建筑单元
     */
    @ApiModelProperty(value = "建筑单元", required = true)
    @NotNull(message = "建筑单元不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long buildingId;
    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构", required = true)
    @NotNull(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long organizationId;
    /**
     * 施工批次
     */
    @ApiModelProperty(value = "施工批次", required = true)
    @NotNull(message = "施工批次不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long constructionBatchId;
    /**
     * 序列号
     */
    @ApiModelProperty(value = "序列号")
    private String serialNumber;
    /**
     * 型号
     */
    @ApiModelProperty(value = "型号")
    private String model;
    /**
     * 生产厂商
     */
    @ApiModelProperty(value = "生产厂商")
    private Long manufacturerId;
    /**
     * 附件
     */
    private String filePath;
    /**
     * 分页大小
     */
    @ApiModelProperty("分页大小")
    private Integer pageSize;
    /**
     * 当前页数
     */
    @ApiModelProperty("当前页数")
    private Integer pageNum;
    /**
     * 排序列
     */
    @ApiModelProperty("排序列")
    private String orderByColumn;
    /**
     * 排序的方向desc或者asc
     */
    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
    private String isAsc;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgReserveIpBo.java
@@ -30,7 +30,10 @@
    @ApiModelProperty(value = "", required = true)
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * ip地址
     */
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/BsOrganizationVo.java
New file
@@ -0,0 +1,77 @@
package com.ruoyi.oa.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 高校组织机构视图对象 bs_organization
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@ApiModel("高校组织机构视图对象")
@ExcelIgnoreUnannotated
public class BsOrganizationVo {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    @ApiModelProperty("")
    private Long id;
    /**
     * 机构编号
     */
    @ExcelProperty(value = "机构编号")
    @ApiModelProperty("机构编号")
    private String code;
    /**
     * 机构名称
     */
    @ExcelProperty(value = "机构名称")
    @ApiModelProperty("机构名称")
    private String name;
    /**
     * 高校
     */
    @ExcelProperty(value = "高校")
    @ApiModelProperty("高校")
    private Long schoolId;
    /**
     * 父级id
     */
    @ExcelProperty(value = "父级id")
    @ApiModelProperty("父级id")
    private Long parentId;
    /**
     * 祖级列表
     */
    @ExcelProperty(value = "祖级列表")
    @ApiModelProperty("祖级列表")
    private String ancestors;
    /**
     * 显示顺序
     */
    @ExcelProperty(value = "显示顺序")
    @ApiModelProperty("显示顺序")
    private Integer orderNum;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgConstructionBatchVo.java
@@ -30,6 +30,11 @@
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 施工批次
     */
    @ExcelProperty(value = "施工批次")
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgIpcVo.java
New file
@@ -0,0 +1,129 @@
package com.ruoyi.oa.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.Dict;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * ipc设备视图对象 sg_ipc
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@ApiModel("ipc设备视图对象")
@ExcelIgnoreUnannotated
public class SgIpcVo {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    @ApiModelProperty("")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * mac
     */
    @ExcelProperty(value = "mac")
    @ApiModelProperty("mac")
    private String mac;
    /**
     * IP
     */
    @ExcelProperty(value = "IP")
    @ApiModelProperty("IP")
    private String ip;
    /**
     * 端口
     */
    @ExcelProperty(value = "端口")
    @ApiModelProperty("端口")
    private Integer port;
    /**
     * 登录账户
     */
    @ExcelProperty(value = "登录账户")
    @ApiModelProperty("登录账户")
    private String loginAccount;
    /**
     * nvr
     */
    @ExcelProperty(value = "nvr")
    @ApiModelProperty("nvr")
    @Dict(dictTable = "sg_nvr", dicCode = "id", dicText = "deployment_name")
    private Long nvrId;
    /**
     * 通道
     */
    @ExcelProperty(value = "通道")
    @ApiModelProperty("通道")
    @Dict(dicCode = "DICT109")
    private String passageway;
    /**
     * 安装位置
     */
    @ExcelProperty(value = "安装位置")
    @ApiModelProperty("安装位置")
    @Dict(dictTable = "bs_building", dicCode = "id", dicText = "detailed_name")
    private Long buildingId;
    /**
     * 所属单位
     */
    @ExcelProperty(value = "所属单位")
    @ApiModelProperty("所属单位")
    @Dict(dictTable = "bs_organization", dicCode = "id", dicText = "detailed_name")
    private Long organizationId;
    /**
     * 施工批次
     */
    @ExcelProperty(value = "施工批次")
    @ApiModelProperty("施工批次")
    @Dict(dictTable = "sg_construction_batch", dicCode = "id", dicText = "batch")
    private Long constructionBatchId;
    /**
     * 序列号
     */
    @ExcelProperty(value = "序列号")
    @ApiModelProperty("序列号")
    private String serialNumber;
    /**
     * 型号
     */
    @ExcelProperty(value = "型号")
    @ApiModelProperty("型号")
    private String model;
    /**
     * 生产厂商
     */
    @ExcelProperty(value = "生产厂商")
    @ApiModelProperty("生产厂商")
    @Dict(dictTable = "dev_manufacturer", dicCode = "id", dicText = "name")
    private Long manufacturerId;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgNvrVo.java
New file
@@ -0,0 +1,139 @@
package com.ruoyi.oa.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * NVR设备视图对象 sg_nvr
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Data
@ApiModel("NVR设备视图对象")
@ExcelIgnoreUnannotated
public class SgNvrVo {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @ExcelProperty(value = "")
    @ApiModelProperty("")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * 部署名称
     */
    @ExcelProperty(value = "部署名称")
    @ApiModelProperty("部署名称")
    private String deploymentName;
    /**
     * 通道
     */
    @ExcelProperty(value = "通道")
    @ApiModelProperty("通道")
    private String passageway;
    /**
     * LAN1
     */
    @ExcelProperty(value = "LAN1")
    @ApiModelProperty("LAN1")
    private String lanOne;
    /**
     * ip1
     */
    @ExcelProperty(value = "ip1")
    @ApiModelProperty("ip1")
    private String ipOne;
    /**
     * LAN2
     */
    @ExcelProperty(value = "LAN2")
    @ApiModelProperty("LAN2")
    private String lanTwo;
    /**
     * ip2
     */
    @ExcelProperty(value = "ip2")
    @ApiModelProperty("ip2")
    private String ipTwo;
    /**
     * 登录账号
     */
    @ExcelProperty(value = "登录账号")
    @ApiModelProperty("登录账号")
    private String loginAccount;
    /**
     * 硬盘
     */
    @ExcelProperty(value = "硬盘")
    @ApiModelProperty("硬盘")
    private String hardDisk;
    /**
     * 建筑单元
     */
    @ExcelProperty(value = "建筑单元")
    @ApiModelProperty("建筑单元")
    private Long buildingId;
    /**
     * 所属机构
     */
    @ExcelProperty(value = "所属机构")
    @ApiModelProperty("所属机构")
    private Long organizationId;
    /**
     * 施工批次
     */
    @ExcelProperty(value = "施工批次")
    @ApiModelProperty("施工批次")
    private Long constructionBatchId;
    /**
     * 序列号
     */
    @ExcelProperty(value = "序列号")
    @ApiModelProperty("序列号")
    private String serialNumber;
    /**
     * 型号
     */
    @ExcelProperty(value = "型号")
    @ApiModelProperty("型号")
    private String model;
    /**
     * 生产厂商
     */
    @ExcelProperty(value = "生产厂商")
    @ApiModelProperty("生产厂商")
    private Long manufacturerId;
    /**
     * 附件
     */
    private String filePath;
}
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgReserveIpVo.java
@@ -33,7 +33,10 @@
    @ExcelProperty(value = "")
    @ApiModelProperty("")
    private Long id;
    /**
     * 高校
     */
    private Long schoolId;
    /**
     * ip地址
     */
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/BsOrganizationMapper.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.BsOrganization;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
/**
 * 高校组织机构Mapper接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface BsOrganizationMapper extends BaseMapperPlus<BsOrganization> {
}
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/BsSchoolMapper.java
@@ -2,6 +2,7 @@
import com.ruoyi.oa.domain.BsSchool;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
/**
 * 学校Mapper接口
@@ -9,6 +10,7 @@
 * @author ruoyi
 * @date 2021-12-03
 */
@Mapper
public interface BsSchoolMapper extends BaseMapperPlus<BsSchool> {
}
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgIpcMapper.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.SgIpc;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
/**
 * ipc设备Mapper接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface SgIpcMapper extends BaseMapperPlus<SgIpc> {
}
ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgNvrMapper.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.oa.domain.SgNvr;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
/**
 * NVR设备Mapper接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface SgNvrMapper extends BaseMapperPlus<SgNvr> {
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/IBsOrganizationService.java
New file
@@ -0,0 +1,51 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.BsOrganization;
import com.ruoyi.oa.domain.vo.BsOrganizationVo;
import com.ruoyi.oa.domain.bo.BsOrganizationBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import java.util.Collection;
import java.util.List;
/**
 * 高校组织机构Service接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface IBsOrganizationService extends IServicePlus<BsOrganization, BsOrganizationVo> {
    /**
     * 查询单个
     * @return
     */
    BsOrganizationVo queryById(Long id);
    /**
     * 查询列表
     */
    List<BsOrganizationVo> queryList(BsOrganizationBo bo);
    /**
     * 根据新增业务对象插入高校组织机构
     * @param bo 高校组织机构新增业务对象
     * @return
     */
    Boolean insertByBo(BsOrganizationBo bo);
    /**
     * 根据编辑业务对象修改高校组织机构
     * @param bo 高校组织机构编辑业务对象
     * @return
     */
    Boolean updateByBo(BsOrganizationBo bo);
    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgIpcService.java
New file
@@ -0,0 +1,56 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SgIpc;
import com.ruoyi.oa.domain.vo.SgIpcVo;
import com.ruoyi.oa.domain.bo.SgIpcBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.Collection;
import java.util.List;
/**
 * ipc设备Service接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface ISgIpcService extends IServicePlus<SgIpc, SgIpcVo> {
    /**
     * 查询单个
     * @return
     */
    SgIpcVo queryById(Long id);
    /**
     * 查询列表
     */
    TableDataInfo<SgIpcVo> queryPageList(SgIpcBo bo);
    /**
     * 查询列表
     */
    List<SgIpcVo> queryList(SgIpcBo bo);
    /**
     * 根据新增业务对象插入ipc设备
     * @param bo ipc设备新增业务对象
     * @return
     */
    Boolean insertByBo(SgIpcBo bo);
    /**
     * 根据编辑业务对象修改ipc设备
     * @param bo ipc设备编辑业务对象
     * @return
     */
    Boolean updateByBo(SgIpcBo bo);
    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgNvrService.java
New file
@@ -0,0 +1,56 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SgNvr;
import com.ruoyi.oa.domain.vo.SgNvrVo;
import com.ruoyi.oa.domain.bo.SgNvrBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.Collection;
import java.util.List;
/**
 * NVR设备Service接口
 *
 * @author ruoyi
 * @date 2022-05-11
 */
public interface ISgNvrService extends IServicePlus<SgNvr, SgNvrVo> {
    /**
     * 查询单个
     * @return
     */
    SgNvrVo queryById(Long id);
    /**
     * 查询列表
     */
    TableDataInfo<SgNvrVo> queryPageList(SgNvrBo bo);
    /**
     * 查询列表
     */
    List<SgNvrVo> queryList(SgNvrBo bo);
    /**
     * 根据新增业务对象插入NVR设备
     * @param bo NVR设备新增业务对象
     * @return
     */
    Boolean insertByBo(SgNvrBo bo);
    /**
     * 根据编辑业务对象修改NVR设备
     * @param bo NVR设备编辑业务对象
     * @return
     */
    Boolean updateByBo(SgNvrBo bo);
    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/BsOrganizationServiceImpl.java
New file
@@ -0,0 +1,109 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.oa.domain.BsBuilding;
import com.ruoyi.oa.domain.BsSchool;
import com.ruoyi.oa.mapper.BsSchoolMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.BsOrganizationBo;
import com.ruoyi.oa.domain.vo.BsOrganizationVo;
import com.ruoyi.oa.domain.BsOrganization;
import com.ruoyi.oa.mapper.BsOrganizationMapper;
import com.ruoyi.oa.service.IBsOrganizationService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * 高校组织机构Service业务层处理
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Service
public class BsOrganizationServiceImpl extends ServicePlusImpl<BsOrganizationMapper, BsOrganization, BsOrganizationVo> implements IBsOrganizationService {
    @Autowired
    private BsSchoolMapper schoolMapper;
    @Override
    public BsOrganizationVo queryById(Long id){
        return getVoById(id);
    }
    @Override
    public List<BsOrganizationVo> queryList(BsOrganizationBo bo) {
        return listVo(buildQueryWrapper(bo));
    }
    private LambdaQueryWrapper<BsOrganization> buildQueryWrapper(BsOrganizationBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<BsOrganization> lqw = Wrappers.lambdaQuery();
        lqw.like(StringUtils.isNotBlank(bo.getName()), BsOrganization::getName, bo.getName());
        lqw.eq(BsOrganization::getSchoolId, bo.getSchoolId());
        return lqw;
    }
    @Override
    public Boolean insertByBo(BsOrganizationBo bo) {
        BsOrganization add = BeanUtil.toBean(bo, BsOrganization.class);
        if (bo.getParentId() == Long.valueOf(0)) {
            BsSchool school = schoolMapper.selectById(bo.getSchoolId());
            add.setAncestors("0");
            add.setDetailedName(school.getName() + "-" + bo.getName());
        } else {
            BsOrganization info = baseMapper.selectById(bo.getParentId());
            add.setAncestors(info.getAncestors() + "," + bo.getParentId());
            add.setDetailedName(info.getDetailedName() + "-" + bo.getName());
        }
        boolean flag = save(add);
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    @Override
    public Boolean updateByBo(BsOrganizationBo bo) {
        BsOrganization update = BeanUtil.toBean(bo, BsOrganization.class);
        if (bo.getParentId() == Long.valueOf(0)) {
            BsSchool school = schoolMapper.selectById(bo.getSchoolId());
            update.setAncestors("0");
            update.setDetailedName(school.getName() + "-" + bo.getName());
        } else {
            BsOrganization info = baseMapper.selectById(bo.getParentId());
            update.setAncestors(info.getAncestors() + "," + bo.getParentId());
            update.setDetailedName(info.getDetailedName() + "-" + bo.getName());
        }
        validEntityBeforeSave(update);
        return updateById(update);
    }
    /**
     * 保存前的数据校验
     *
     * @param entity 实体类数据
     */
    private void validEntityBeforeSave(BsOrganization entity){
        //TODO 做一些数据校验,如唯一约束
    }
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        List<BsOrganization> list = baseMapper.selectList(new LambdaQueryWrapper<BsOrganization>()
            .in(BsOrganization::getParentId, ids));
        if (list.size() > 0) {
            throw new ServiceException("存在子建筑单元,不允许删除", HttpStatus.HTTP_PARTIAL);
        }
        return removeByIds(ids);
    }
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgConstructionBatchServiceImpl.java
@@ -50,16 +50,14 @@
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<SgConstructionBatch> lqw = Wrappers.lambdaQuery();
        lqw.like(StringUtils.isNotBlank(bo.getBatch()), SgConstructionBatch::getBatch, bo.getBatch());
        lqw.eq(bo.getStartDate() != null, SgConstructionBatch::getStartDate, bo.getStartDate());
        lqw.eq(bo.getEndDate() != null, SgConstructionBatch::getEndDate, bo.getEndDate());
        lqw.eq(bo.getUserId() != null, SgConstructionBatch::getUserId, bo.getUserId());
        lqw.eq(SgConstructionBatch::getSchoolId, bo.getSchoolId());
        return lqw;
    }
    @Override
    public Boolean insertByBo(SgConstructionBatchBo bo) {
        List<SgConstructionBatch> list = baseMapper.selectList(new LambdaQueryWrapper<SgConstructionBatch>()
            .eq(SgConstructionBatch::getBatch, bo.getBatch()));
            .eq(SgConstructionBatch::getBatch, bo.getBatch()).eq(SgConstructionBatch::getSchoolId, bo.getSchoolId()));
        if (list.size() > 0) {
            throw new ServiceException("施工批次重复", HttpStatus.HTTP_PARTIAL);
        }
@@ -75,7 +73,9 @@
    @Override
    public Boolean updateByBo(SgConstructionBatchBo bo) {
        List<SgConstructionBatch> list = baseMapper.selectList(new LambdaQueryWrapper<SgConstructionBatch>()
            .eq(SgConstructionBatch::getBatch, bo.getBatch()).ne(SgConstructionBatch::getId, bo.getId()));
            .eq(SgConstructionBatch::getBatch, bo.getBatch())
            .ne(SgConstructionBatch::getId, bo.getId())
            .eq(SgConstructionBatch::getSchoolId, bo.getSchoolId()));
        if (list.size() > 0) {
            throw new ServiceException("施工批次重复", HttpStatus.HTTP_PARTIAL);
        }
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgIpcServiceImpl.java
New file
@@ -0,0 +1,107 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.SgIpcBo;
import com.ruoyi.oa.domain.vo.SgIpcVo;
import com.ruoyi.oa.domain.SgIpc;
import com.ruoyi.oa.mapper.SgIpcMapper;
import com.ruoyi.oa.service.ISgIpcService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * ipc设备Service业务层处理
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Service
public class SgIpcServiceImpl extends ServicePlusImpl<SgIpcMapper, SgIpc, SgIpcVo> implements ISgIpcService {
    @Override
    public SgIpcVo queryById(Long id) {
        return getVoById(id);
    }
    @Override
    public TableDataInfo<SgIpcVo> queryPageList(SgIpcBo bo) {
        PagePlus<SgIpc, SgIpcVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
        return PageUtils.buildDataInfo(result);
    }
    @Override
    public List<SgIpcVo> queryList(SgIpcBo bo) {
        return listVo(buildQueryWrapper(bo));
    }
    private LambdaQueryWrapper<SgIpc> buildQueryWrapper(SgIpcBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<SgIpc> lqw = Wrappers.lambdaQuery();
        lqw.eq(SgIpc::getSchoolId, bo.getSchoolId());
        lqw.eq(bo.getNvrId() != null, SgIpc::getNvrId, bo.getNvrId());
        lqw.eq(bo.getBuildingId() != null, SgIpc::getBuildingId, bo.getBuildingId());
        lqw.eq(bo.getOrganizationId() != null, SgIpc::getOrganizationId, bo.getOrganizationId());
        lqw.eq(bo.getConstructionBatchId() != null, SgIpc::getConstructionBatchId, bo.getConstructionBatchId());
        lqw.like(StringUtils.isNotBlank(bo.getModel()), SgIpc::getModel, bo.getModel());
        return lqw;
    }
    @Override
    public Boolean insertByBo(SgIpcBo bo) {
        List<SgIpc> list = baseMapper.selectList(new LambdaQueryWrapper<SgIpc>()
            .eq(SgIpc::getSchoolId, bo.getSchoolId()).eq(SgIpc::getMac, bo.getMac()));
        if (list.size() > 0) {
            throw new ServiceException("MAC重复", HttpStatus.HTTP_PARTIAL);
        }
        SgIpc add = BeanUtil.toBean(bo, SgIpc.class);
        validEntityBeforeSave(add);
        boolean flag = save(add);
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    @Override
    public Boolean updateByBo(SgIpcBo bo) {
        List<SgIpc> list = baseMapper.selectList(new LambdaQueryWrapper<SgIpc>()
            .eq(SgIpc::getSchoolId, bo.getSchoolId())
            .eq(SgIpc::getMac, bo.getMac())
            .ne(SgIpc::getId, bo.getId()));
        if (list.size() > 0) {
            throw new ServiceException("MAC重复", HttpStatus.HTTP_PARTIAL);
        }
        SgIpc update = BeanUtil.toBean(bo, SgIpc.class);
        validEntityBeforeSave(update);
        return updateById(update);
    }
    /**
     * 保存前的数据校验
     *
     * @param entity 实体类数据
     */
    private void validEntityBeforeSave(SgIpc entity) {
        //TODO 做一些数据校验,如唯一约束
    }
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if (isValid) {
            //TODO 做一些业务上的校验,判断是否需要校验
        }
        return removeByIds(ids);
    }
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgNvrServiceImpl.java
New file
@@ -0,0 +1,93 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.SgNvrBo;
import com.ruoyi.oa.domain.vo.SgNvrVo;
import com.ruoyi.oa.domain.SgNvr;
import com.ruoyi.oa.mapper.SgNvrMapper;
import com.ruoyi.oa.service.ISgNvrService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
 * NVR设备Service业务层处理
 *
 * @author ruoyi
 * @date 2022-05-11
 */
@Service
public class SgNvrServiceImpl extends ServicePlusImpl<SgNvrMapper, SgNvr, SgNvrVo> implements ISgNvrService {
    @Override
    public SgNvrVo queryById(Long id){
        return getVoById(id);
    }
    @Override
    public TableDataInfo<SgNvrVo> queryPageList(SgNvrBo bo) {
        PagePlus<SgNvr, SgNvrVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
        return PageUtils.buildDataInfo(result);
    }
    @Override
    public List<SgNvrVo> queryList(SgNvrBo bo) {
        return listVo(buildQueryWrapper(bo));
    }
    private LambdaQueryWrapper<SgNvr> buildQueryWrapper(SgNvrBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<SgNvr> lqw = Wrappers.lambdaQuery();
        lqw.like(StringUtils.isNotBlank(bo.getPassageway()), SgNvr::getPassageway, bo.getPassageway());
        lqw.eq(bo.getBuildingId() != null, SgNvr::getBuildingId, bo.getBuildingId());
        lqw.eq(bo.getOrganizationId() != null, SgNvr::getOrganizationId, bo.getOrganizationId());
        lqw.eq(bo.getConstructionBatchId() != null, SgNvr::getConstructionBatchId, bo.getConstructionBatchId());
        lqw.like(StringUtils.isNotBlank(bo.getModel()), SgNvr::getModel, bo.getModel());
        lqw.eq(SgNvr::getSchoolId, bo.getSchoolId());
        return lqw;
    }
    @Override
    public Boolean insertByBo(SgNvrBo bo) {
        SgNvr add = BeanUtil.toBean(bo, SgNvr.class);
        validEntityBeforeSave(add);
        boolean flag = save(add);
        if (flag) {
            bo.setId(add.getId());
        }
        return flag;
    }
    @Override
    public Boolean updateByBo(SgNvrBo bo) {
        SgNvr update = BeanUtil.toBean(bo, SgNvr.class);
        validEntityBeforeSave(update);
        return updateById(update);
    }
    /**
     * 保存前的数据校验
     *
     * @param entity 实体类数据
     */
    private void validEntityBeforeSave(SgNvr entity){
        //TODO 做一些数据校验,如唯一约束
    }
    @Override
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
        if(isValid){
            //TODO 做一些业务上的校验,判断是否需要校验
        }
        return removeByIds(ids);
    }
}
ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgReserveIpServiceImpl.java
@@ -49,6 +49,7 @@
        LambdaQueryWrapper<SgReserveIp> lqw = Wrappers.lambdaQuery();
        lqw.like(StringUtils.isNotBlank(bo.getIp()), SgReserveIp::getIp, bo.getIp());
        lqw.eq(bo.getBuildingId() != null, SgReserveIp::getBuildingId, bo.getBuildingId());
        lqw.eq(SgReserveIp::getSchoolId, bo.getSchoolId());
        return lqw;
    }
ruoyi-oa/src/main/resources/mapper/oa/BsOrganizationMapper.xml
New file
@@ -0,0 +1,24 @@
<?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.ruoyi.oa.mapper.BsOrganizationMapper">
    <resultMap type="com.ruoyi.oa.domain.BsOrganization" id="BsOrganizationResult">
        <result property="id" column="id"/>
        <result property="code" column="code"/>
        <result property="name" column="name"/>
        <result property="detailedName" column="detailed_name"/>
        <result property="schoolId" column="school_id"/>
        <result property="parentId" column="parent_id"/>
        <result property="ancestors" column="ancestors"/>
        <result property="orderNum" column="order_num"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>
</mapper>
ruoyi-oa/src/main/resources/mapper/oa/SgIpcMapper.xml
New file
@@ -0,0 +1,29 @@
<?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.ruoyi.oa.mapper.SgIpcMapper">
    <resultMap type="com.ruoyi.oa.domain.SgIpc" id="SgIpcResult">
        <result property="id" column="id"/>
        <result property="mac" column="mac"/>
        <result property="ip" column="ip"/>
        <result property="port" column="port"/>
        <result property="loginAccount" column="login_account"/>
        <result property="nvrId" column="nvr_id"/>
        <result property="passageway" column="passageway"/>
        <result property="buildingId" column="building_id"/>
        <result property="organizationId" column="organization_id"/>
        <result property="constructionBatchId" column="construction_batch_id"/>
        <result property="serialNumber" column="serial_number"/>
        <result property="model" column="model"/>
        <result property="manufacturerId" column="manufacturer_id"/>
        <result property="createTime" column="create_time"/>
        <result property="createBy" column="create_by"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>
</mapper>
ruoyi-oa/src/main/resources/mapper/oa/SgNvrMapper.xml
New file
@@ -0,0 +1,31 @@
<?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.ruoyi.oa.mapper.SgNvrMapper">
    <resultMap type="com.ruoyi.oa.domain.SgNvr" id="SgNvrResult">
        <result property="id" column="id"/>
        <result property="deploymentName" column="deployment_name"/>
        <result property="passageway" column="passageway"/>
        <result property="lanOne" column="lan_one"/>
        <result property="ipOne" column="ip_one"/>
        <result property="lanTwo" column="lan_two"/>
        <result property="ipTwo" column="ip__two"/>
        <result property="loginAccount" column="login_account"/>
        <result property="hardDisk" column="hard_disk"/>
        <result property="buildingId" column="building_id"/>
        <result property="organizationId" column="organization_id"/>
        <result property="constructionBatchId" column="construction_batch_id"/>
        <result property="serialNumber" column="serial_number"/>
        <result property="model" column="model"/>
        <result property="manufacturerId" column="manufacturer_id"/>
        <result property="createTime" column="create_time"/>
        <result property="createBy" column="create_by"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>
</mapper>