From b78f403d9237c2bbddbc9be505acfd068a0521aa Mon Sep 17 00:00:00 2001
From: 唐耀东 <18861537@qq.com>
Date: 星期四, 12 五月 2022 22:31:08 +0800
Subject: [PATCH] 提交代码

---
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgAiBo.java                 |  148 ++++++++++++
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgAiVo.java                 |  135 +++++++++++
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgAiService.java             |   56 ++++
 ruoyi-oa/src/main/resources/mapper/oa/SgAiMapper.xml                      |   30 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgAiController.java |  119 +++++++++
 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgAi.java                      |   93 +++++++
 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgAiMapper.java                |   14 +
 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgAiServiceImpl.java     |  113 +++++++++
 8 files changed, 708 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgAiController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgAiController.java
new file mode 100644
index 0000000..e26f2b2
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/SgAiController.java
@@ -0,0 +1,119 @@
+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 com.ruoyi.common.annotation.Dict;
+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.SgAiVo;
+import com.ruoyi.oa.domain.bo.SgAiBo;
+import com.ruoyi.oa.service.ISgAiService;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * AI璁惧Controller
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+@Validated
+@Api(value = "AI璁惧鎺у埗鍣�", tags = {"AI璁惧绠$悊"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/oa/ai")
+public class SgAiController extends BaseController {
+
+    private final ISgAiService iSgAiService;
+
+    /**
+     * 鏌ヨAI璁惧鍒楄〃
+     */
+    @DataDictClass
+    @ApiOperation("鏌ヨAI璁惧鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('oa:ai:list')")
+    @GetMapping("/list")
+    public TableDataInfo<SgAiVo> list(@Validated(QueryGroup.class) SgAiBo bo) {
+        return iSgAiService.queryPageList(bo);
+    }
+
+    /**
+     * 瀵煎嚭AI璁惧鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭AI璁惧鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('oa:ai:export')")
+    @Log(title = "AI璁惧", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(@Validated SgAiBo bo, HttpServletResponse response) {
+        List<SgAiVo> list = iSgAiService.queryList(bo);
+        ExcelUtil.exportExcel(list, "AI璁惧", SgAiVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇AI璁惧璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇AI璁惧璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('oa:ai:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<SgAiVo> getInfo(@ApiParam("涓婚敭")
+                                                  @NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                                  @PathVariable("id") Long id) {
+        return AjaxResult.success(iSgAiService.queryById(id));
+    }
+
+    /**
+     * 鏂板AI璁惧
+     */
+    @ApiOperation("鏂板AI璁惧")
+    @PreAuthorize("@ss.hasPermi('oa:ai:add')")
+    @Log(title = "AI璁惧", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody SgAiBo bo) {
+        return toAjax(iSgAiService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 淇敼AI璁惧
+     */
+    @ApiOperation("淇敼AI璁惧")
+    @PreAuthorize("@ss.hasPermi('oa:ai:edit')")
+    @Log(title = "AI璁惧", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody SgAiBo bo) {
+        return toAjax(iSgAiService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 鍒犻櫎AI璁惧
+     */
+    @ApiOperation("鍒犻櫎AI璁惧")
+    @PreAuthorize("@ss.hasPermi('oa:ai:remove')")
+    @Log(title = "AI璁惧" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@ApiParam("涓婚敭涓�")
+                                       @NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iSgAiService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgAi.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgAi.java
new file mode 100644
index 0000000..86f0884
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SgAi.java
@@ -0,0 +1,93 @@
+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;
+
+/**
+ * AI璁惧瀵硅薄 sg_ai
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+@Data
+@Accessors(chain = true)
+@TableName("sg_ai")
+public class SgAi 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 Long buildingId;
+    /**
+     * 鎵�灞炲崟浣�
+     */
+    private Long organizationId;
+    /**
+     * 鏂藉伐鎵规
+     */
+    private Long constructionBatchId;
+    /**
+     * 搴忓垪鍙�
+     */
+    private String serialNumber;
+    /**
+     * 鍨嬪彿
+     */
+    private String model;
+    /**
+     * 鐢熶骇鍘傚晢
+     */
+    private Long manufacturerId;
+    /**
+     *
+     */
+    @TableLogic
+    private String delFlag;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgAiBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgAiBo.java
new file mode 100644
index 0000000..0a4201b
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SgAiBo.java
@@ -0,0 +1,148 @@
+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;
+
+/**
+ * AI璁惧涓氬姟瀵硅薄 sg_ai
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("AI璁惧涓氬姟瀵硅薄")
+public class SgAiBo 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")
+    private String ipTwo;
+
+    /**
+     * 鐧诲綍璐︽埛
+     */
+    @ApiModelProperty(value = "鐧诲綍璐︽埛")
+    private String loginAccount;
+
+    /**
+     * 瀹夎浣嶇疆
+     */
+    @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;
+
+    /**
+     * 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc
+     */
+    @ApiModelProperty(value = "鎺掑簭鐨勬柟鍚�", example = "asc,desc")
+    private String isAsc;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgAiVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgAiVo.java
new file mode 100644
index 0000000..3c69ddc
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SgAiVo.java
@@ -0,0 +1,135 @@
+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;
+
+
+
+/**
+ * AI璁惧瑙嗗浘瀵硅薄 sg_ai
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+@Data
+@ApiModel("AI璁惧瑙嗗浘瀵硅薄")
+@ExcelIgnoreUnannotated
+public class SgAiVo {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+	@ExcelProperty(value = "")
+	@ApiModelProperty("")
+	private Long id;
+    /**
+     * 楂樻牎
+     */
+    private Long schoolId;
+    /**
+     * 閮ㄧ讲鍚嶇О
+     */
+	@ExcelProperty(value = "閮ㄧ讲鍚嶇О")
+	@ApiModelProperty("閮ㄧ讲鍚嶇О")
+	private String deploymentName;
+
+    /**
+     * 閫氶亾
+     */
+    @ExcelProperty(value = "閫氶亾", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "DICT112")
+	@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("瀹夎浣嶇疆")
+    @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;
+
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgAiMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgAiMapper.java
new file mode 100644
index 0000000..697cf81
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SgAiMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.oa.mapper;
+
+import com.ruoyi.oa.domain.SgAi;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+
+/**
+ * AI璁惧Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+public interface SgAiMapper extends BaseMapperPlus<SgAi> {
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgAiService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgAiService.java
new file mode 100644
index 0000000..ea306b1
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISgAiService.java
@@ -0,0 +1,56 @@
+package com.ruoyi.oa.service;
+
+import com.ruoyi.oa.domain.SgAi;
+import com.ruoyi.oa.domain.vo.SgAiVo;
+import com.ruoyi.oa.domain.bo.SgAiBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * AI璁惧Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+public interface ISgAiService extends IServicePlus<SgAi, SgAiVo> {
+	/**
+	 * 鏌ヨ鍗曚釜
+	 * @return
+	 */
+	SgAiVo queryById(Long id);
+
+	/**
+	 * 鏌ヨ鍒楄〃
+	 */
+    TableDataInfo<SgAiVo> queryPageList(SgAiBo bo);
+
+	/**
+	 * 鏌ヨ鍒楄〃
+	 */
+	List<SgAiVo> queryList(SgAiBo bo);
+
+	/**
+	 * 鏍规嵁鏂板涓氬姟瀵硅薄鎻掑叆AI璁惧
+	 * @param bo AI璁惧鏂板涓氬姟瀵硅薄
+	 * @return
+	 */
+	Boolean insertByBo(SgAiBo bo);
+
+	/**
+	 * 鏍规嵁缂栬緫涓氬姟瀵硅薄淇敼AI璁惧
+	 * @param bo AI璁惧缂栬緫涓氬姟瀵硅薄
+	 * @return
+	 */
+	Boolean updateByBo(SgAiBo bo);
+
+	/**
+	 * 鏍¢獙骞跺垹闄ゆ暟鎹�
+	 * @param ids 涓婚敭闆嗗悎
+	 * @param isValid 鏄惁鏍¢獙,true-鍒犻櫎鍓嶆牎楠�,false-涓嶆牎楠�
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgAiServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgAiServiceImpl.java
new file mode 100644
index 0000000..dcefbff
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SgAiServiceImpl.java
@@ -0,0 +1,113 @@
+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.SgAiBo;
+import com.ruoyi.oa.domain.vo.SgAiVo;
+import com.ruoyi.oa.domain.SgAi;
+import com.ruoyi.oa.mapper.SgAiMapper;
+import com.ruoyi.oa.service.ISgAiService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * AI璁惧Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2022-05-12
+ */
+@Service
+public class SgAiServiceImpl extends ServicePlusImpl<SgAiMapper, SgAi, SgAiVo> implements ISgAiService {
+
+    @Override
+    public SgAiVo queryById(Long id){
+        return getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<SgAiVo> queryPageList(SgAiBo bo) {
+        PagePlus<SgAi, SgAiVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<SgAiVo> queryList(SgAiBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<SgAi> buildQueryWrapper(SgAiBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SgAi> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getBuildingId() != null, SgAi::getBuildingId, bo.getBuildingId());
+        lqw.eq(bo.getOrganizationId() != null, SgAi::getOrganizationId, bo.getOrganizationId());
+        lqw.eq(bo.getConstructionBatchId() != null, SgAi::getConstructionBatchId, bo.getConstructionBatchId());
+        lqw.like(StringUtils.isNotBlank(bo.getModel()), SgAi::getModel, bo.getModel());
+        lqw.eq(bo.getManufacturerId() != null, SgAi::getManufacturerId, bo.getManufacturerId());
+        lqw.eq(SgAi::getSchoolId, bo.getSchoolId());
+        lqw.orderByDesc(SgAi::getUpdateTime);
+        return lqw;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean insertByBo(SgAiBo bo) {
+        List<SgAi> list = baseMapper.selectList(new LambdaQueryWrapper<SgAi>()
+            .eq(SgAi::getDeploymentName, bo.getDeploymentName())
+            .eq(SgAi::getSchoolId, bo.getSchoolId()));
+        if (list.size() > 0) {
+            throw new ServiceException("閮ㄧ讲鍚嶇О閲嶅", HttpStatus.HTTP_PARTIAL);
+        }
+        SgAi add = BeanUtil.toBean(bo, SgAi.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateByBo(SgAiBo bo) {
+        List<SgAi> list = baseMapper.selectList(new LambdaQueryWrapper<SgAi>()
+            .eq(SgAi::getDeploymentName, bo.getDeploymentName())
+            .eq(SgAi::getSchoolId, bo.getSchoolId())
+            .ne(SgAi::getId, bo.getId()));
+        if (list.size() > 0) {
+            throw new ServiceException("閮ㄧ讲鍚嶇О閲嶅", HttpStatus.HTTP_PARTIAL);
+        }
+        SgAi update = BeanUtil.toBean(bo, SgAi.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     *
+     * @param entity 瀹炰綋绫绘暟鎹�
+     */
+    private void validEntityBeforeSave(SgAi entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return removeByIds(ids);
+    }
+}
diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SgAiMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SgAiMapper.xml
new file mode 100644
index 0000000..919a525
--- /dev/null
+++ b/ruoyi-oa/src/main/resources/mapper/oa/SgAiMapper.xml
@@ -0,0 +1,30 @@
+<?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.SgAiMapper">
+
+    <resultMap type="com.ruoyi.oa.domain.SgAi" id="SgAiResult">
+        <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="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>

--
Gitblit v1.9.1