diff --git a/agri-common/src/main/java/com/agri/common/constant/GenConstants.java b/agri-common/src/main/java/com/agri/common/constant/GenConstants.java
index 91f877f..6693c59 100644
--- a/agri-common/src/main/java/com/agri/common/constant/GenConstants.java
+++ b/agri-common/src/main/java/com/agri/common/constant/GenConstants.java
@@ -66,6 +66,7 @@ public class GenConstants
/** 文本域 */
public static final String HTML_TEXTAREA = "textarea";
+ public static final String HTML_NUMBER = "number";
/** 下拉框 */
public static final String HTML_SELECT = "select";
diff --git a/agri-generator/src/main/resources/vm/sql/sql.vm b/agri-generator/src/main/resources/vm/sql/sql.vm
index 0575583..1da1f1b 100644
--- a/agri-generator/src/main/resources/vm/sql/sql.vm
+++ b/agri-generator/src/main/resources/vm/sql/sql.vm
@@ -7,16 +7,16 @@ SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');
+values('查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, '');
+values('新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, '');
+values('修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');
+values('删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');
\ No newline at end of file
+values('导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');
\ No newline at end of file
diff --git a/agri-generator/src/main/resources/vm/vue/index-tree.vue.vm b/agri-generator/src/main/resources/vm/vue/index-tree.vue.vm
index 6f15882..f7447bc 100644
--- a/agri-generator/src/main/resources/vm/vue/index-tree.vue.vm
+++ b/agri-generator/src/main/resources/vm/vue/index-tree.vue.vm
@@ -20,6 +20,12 @@
@keyup.enter.native="handleQuery"
/>
+#elseif($column.htmlType == "number")
+
+
+
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
@@ -187,6 +193,10 @@
+#elseif($column.htmlType == "number")
+
+
+
#elseif($column.htmlType == "imageUpload")
diff --git a/agri-generator/src/main/resources/vm/vue/index.vue.vm b/agri-generator/src/main/resources/vm/vue/index.vue.vm
index 0019995..4155400 100644
--- a/agri-generator/src/main/resources/vm/vue/index.vue.vm
+++ b/agri-generator/src/main/resources/vm/vue/index.vue.vm
@@ -20,6 +20,12 @@
@keyup.enter.native="handleQuery"
/>
+#elseif($column.htmlType == "number")
+
+
+
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
@@ -197,6 +203,10 @@
+#elseif($column.htmlType == "number")
+
+
+
#elseif($column.htmlType == "imageUpload")
@@ -312,6 +322,12 @@
+#elseif($column.list && $column.htmlType == "number")
+
+
+
+
+
#elseif($column.list && $column.htmlType == "datetime")
diff --git a/agri-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm b/agri-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
index 6903aab..f295cf9 100644
--- a/agri-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
+++ b/agri-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
@@ -20,6 +20,12 @@
@keyup.enter="handleQuery"
/>
+#elseif($column.htmlType == "number")
+
+
+
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
@@ -173,6 +179,10 @@
+#elseif($column.htmlType == "number")
+
+
+
#elseif($column.htmlType == "imageUpload")
diff --git a/agri-generator/src/main/resources/vm/vue/v3/index.vue.vm b/agri-generator/src/main/resources/vm/vue/v3/index.vue.vm
index 4fbf0c1..c8f3ca4 100644
--- a/agri-generator/src/main/resources/vm/vue/v3/index.vue.vm
+++ b/agri-generator/src/main/resources/vm/vue/v3/index.vue.vm
@@ -20,6 +20,12 @@
@keyup.enter="handleQuery"
/>
+#elseif($column.htmlType == "number")
+
+
+
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
@@ -180,6 +186,10 @@
+#elseif($column.htmlType == "number")
+
+
+
#elseif($column.htmlType == "imageUpload")
@@ -295,6 +305,12 @@
+#elseif($column.list && $column.htmlType == "number")
+
+
+
+
+
#elseif($column.list && $column.htmlType == "datetime")
diff --git a/agri-system/src/main/java/com/agri/system/controller/SysAgriAlarmRelationController.java b/agri-system/src/main/java/com/agri/system/controller/SysAgriAlarmRelationController.java
new file mode 100644
index 0000000..b906dcb
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/controller/SysAgriAlarmRelationController.java
@@ -0,0 +1,104 @@
+package com.agri.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.agri.common.annotation.Log;
+import com.agri.common.core.controller.BaseController;
+import com.agri.common.core.domain.AjaxResult;
+import com.agri.common.enums.BusinessType;
+import com.agri.system.domain.SysAgriAlarmRelation;
+import com.agri.system.service.ISysAgriAlarmRelationService;
+import com.agri.common.utils.poi.ExcelUtil;
+import com.agri.common.core.page.TableDataInfo;
+
+/**
+ * 告警方式设置Controller
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@RestController
+@RequestMapping("/assets/alarm")
+public class SysAgriAlarmRelationController extends BaseController
+{
+ @Autowired
+ private ISysAgriAlarmRelationService sysAgriAlarmRelationService;
+
+ /**
+ * 查询告警方式设置列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ startPage();
+ List list = sysAgriAlarmRelationService.selectSysAgriAlarmRelationList(sysAgriAlarmRelation);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出告警方式设置列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:export')")
+ @Log(title = "告警方式设置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ List list = sysAgriAlarmRelationService.selectSysAgriAlarmRelationList(sysAgriAlarmRelation);
+ ExcelUtil util = new ExcelUtil(SysAgriAlarmRelation.class);
+ util.exportExcel(response, list, "告警方式设置数据");
+ }
+
+ /**
+ * 获取告警方式设置详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(sysAgriAlarmRelationService.selectSysAgriAlarmRelationById(id));
+ }
+
+ /**
+ * 新增告警方式设置
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:add')")
+ @Log(title = "告警方式设置", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ return toAjax(sysAgriAlarmRelationService.insertSysAgriAlarmRelation(sysAgriAlarmRelation));
+ }
+
+ /**
+ * 修改告警方式设置
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:edit')")
+ @Log(title = "告警方式设置", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ return toAjax(sysAgriAlarmRelationService.updateSysAgriAlarmRelation(sysAgriAlarmRelation));
+ }
+
+ /**
+ * 删除告警方式设置
+ */
+ @PreAuthorize("@ss.hasPermi('assets:alarm:remove')")
+ @Log(title = "告警方式设置", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(sysAgriAlarmRelationService.deleteSysAgriAlarmRelationByIds(ids));
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java b/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java
new file mode 100644
index 0000000..4e24ecb
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java
@@ -0,0 +1,105 @@
+package com.agri.system.controller;
+
+import com.agri.common.annotation.Log;
+import com.agri.common.core.controller.BaseController;
+import com.agri.common.core.domain.AjaxResult;
+import com.agri.common.core.page.TableDataInfo;
+import com.agri.common.enums.BusinessType;
+import com.agri.common.utils.poi.ExcelUtil;
+import com.agri.system.domain.SysAgriInfo;
+import com.agri.system.service.ISysAgriInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 大棚管理Controller
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@RestController
+@RequestMapping("/assets/agri")
+public class SysAgriInfoController extends BaseController
+{
+ @Autowired
+ private ISysAgriInfoService sysAgriInfoService;
+
+ /**
+ * 查询大棚管理列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(SysAgriInfo sysAgriInfo)
+ {
+ startPage();
+ List list = sysAgriInfoService.selectSysAgriInfoList(sysAgriInfo);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出大棚管理列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:export')")
+ @Log(title = "大棚管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, SysAgriInfo sysAgriInfo)
+ {
+ List list = sysAgriInfoService.selectSysAgriInfoList(sysAgriInfo);
+ ExcelUtil util = new ExcelUtil(SysAgriInfo.class);
+ util.exportExcel(response, list, "大棚管理数据");
+ }
+
+ /**
+ * 获取大棚管理详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(sysAgriInfoService.selectSysAgriInfoById(id));
+ }
+
+ /**
+ * 新增大棚管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:add')")
+ @Log(title = "大棚管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody SysAgriInfo sysAgriInfo)
+ {
+ return toAjax(sysAgriInfoService.insertSysAgriInfo(sysAgriInfo));
+ }
+
+ /**
+ * 修改大棚管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:edit')")
+ @Log(title = "大棚管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody SysAgriInfo sysAgriInfo)
+ {
+ return toAjax(sysAgriInfoService.updateSysAgriInfo(sysAgriInfo));
+ }
+
+ /**
+ * 删除大棚管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:agri:remove')")
+ @Log(title = "大棚管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(sysAgriInfoService.deleteSysAgriInfoByIds(ids));
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/controller/SysAgriLimitController.java b/agri-system/src/main/java/com/agri/system/controller/SysAgriLimitController.java
new file mode 100644
index 0000000..28b71c7
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/controller/SysAgriLimitController.java
@@ -0,0 +1,104 @@
+package com.agri.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.agri.common.annotation.Log;
+import com.agri.common.core.controller.BaseController;
+import com.agri.common.core.domain.AjaxResult;
+import com.agri.common.enums.BusinessType;
+import com.agri.system.domain.SysAgriLimit;
+import com.agri.system.service.ISysAgriLimitService;
+import com.agri.common.utils.poi.ExcelUtil;
+import com.agri.common.core.page.TableDataInfo;
+
+/**
+ * 执行时间限位管理Controller
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@RestController
+@RequestMapping("/assets/limit")
+public class SysAgriLimitController extends BaseController
+{
+ @Autowired
+ private ISysAgriLimitService sysAgriLimitService;
+
+ /**
+ * 查询执行时间限位管理列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(SysAgriLimit sysAgriLimit)
+ {
+ startPage();
+ List list = sysAgriLimitService.selectSysAgriLimitList(sysAgriLimit);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出执行时间限位管理列表
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:export')")
+ @Log(title = "执行时间限位管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, SysAgriLimit sysAgriLimit)
+ {
+ List list = sysAgriLimitService.selectSysAgriLimitList(sysAgriLimit);
+ ExcelUtil util = new ExcelUtil(SysAgriLimit.class);
+ util.exportExcel(response, list, "执行时间限位管理数据");
+ }
+
+ /**
+ * 获取执行时间限位管理详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id)
+ {
+ return success(sysAgriLimitService.selectSysAgriLimitById(id));
+ }
+
+ /**
+ * 新增执行时间限位管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:add')")
+ @Log(title = "执行时间限位管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody SysAgriLimit sysAgriLimit)
+ {
+ return toAjax(sysAgriLimitService.insertSysAgriLimit(sysAgriLimit));
+ }
+
+ /**
+ * 修改执行时间限位管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:edit')")
+ @Log(title = "执行时间限位管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody SysAgriLimit sysAgriLimit)
+ {
+ return toAjax(sysAgriLimitService.updateSysAgriLimit(sysAgriLimit));
+ }
+
+ /**
+ * 删除执行时间限位管理
+ */
+ @PreAuthorize("@ss.hasPermi('assets:limit:remove')")
+ @Log(title = "执行时间限位管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids)
+ {
+ return toAjax(sysAgriLimitService.deleteSysAgriLimitByIds(ids));
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/domain/SysAgriAlarmRelation.java b/agri-system/src/main/java/com/agri/system/domain/SysAgriAlarmRelation.java
new file mode 100644
index 0000000..7e01b64
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/domain/SysAgriAlarmRelation.java
@@ -0,0 +1,116 @@
+package com.agri.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.agri.common.annotation.Excel;
+import com.agri.common.core.domain.BaseEntity;
+
+/**
+ * 告警方式设置对象 sys_agri_alarm_relation
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public class SysAgriAlarmRelation extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long id;
+
+ /** 关联大棚设备表ID(sys_agri_info.id) */
+ @Excel(name = "关联大棚设备表ID", readConverterExp = "s=ys_agri_info.id")
+ private Long agriId;
+
+ /** imei */
+ @Excel(name = "imei")
+ private String imei;
+
+ /** 告警方式编码(关联sys_alarm_type_dict.type_code) */
+ @Excel(name = "告警方式编码", readConverterExp = "关=联sys_alarm_type_dict.type_code")
+ private String typeCode;
+
+ /** 逻辑删除(0-未删,1-已删) */
+ @Excel(name = "逻辑删除(0-未删,1-已删)")
+ private Integer isDeleted;
+
+ /** 大棚名称 */
+ @Excel(name = "大棚名称")
+ private String agriName;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setAgriId(Long agriId)
+ {
+ this.agriId = agriId;
+ }
+
+ public Long getAgriId()
+ {
+ return agriId;
+ }
+
+ public void setImei(String imei)
+ {
+ this.imei = imei;
+ }
+
+ public String getImei()
+ {
+ return imei;
+ }
+
+ public void setTypeCode(String typeCode)
+ {
+ this.typeCode = typeCode;
+ }
+
+ public String getTypeCode()
+ {
+ return typeCode;
+ }
+
+ public void setIsDeleted(Integer isDeleted)
+ {
+ this.isDeleted = isDeleted;
+ }
+
+ public Integer getIsDeleted()
+ {
+ return isDeleted;
+ }
+
+ public void setAgriName(String agriName)
+ {
+ this.agriName = agriName;
+ }
+
+ public String getAgriName()
+ {
+ return agriName;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("agriId", getAgriId())
+ .append("imei", getImei())
+ .append("typeCode", getTypeCode())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("isDeleted", getIsDeleted())
+ .append("agriName", getAgriName())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/domain/SysAgriInfo.java b/agri-system/src/main/java/com/agri/system/domain/SysAgriInfo.java
new file mode 100644
index 0000000..804293d
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/domain/SysAgriInfo.java
@@ -0,0 +1,241 @@
+package com.agri.system.domain;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.agri.common.annotation.Excel;
+import com.agri.common.core.domain.BaseEntity;
+
+/**
+ * 大棚管理对象 sys_agri_info
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public class SysAgriInfo extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long id;
+
+ /** 设备IMEI */
+ @Excel(name = "设备IMEI")
+ private String imei;
+
+ /** 大棚名称 */
+ @Excel(name = "大棚名称")
+ private String agriName;
+
+ /** 关联用户ID */
+ @Excel(name = "关联用户ID")
+ private Long userId;
+
+ /** 温度上限(℃) */
+ @Excel(name = "温度上限(℃)")
+ private BigDecimal tempUpper;
+
+ /** 温度下限(℃) */
+ @Excel(name = "温度下限(℃)")
+ private BigDecimal tempLower;
+
+ /** 湿度上限(%RH) */
+ @Excel(name = "湿度上限(%RH)")
+ private BigDecimal humiUpper;
+
+ /** 湿度下限(%RH) */
+ @Excel(name = "湿度下限(%RH)")
+ private BigDecimal humiLower;
+
+ /** 告警开关(0-关闭,1-开启) */
+ @Excel(name = "告警开关(0-关闭,1-开启)")
+ private Integer alarmStatus;
+
+ /** 设备状态(0-离线,1-在线,2-故障) */
+ @Excel(name = "设备状态(0-离线,1-在线,2-故障)")
+ private Integer deviceStatus;
+
+ /** 安装时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "安装时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date installTime;
+
+ /** 安装位置 */
+ @Excel(name = "安装位置")
+ private String location;
+
+ /** 逻辑删除(0-未删,1-已删) */
+ @Excel(name = "逻辑删除(0-未删,1-已删)")
+ private Integer isDeleted;
+
+ /** 执行时间限位管理信息 */
+ private List sysAgriLimitList;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setImei(String imei)
+ {
+ this.imei = imei;
+ }
+
+ public String getImei()
+ {
+ return imei;
+ }
+
+ public void setAgriName(String agriName)
+ {
+ this.agriName = agriName;
+ }
+
+ public String getAgriName()
+ {
+ return agriName;
+ }
+
+ public void setUserId(Long userId)
+ {
+ this.userId = userId;
+ }
+
+ public Long getUserId()
+ {
+ return userId;
+ }
+
+ public void setTempUpper(BigDecimal tempUpper)
+ {
+ this.tempUpper = tempUpper;
+ }
+
+ public BigDecimal getTempUpper()
+ {
+ return tempUpper;
+ }
+
+ public void setTempLower(BigDecimal tempLower)
+ {
+ this.tempLower = tempLower;
+ }
+
+ public BigDecimal getTempLower()
+ {
+ return tempLower;
+ }
+
+ public void setHumiUpper(BigDecimal humiUpper)
+ {
+ this.humiUpper = humiUpper;
+ }
+
+ public BigDecimal getHumiUpper()
+ {
+ return humiUpper;
+ }
+
+ public void setHumiLower(BigDecimal humiLower)
+ {
+ this.humiLower = humiLower;
+ }
+
+ public BigDecimal getHumiLower()
+ {
+ return humiLower;
+ }
+
+ public void setAlarmStatus(Integer alarmStatus)
+ {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmStatus()
+ {
+ return alarmStatus;
+ }
+
+ public void setDeviceStatus(Integer deviceStatus)
+ {
+ this.deviceStatus = deviceStatus;
+ }
+
+ public Integer getDeviceStatus()
+ {
+ return deviceStatus;
+ }
+
+ public void setInstallTime(Date installTime)
+ {
+ this.installTime = installTime;
+ }
+
+ public Date getInstallTime()
+ {
+ return installTime;
+ }
+
+ public void setLocation(String location)
+ {
+ this.location = location;
+ }
+
+ public String getLocation()
+ {
+ return location;
+ }
+
+ public void setIsDeleted(Integer isDeleted)
+ {
+ this.isDeleted = isDeleted;
+ }
+
+ public Integer getIsDeleted()
+ {
+ return isDeleted;
+ }
+
+ public List getSysAgriLimitList()
+ {
+ return sysAgriLimitList;
+ }
+
+ public void setSysAgriLimitList(List sysAgriLimitList)
+ {
+ this.sysAgriLimitList = sysAgriLimitList;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("imei", getImei())
+ .append("agriName", getAgriName())
+ .append("userId", getUserId())
+ .append("tempUpper", getTempUpper())
+ .append("tempLower", getTempLower())
+ .append("humiUpper", getHumiUpper())
+ .append("humiLower", getHumiLower())
+ .append("alarmStatus", getAlarmStatus())
+ .append("deviceStatus", getDeviceStatus())
+ .append("installTime", getInstallTime())
+ .append("location", getLocation())
+ .append("remark", getRemark())
+ .append("createTime", getCreateTime())
+ .append("createBy", getCreateBy())
+ .append("updateTime", getUpdateTime())
+ .append("updateBy", getUpdateBy())
+ .append("isDeleted", getIsDeleted())
+ .append("sysAgriLimitList", getSysAgriLimitList())
+ .toString();
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/domain/SysAgriLimit.java b/agri-system/src/main/java/com/agri/system/domain/SysAgriLimit.java
new file mode 100644
index 0000000..f3fb4cf
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/domain/SysAgriLimit.java
@@ -0,0 +1,269 @@
+package com.agri.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.agri.common.annotation.Excel;
+import com.agri.common.core.domain.BaseEntity;
+
+/**
+ * 执行时间限位管理对象 sys_agri_limit
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public class SysAgriLimit extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private String id;
+
+ /** 大棚ID(如IMEI/自定义编号) */
+ @Excel(name = "大棚ID", readConverterExp = "如=IMEI/自定义编号")
+ private Long agriId;
+
+ /** 大棚名称(冗余字段) */
+ @Excel(name = "大棚名称", readConverterExp = "冗=余字段")
+ private String agriName;
+
+ /** imei */
+ @Excel(name = "imei")
+ private String imei;
+
+ /** 卷被开限位时间(秒) */
+ @Excel(name = "卷被开限位时间(秒)")
+ private String jbkLimit;
+
+ /** 卷被关限位时间(秒) */
+ @Excel(name = "卷被关限位时间(秒)")
+ private String jbgLimit;
+
+ /** 卷膜1开限位时间(秒) */
+ @Excel(name = "卷膜1开限位时间(秒)")
+ private String jm1kLimit;
+
+ /** 卷膜1关限位时间(秒) */
+ @Excel(name = "卷膜1关限位时间(秒)")
+ private String jm1gLimit;
+
+ /** 卷膜2开限位时间(秒) */
+ @Excel(name = "卷膜2开限位时间(秒)")
+ private String jm2kLimit;
+
+ /** 卷膜2关限位时间(秒) */
+ @Excel(name = "卷膜2关限位时间(秒)")
+ private String jm2gLimit;
+
+ /** 卷膜3开限位时间(秒) */
+ @Excel(name = "卷膜3开限位时间(秒)")
+ private String jm3kLimit;
+
+ /** 卷膜3关限位时间(秒) */
+ @Excel(name = "卷膜3关限位时间(秒)")
+ private String jm3gLimit;
+
+ /** 数据版本号(乐观锁) */
+ @Excel(name = "数据版本号", readConverterExp = "乐=观锁")
+ private String version;
+
+ /** 修改人ID */
+ @Excel(name = "修改人ID")
+ private String updateId;
+
+ /** 删除标识:0-未删 1-已删 */
+ @Excel(name = "删除标识:0-未删 1-已删")
+ private String deleted;
+
+ /** 删除时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "删除时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date deleteTime;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setAgriId(Long agriId)
+ {
+ this.agriId = agriId;
+ }
+
+ public Long getAgriId()
+ {
+ return agriId;
+ }
+
+ public void setAgriName(String agriName)
+ {
+ this.agriName = agriName;
+ }
+
+ public String getAgriName()
+ {
+ return agriName;
+ }
+
+ public void setImei(String imei)
+ {
+ this.imei = imei;
+ }
+
+ public String getImei()
+ {
+ return imei;
+ }
+
+ public void setJbkLimit(String jbkLimit)
+ {
+ this.jbkLimit = jbkLimit;
+ }
+
+ public String getJbkLimit()
+ {
+ return jbkLimit;
+ }
+
+ public void setJbgLimit(String jbgLimit)
+ {
+ this.jbgLimit = jbgLimit;
+ }
+
+ public String getJbgLimit()
+ {
+ return jbgLimit;
+ }
+
+ public void setJm1kLimit(String jm1kLimit)
+ {
+ this.jm1kLimit = jm1kLimit;
+ }
+
+ public String getJm1kLimit()
+ {
+ return jm1kLimit;
+ }
+
+ public void setJm1gLimit(String jm1gLimit)
+ {
+ this.jm1gLimit = jm1gLimit;
+ }
+
+ public String getJm1gLimit()
+ {
+ return jm1gLimit;
+ }
+
+ public void setJm2kLimit(String jm2kLimit)
+ {
+ this.jm2kLimit = jm2kLimit;
+ }
+
+ public String getJm2kLimit()
+ {
+ return jm2kLimit;
+ }
+
+ public void setJm2gLimit(String jm2gLimit)
+ {
+ this.jm2gLimit = jm2gLimit;
+ }
+
+ public String getJm2gLimit()
+ {
+ return jm2gLimit;
+ }
+
+ public void setJm3kLimit(String jm3kLimit)
+ {
+ this.jm3kLimit = jm3kLimit;
+ }
+
+ public String getJm3kLimit()
+ {
+ return jm3kLimit;
+ }
+
+ public void setJm3gLimit(String jm3gLimit)
+ {
+ this.jm3gLimit = jm3gLimit;
+ }
+
+ public String getJm3gLimit()
+ {
+ return jm3gLimit;
+ }
+
+ public void setVersion(String version)
+ {
+ this.version = version;
+ }
+
+ public String getVersion()
+ {
+ return version;
+ }
+
+ public void setUpdateId(String updateId)
+ {
+ this.updateId = updateId;
+ }
+
+ public String getUpdateId()
+ {
+ return updateId;
+ }
+
+ public void setDeleted(String deleted)
+ {
+ this.deleted = deleted;
+ }
+
+ public String getDeleted()
+ {
+ return deleted;
+ }
+
+ public void setDeleteTime(Date deleteTime)
+ {
+ this.deleteTime = deleteTime;
+ }
+
+ public Date getDeleteTime()
+ {
+ return deleteTime;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("agriId", getAgriId())
+ .append("agriName", getAgriName())
+ .append("imei", getImei())
+ .append("jbkLimit", getJbkLimit())
+ .append("jbgLimit", getJbgLimit())
+ .append("jm1kLimit", getJm1kLimit())
+ .append("jm1gLimit", getJm1gLimit())
+ .append("jm2kLimit", getJm2kLimit())
+ .append("jm2gLimit", getJm2gLimit())
+ .append("jm3kLimit", getJm3kLimit())
+ .append("jm3gLimit", getJm3gLimit())
+ .append("remark", getRemark())
+ .append("version", getVersion())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateId", getUpdateId())
+ .append("updateTime", getUpdateTime())
+ .append("deleted", getDeleted())
+ .append("deleteTime", getDeleteTime())
+ .toString();
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/mapper/SysAgriAlarmRelationMapper.java b/agri-system/src/main/java/com/agri/system/mapper/SysAgriAlarmRelationMapper.java
new file mode 100644
index 0000000..0589d1d
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/mapper/SysAgriAlarmRelationMapper.java
@@ -0,0 +1,61 @@
+package com.agri.system.mapper;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriAlarmRelation;
+
+/**
+ * 告警方式设置Mapper接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface SysAgriAlarmRelationMapper
+{
+ /**
+ * 查询告警方式设置
+ *
+ * @param id 告警方式设置主键
+ * @return 告警方式设置
+ */
+ public SysAgriAlarmRelation selectSysAgriAlarmRelationById(Long id);
+
+ /**
+ * 查询告警方式设置列表
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 告警方式设置集合
+ */
+ public List selectSysAgriAlarmRelationList(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 新增告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ public int insertSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 修改告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ public int updateSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 删除告警方式设置
+ *
+ * @param id 告警方式设置主键
+ * @return 结果
+ */
+ public int deleteSysAgriAlarmRelationById(Long id);
+
+ /**
+ * 批量删除告警方式设置
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriAlarmRelationByIds(Long[] ids);
+}
diff --git a/agri-system/src/main/java/com/agri/system/mapper/SysAgriInfoMapper.java b/agri-system/src/main/java/com/agri/system/mapper/SysAgriInfoMapper.java
new file mode 100644
index 0000000..18e074e
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/mapper/SysAgriInfoMapper.java
@@ -0,0 +1,87 @@
+package com.agri.system.mapper;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriInfo;
+import com.agri.system.domain.SysAgriLimit;
+
+/**
+ * 大棚管理Mapper接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface SysAgriInfoMapper
+{
+ /**
+ * 查询大棚管理
+ *
+ * @param id 大棚管理主键
+ * @return 大棚管理
+ */
+ public SysAgriInfo selectSysAgriInfoById(Long id);
+
+ /**
+ * 查询大棚管理列表
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 大棚管理集合
+ */
+ public List selectSysAgriInfoList(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 新增大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ public int insertSysAgriInfo(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 修改大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ public int updateSysAgriInfo(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 删除大棚管理
+ *
+ * @param id 大棚管理主键
+ * @return 结果
+ */
+ public int deleteSysAgriInfoById(Long id);
+
+ /**
+ * 批量删除大棚管理
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriInfoByIds(Long[] ids);
+
+ /**
+ * 批量删除执行时间限位管理
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriLimitByAgriIds(Long[] ids);
+
+ /**
+ * 批量新增执行时间限位管理
+ *
+ * @param sysAgriLimitList 执行时间限位管理列表
+ * @return 结果
+ */
+ public int batchSysAgriLimit(List sysAgriLimitList);
+
+
+ /**
+ * 通过大棚管理主键删除执行时间限位管理信息
+ *
+ * @param id 大棚管理ID
+ * @return 结果
+ */
+ public int deleteSysAgriLimitByAgriId(Long id);
+}
diff --git a/agri-system/src/main/java/com/agri/system/mapper/SysAgriLimitMapper.java b/agri-system/src/main/java/com/agri/system/mapper/SysAgriLimitMapper.java
new file mode 100644
index 0000000..b52cfcf
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/mapper/SysAgriLimitMapper.java
@@ -0,0 +1,61 @@
+package com.agri.system.mapper;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriLimit;
+
+/**
+ * 执行时间限位管理Mapper接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface SysAgriLimitMapper
+{
+ /**
+ * 查询执行时间限位管理
+ *
+ * @param id 执行时间限位管理主键
+ * @return 执行时间限位管理
+ */
+ public SysAgriLimit selectSysAgriLimitById(String id);
+
+ /**
+ * 查询执行时间限位管理列表
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 执行时间限位管理集合
+ */
+ public List selectSysAgriLimitList(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 新增执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ public int insertSysAgriLimit(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 修改执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ public int updateSysAgriLimit(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 删除执行时间限位管理
+ *
+ * @param id 执行时间限位管理主键
+ * @return 结果
+ */
+ public int deleteSysAgriLimitById(String id);
+
+ /**
+ * 批量删除执行时间限位管理
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriLimitByIds(String[] ids);
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/ISysAgriAlarmRelationService.java b/agri-system/src/main/java/com/agri/system/service/ISysAgriAlarmRelationService.java
new file mode 100644
index 0000000..ca70975
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/ISysAgriAlarmRelationService.java
@@ -0,0 +1,61 @@
+package com.agri.system.service;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriAlarmRelation;
+
+/**
+ * 告警方式设置Service接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface ISysAgriAlarmRelationService
+{
+ /**
+ * 查询告警方式设置
+ *
+ * @param id 告警方式设置主键
+ * @return 告警方式设置
+ */
+ public SysAgriAlarmRelation selectSysAgriAlarmRelationById(Long id);
+
+ /**
+ * 查询告警方式设置列表
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 告警方式设置集合
+ */
+ public List selectSysAgriAlarmRelationList(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 新增告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ public int insertSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 修改告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ public int updateSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation);
+
+ /**
+ * 批量删除告警方式设置
+ *
+ * @param ids 需要删除的告警方式设置主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriAlarmRelationByIds(Long[] ids);
+
+ /**
+ * 删除告警方式设置信息
+ *
+ * @param id 告警方式设置主键
+ * @return 结果
+ */
+ public int deleteSysAgriAlarmRelationById(Long id);
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/ISysAgriInfoService.java b/agri-system/src/main/java/com/agri/system/service/ISysAgriInfoService.java
new file mode 100644
index 0000000..25e4785
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/ISysAgriInfoService.java
@@ -0,0 +1,61 @@
+package com.agri.system.service;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriInfo;
+
+/**
+ * 大棚管理Service接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface ISysAgriInfoService
+{
+ /**
+ * 查询大棚管理
+ *
+ * @param id 大棚管理主键
+ * @return 大棚管理
+ */
+ public SysAgriInfo selectSysAgriInfoById(Long id);
+
+ /**
+ * 查询大棚管理列表
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 大棚管理集合
+ */
+ public List selectSysAgriInfoList(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 新增大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ public int insertSysAgriInfo(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 修改大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ public int updateSysAgriInfo(SysAgriInfo sysAgriInfo);
+
+ /**
+ * 批量删除大棚管理
+ *
+ * @param ids 需要删除的大棚管理主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriInfoByIds(Long[] ids);
+
+ /**
+ * 删除大棚管理信息
+ *
+ * @param id 大棚管理主键
+ * @return 结果
+ */
+ public int deleteSysAgriInfoById(Long id);
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/ISysAgriLimitService.java b/agri-system/src/main/java/com/agri/system/service/ISysAgriLimitService.java
new file mode 100644
index 0000000..06829bf
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/ISysAgriLimitService.java
@@ -0,0 +1,61 @@
+package com.agri.system.service;
+
+import java.util.List;
+import com.agri.system.domain.SysAgriLimit;
+
+/**
+ * 执行时间限位管理Service接口
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+public interface ISysAgriLimitService
+{
+ /**
+ * 查询执行时间限位管理
+ *
+ * @param id 执行时间限位管理主键
+ * @return 执行时间限位管理
+ */
+ public SysAgriLimit selectSysAgriLimitById(String id);
+
+ /**
+ * 查询执行时间限位管理列表
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 执行时间限位管理集合
+ */
+ public List selectSysAgriLimitList(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 新增执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ public int insertSysAgriLimit(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 修改执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ public int updateSysAgriLimit(SysAgriLimit sysAgriLimit);
+
+ /**
+ * 批量删除执行时间限位管理
+ *
+ * @param ids 需要删除的执行时间限位管理主键集合
+ * @return 结果
+ */
+ public int deleteSysAgriLimitByIds(String[] ids);
+
+ /**
+ * 删除执行时间限位管理信息
+ *
+ * @param id 执行时间限位管理主键
+ * @return 结果
+ */
+ public int deleteSysAgriLimitById(String id);
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/impl/SysAgriAlarmRelationServiceImpl.java b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriAlarmRelationServiceImpl.java
new file mode 100644
index 0000000..a4b3734
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriAlarmRelationServiceImpl.java
@@ -0,0 +1,96 @@
+package com.agri.system.service.impl;
+
+import java.util.List;
+import com.agri.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.agri.system.mapper.SysAgriAlarmRelationMapper;
+import com.agri.system.domain.SysAgriAlarmRelation;
+import com.agri.system.service.ISysAgriAlarmRelationService;
+
+/**
+ * 告警方式设置Service业务层处理
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@Service
+public class SysAgriAlarmRelationServiceImpl implements ISysAgriAlarmRelationService
+{
+ @Autowired
+ private SysAgriAlarmRelationMapper sysAgriAlarmRelationMapper;
+
+ /**
+ * 查询告警方式设置
+ *
+ * @param id 告警方式设置主键
+ * @return 告警方式设置
+ */
+ @Override
+ public SysAgriAlarmRelation selectSysAgriAlarmRelationById(Long id)
+ {
+ return sysAgriAlarmRelationMapper.selectSysAgriAlarmRelationById(id);
+ }
+
+ /**
+ * 查询告警方式设置列表
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 告警方式设置
+ */
+ @Override
+ public List selectSysAgriAlarmRelationList(SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ return sysAgriAlarmRelationMapper.selectSysAgriAlarmRelationList(sysAgriAlarmRelation);
+ }
+
+ /**
+ * 新增告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ @Override
+ public int insertSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ sysAgriAlarmRelation.setCreateTime(DateUtils.getNowDate());
+ return sysAgriAlarmRelationMapper.insertSysAgriAlarmRelation(sysAgriAlarmRelation);
+ }
+
+ /**
+ * 修改告警方式设置
+ *
+ * @param sysAgriAlarmRelation 告警方式设置
+ * @return 结果
+ */
+ @Override
+ public int updateSysAgriAlarmRelation(SysAgriAlarmRelation sysAgriAlarmRelation)
+ {
+ sysAgriAlarmRelation.setUpdateTime(DateUtils.getNowDate());
+ return sysAgriAlarmRelationMapper.updateSysAgriAlarmRelation(sysAgriAlarmRelation);
+ }
+
+ /**
+ * 批量删除告警方式设置
+ *
+ * @param ids 需要删除的告警方式设置主键
+ * @return 结果
+ */
+ @Override
+ public int deleteSysAgriAlarmRelationByIds(Long[] ids)
+ {
+ return sysAgriAlarmRelationMapper.deleteSysAgriAlarmRelationByIds(ids);
+ }
+
+ /**
+ * 删除告警方式设置信息
+ *
+ * @param id 告警方式设置主键
+ * @return 结果
+ */
+ @Override
+ public int deleteSysAgriAlarmRelationById(Long id)
+ {
+ return sysAgriAlarmRelationMapper.deleteSysAgriAlarmRelationById(id);
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java
new file mode 100644
index 0000000..9b0c209
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java
@@ -0,0 +1,134 @@
+package com.agri.system.service.impl;
+
+import java.util.List;
+import com.agri.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import com.agri.common.utils.StringUtils;
+import org.springframework.transaction.annotation.Transactional;
+import com.agri.system.domain.SysAgriLimit;
+import com.agri.system.mapper.SysAgriInfoMapper;
+import com.agri.system.domain.SysAgriInfo;
+import com.agri.system.service.ISysAgriInfoService;
+
+/**
+ * 大棚管理Service业务层处理
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@Service
+public class SysAgriInfoServiceImpl implements ISysAgriInfoService
+{
+ @Autowired
+ private SysAgriInfoMapper sysAgriInfoMapper;
+
+ /**
+ * 查询大棚管理
+ *
+ * @param id 大棚管理主键
+ * @return 大棚管理
+ */
+ @Override
+ public SysAgriInfo selectSysAgriInfoById(Long id)
+ {
+ return sysAgriInfoMapper.selectSysAgriInfoById(id);
+ }
+
+ /**
+ * 查询大棚管理列表
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 大棚管理
+ */
+ @Override
+ public List selectSysAgriInfoList(SysAgriInfo sysAgriInfo)
+ {
+ return sysAgriInfoMapper.selectSysAgriInfoList(sysAgriInfo);
+ }
+
+ /**
+ * 新增大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ @Transactional
+ @Override
+ public int insertSysAgriInfo(SysAgriInfo sysAgriInfo)
+ {
+ sysAgriInfo.setCreateTime(DateUtils.getNowDate());
+ int rows = sysAgriInfoMapper.insertSysAgriInfo(sysAgriInfo);
+ insertSysAgriLimit(sysAgriInfo);
+ return rows;
+ }
+
+ /**
+ * 修改大棚管理
+ *
+ * @param sysAgriInfo 大棚管理
+ * @return 结果
+ */
+ @Transactional
+ @Override
+ public int updateSysAgriInfo(SysAgriInfo sysAgriInfo)
+ {
+ sysAgriInfo.setUpdateTime(DateUtils.getNowDate());
+ sysAgriInfoMapper.deleteSysAgriLimitByAgriId(sysAgriInfo.getId());
+ insertSysAgriLimit(sysAgriInfo);
+ return sysAgriInfoMapper.updateSysAgriInfo(sysAgriInfo);
+ }
+
+ /**
+ * 批量删除大棚管理
+ *
+ * @param ids 需要删除的大棚管理主键
+ * @return 结果
+ */
+ @Transactional
+ @Override
+ public int deleteSysAgriInfoByIds(Long[] ids)
+ {
+ sysAgriInfoMapper.deleteSysAgriLimitByAgriIds(ids);
+ return sysAgriInfoMapper.deleteSysAgriInfoByIds(ids);
+ }
+
+ /**
+ * 删除大棚管理信息
+ *
+ * @param id 大棚管理主键
+ * @return 结果
+ */
+ @Transactional
+ @Override
+ public int deleteSysAgriInfoById(Long id)
+ {
+ sysAgriInfoMapper.deleteSysAgriLimitByAgriId(id);
+ return sysAgriInfoMapper.deleteSysAgriInfoById(id);
+ }
+
+ /**
+ * 新增执行时间限位管理信息
+ *
+ * @param sysAgriInfo 大棚管理对象
+ */
+ public void insertSysAgriLimit(SysAgriInfo sysAgriInfo)
+ {
+ List sysAgriLimitList = sysAgriInfo.getSysAgriLimitList();
+ Long id = sysAgriInfo.getId();
+ if (StringUtils.isNotNull(sysAgriLimitList))
+ {
+ List list = new ArrayList();
+ for (SysAgriLimit sysAgriLimit : sysAgriLimitList)
+ {
+ sysAgriLimit.setAgriId(id);
+ list.add(sysAgriLimit);
+ }
+ if (list.size() > 0)
+ {
+ sysAgriInfoMapper.batchSysAgriLimit(list);
+ }
+ }
+ }
+}
diff --git a/agri-system/src/main/java/com/agri/system/service/impl/SysAgriLimitServiceImpl.java b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriLimitServiceImpl.java
new file mode 100644
index 0000000..4d002e6
--- /dev/null
+++ b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriLimitServiceImpl.java
@@ -0,0 +1,96 @@
+package com.agri.system.service.impl;
+
+import java.util.List;
+import com.agri.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.agri.system.mapper.SysAgriLimitMapper;
+import com.agri.system.domain.SysAgriLimit;
+import com.agri.system.service.ISysAgriLimitService;
+
+/**
+ * 执行时间限位管理Service业务层处理
+ *
+ * @author agri
+ * @date 2026-01-07
+ */
+@Service
+public class SysAgriLimitServiceImpl implements ISysAgriLimitService
+{
+ @Autowired
+ private SysAgriLimitMapper sysAgriLimitMapper;
+
+ /**
+ * 查询执行时间限位管理
+ *
+ * @param id 执行时间限位管理主键
+ * @return 执行时间限位管理
+ */
+ @Override
+ public SysAgriLimit selectSysAgriLimitById(String id)
+ {
+ return sysAgriLimitMapper.selectSysAgriLimitById(id);
+ }
+
+ /**
+ * 查询执行时间限位管理列表
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 执行时间限位管理
+ */
+ @Override
+ public List selectSysAgriLimitList(SysAgriLimit sysAgriLimit)
+ {
+ return sysAgriLimitMapper.selectSysAgriLimitList(sysAgriLimit);
+ }
+
+ /**
+ * 新增执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ @Override
+ public int insertSysAgriLimit(SysAgriLimit sysAgriLimit)
+ {
+ sysAgriLimit.setCreateTime(DateUtils.getNowDate());
+ return sysAgriLimitMapper.insertSysAgriLimit(sysAgriLimit);
+ }
+
+ /**
+ * 修改执行时间限位管理
+ *
+ * @param sysAgriLimit 执行时间限位管理
+ * @return 结果
+ */
+ @Override
+ public int updateSysAgriLimit(SysAgriLimit sysAgriLimit)
+ {
+ sysAgriLimit.setUpdateTime(DateUtils.getNowDate());
+ return sysAgriLimitMapper.updateSysAgriLimit(sysAgriLimit);
+ }
+
+ /**
+ * 批量删除执行时间限位管理
+ *
+ * @param ids 需要删除的执行时间限位管理主键
+ * @return 结果
+ */
+ @Override
+ public int deleteSysAgriLimitByIds(String[] ids)
+ {
+ return sysAgriLimitMapper.deleteSysAgriLimitByIds(ids);
+ }
+
+ /**
+ * 删除执行时间限位管理信息
+ *
+ * @param id 执行时间限位管理主键
+ * @return 结果
+ */
+ @Override
+ public int deleteSysAgriLimitById(String id)
+ {
+ return sysAgriLimitMapper.deleteSysAgriLimitById(id);
+ }
+}
diff --git a/agri-system/src/main/resources/mapper/system/SysAgriAlarmRelationMapper.xml b/agri-system/src/main/resources/mapper/system/SysAgriAlarmRelationMapper.xml
new file mode 100644
index 0000000..3947f17
--- /dev/null
+++ b/agri-system/src/main/resources/mapper/system/SysAgriAlarmRelationMapper.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, agri_id, imei, type_code, create_by, create_time, is_deleted, agri_name, update_by, update_time from sys_agri_alarm_relation
+
+
+
+
+
+
+
+ insert into sys_agri_alarm_relation
+
+ agri_id,
+ imei,
+ type_code,
+ create_by,
+ create_time,
+ is_deleted,
+ agri_name,
+ update_by,
+ update_time,
+
+
+ #{agriId},
+ #{imei},
+ #{typeCode},
+ #{createBy},
+ #{createTime},
+ #{isDeleted},
+ #{agriName},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update sys_agri_alarm_relation
+
+ agri_id = #{agriId},
+ imei = #{imei},
+ type_code = #{typeCode},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ is_deleted = #{isDeleted},
+ agri_name = #{agriName},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where id = #{id}
+
+
+
+ delete from sys_agri_alarm_relation where id = #{id}
+
+
+
+ delete from sys_agri_alarm_relation where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml b/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml
new file mode 100644
index 0000000..1f65540
--- /dev/null
+++ b/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, imei, agri_name, user_id, temp_upper, temp_lower, humi_upper, humi_lower, alarm_status, device_status, install_time, location, remark, create_time, create_by, update_time, update_by, is_deleted from sys_agri_info
+
+
+
+
+
+
+
+
+
+ insert into sys_agri_info
+
+ imei,
+ agri_name,
+ user_id,
+ temp_upper,
+ temp_lower,
+ humi_upper,
+ humi_lower,
+ alarm_status,
+ device_status,
+ install_time,
+ location,
+ remark,
+ create_time,
+ create_by,
+ update_time,
+ update_by,
+ is_deleted,
+
+
+ #{imei},
+ #{agriName},
+ #{userId},
+ #{tempUpper},
+ #{tempLower},
+ #{humiUpper},
+ #{humiLower},
+ #{alarmStatus},
+ #{deviceStatus},
+ #{installTime},
+ #{location},
+ #{remark},
+ #{createTime},
+ #{createBy},
+ #{updateTime},
+ #{updateBy},
+ #{isDeleted},
+
+
+
+
+ update sys_agri_info
+
+ imei = #{imei},
+ agri_name = #{agriName},
+ user_id = #{userId},
+ temp_upper = #{tempUpper},
+ temp_lower = #{tempLower},
+ humi_upper = #{humiUpper},
+ humi_lower = #{humiLower},
+ alarm_status = #{alarmStatus},
+ device_status = #{deviceStatus},
+ install_time = #{installTime},
+ location = #{location},
+ remark = #{remark},
+ create_time = #{createTime},
+ create_by = #{createBy},
+ update_time = #{updateTime},
+ update_by = #{updateBy},
+ is_deleted = #{isDeleted},
+
+ where id = #{id}
+
+
+
+ delete from sys_agri_info where id = #{id}
+
+
+
+ delete from sys_agri_info where id in
+
+ #{id}
+
+
+
+
+ delete from sys_agri_limit where agri_id in
+
+ #{agriId}
+
+
+
+
+ delete from sys_agri_limit where agri_id = #{agriId}
+
+
+
+ insert into sys_agri_limit( id, agri_id, agri_name, imei, jbk_limit, jbg_limit, jm1k_limit, jm1g_limit, jm2k_limit, jm2g_limit, jm3k_limit, jm3g_limit, remark, version, create_by, create_time, update_id, update_time, deleted, delete_time) values
+
+ ( #{item.id}, #{item.agriId}, #{item.agriName}, #{item.imei}, #{item.jbkLimit}, #{item.jbgLimit}, #{item.jm1kLimit}, #{item.jm1gLimit}, #{item.jm2kLimit}, #{item.jm2gLimit}, #{item.jm3kLimit}, #{item.jm3gLimit}, #{item.remark}, #{item.version}, #{item.createBy}, #{item.createTime}, #{item.updateId}, #{item.updateTime}, #{item.deleted}, #{item.deleteTime})
+
+
+
\ No newline at end of file
diff --git a/agri-system/src/main/resources/mapper/system/SysAgriLimitMapper.xml b/agri-system/src/main/resources/mapper/system/SysAgriLimitMapper.xml
new file mode 100644
index 0000000..c2efede
--- /dev/null
+++ b/agri-system/src/main/resources/mapper/system/SysAgriLimitMapper.xml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, agri_id, agri_name, imei, jbk_limit, jbg_limit, jm1k_limit, jm1g_limit, jm2k_limit, jm2g_limit, jm3k_limit, jm3g_limit, remark, version, create_by, create_time, update_id, update_time, deleted, delete_time from sys_agri_limit
+
+
+
+
+
+
+
+ insert into sys_agri_limit
+
+ agri_id,
+ agri_name,
+ imei,
+ jbk_limit,
+ jbg_limit,
+ jm1k_limit,
+ jm1g_limit,
+ jm2k_limit,
+ jm2g_limit,
+ jm3k_limit,
+ jm3g_limit,
+ remark,
+ version,
+ create_by,
+ create_time,
+ update_id,
+ update_time,
+ deleted,
+ delete_time,
+
+
+ #{agriId},
+ #{agriName},
+ #{imei},
+ #{jbkLimit},
+ #{jbgLimit},
+ #{jm1kLimit},
+ #{jm1gLimit},
+ #{jm2kLimit},
+ #{jm2gLimit},
+ #{jm3kLimit},
+ #{jm3gLimit},
+ #{remark},
+ #{version},
+ #{createBy},
+ #{createTime},
+ #{updateId},
+ #{updateTime},
+ #{deleted},
+ #{deleteTime},
+
+
+
+
+ update sys_agri_limit
+
+ agri_id = #{agriId},
+ agri_name = #{agriName},
+ imei = #{imei},
+ jbk_limit = #{jbkLimit},
+ jbg_limit = #{jbgLimit},
+ jm1k_limit = #{jm1kLimit},
+ jm1g_limit = #{jm1gLimit},
+ jm2k_limit = #{jm2kLimit},
+ jm2g_limit = #{jm2gLimit},
+ jm3k_limit = #{jm3kLimit},
+ jm3g_limit = #{jm3gLimit},
+ remark = #{remark},
+ version = #{version},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_id = #{updateId},
+ update_time = #{updateTime},
+ deleted = #{deleted},
+ delete_time = #{deleteTime},
+
+ where id = #{id}
+
+
+
+ delete from sys_agri_limit where id = #{id}
+
+
+
+ delete from sys_agri_limit where id in
+
+ #{id}
+
+
+
\ No newline at end of file