queryTreeList();
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/mapper/xml/ProjectInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/mapper/xml/ProjectInfoMapper.xml
new file mode 100644
index 0000000..0160700
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/mapper/xml/ProjectInfoMapper.xml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+ insert into nu_iot_tplink_project(
+ project_id,
+ project_name,
+ create_time,
+ device_num,
+ message_num,
+ sort,
+ offline_num,
+ abnormal_num,
+ unread_message_num,
+ total_nms_dev_num,
+ total_vms_dev_num,
+ total_nbs_dev_num,
+ offline_nms_dev_num,
+ offline_vms_dev_num,
+ offline_nbs_dev_num,
+ running_time,
+ status,
+ iz_leaf
+ )
+ values(
+ #{projectId},
+ #{projectName},
+ #{createTime},
+ #{deviceNum},
+ #{messageNum},
+ #{sort},
+ #{offlineNum},
+ #{abnormalNum},
+ #{unreadMessageNum},
+ #{totalNmsDevNum},
+ #{totalVmsDevNum},
+ #{totalNbsDevNum},
+ #{offlineNmsDevNum},
+ #{offlineVmsDevNum},
+ #{offlineNbsDevNum},
+ #{runningTime},
+ #{status},
+ 1
+ )
+
+
+
+ update nu_iot_tplink_project
+ set
+ project_id = #{projectId},
+ project_name = #{projectName},
+ create_time = #{createTime},
+ device_num = #{deviceNum},
+ message_num = #{messageNum},
+ sort = #{sort},
+ offline_num = #{offlineNum},
+ abnormal_num = #{abnormalNum},
+ unread_message_num = #{unreadMessageNum},
+ total_nms_dev_num = #{totalNmsDevNum},
+ total_vms_dev_num = #{totalVmsDevNum},
+ total_nbs_dev_num = #{totalNbsDevNum},
+ offline_nms_dev_num = #{offlineNmsDevNum},
+ offline_vms_dev_num = #{offlineVmsDevNum},
+ offline_nbs_dev_num = #{offlineNbsDevNum},
+ running_time = #{runningTime}
+ where id = #{id}
+
+
+
+ update nu_iot_tplink_project
+ set iz_leaf = #{izLeaf}
+ where project_id = #{projectId}
+
+
+
+
+
\ No newline at end of file
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/model/ProjectTreeModel.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/model/ProjectTreeModel.java
new file mode 100644
index 0000000..0b11464
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/model/ProjectTreeModel.java
@@ -0,0 +1,193 @@
+package com.nu.modules.tplink.project.model;
+
+import com.nu.modules.tplink.project.entity.ProjectInfo;
+import com.nu.modules.tplink.region.model.RegionTreeModel;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ *
+ * 项目表 存储项目结构数据的实体类
+ *
+ *
+ * @Author 曹磊
+ * @Since 2025-02-27
+ */
+public class ProjectTreeModel implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ /** 对应ProjectInfo中的projectId字段,前端数据树中的key*/
+ private String key;
+
+ /** 对应ProjectInfo中的projectId字段,前端数据树中的value*/
+ private String value;
+
+ /** 对应ProjectInfo中的projectName字段,前端数据树中的title*/
+ private String title;
+
+ private boolean isLeaf;
+
+ private String type;
+ // 以下所有字段均与ProjectInfo相同
+
+ private String id;
+
+ private String projectId;
+
+ private String projectName;
+
+ private String order;
+
+ private Integer sort;
+
+ private List children = new ArrayList<>();
+
+
+ /**
+ * 将ProjectInfo对象转换成ProjectTreeModel对象
+ * @param projectInfo
+ */
+ public ProjectTreeModel(ProjectInfo projectInfo) {
+ this.key = projectInfo.getProjectId();
+ this.value = projectInfo.getProjectId();
+ this.title = projectInfo.getProjectName();
+ this.type = "project";
+ this.id = "0";
+ this.projectId = projectInfo.getProjectId();
+ this.projectName = projectInfo.getProjectName();
+ this.order = projectInfo.getOrder();
+ this.sort = projectInfo.getSort();
+ if(0 == projectInfo.getIzLeaf()){
+ this.isLeaf = false;
+ }else{
+ this.isLeaf = true;
+ }
+ }
+
+ public boolean getIsLeaf() {
+ return isLeaf;
+ }
+
+ public void setIsLeaf(boolean isleaf) {
+ this.isLeaf = isleaf;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public void setChildren(List children) {
+ if (children==null){
+ this.isLeaf=true;
+ }
+ this.children = children;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public static long getSerialVersionUID() {
+ return serialVersionUID;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getOrder() {
+ return order;
+ }
+
+ public void setOrder(String order) {
+ this.order = order;
+ }
+
+ public Integer getSort() {
+ return sort;
+ }
+
+ public void setSort(Integer sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * 重写equals方法
+ */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ProjectTreeModel model = (ProjectTreeModel) o;
+ return Objects.equals(id, model.id) &&
+ Objects.equals(projectId, model.projectId) &&
+ Objects.equals(projectName, model.projectName) &&
+ Objects.equals(order, model.order) &&
+ Objects.equals(sort, model.sort) &&
+ Objects.equals(children, model.children);
+ }
+
+ /**
+ * 重写hashCode方法
+ */
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, projectId, projectName, order, sort, children);
+ }
+
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/IProjectInfoService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/IProjectInfoService.java
new file mode 100644
index 0000000..e7845c0
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/IProjectInfoService.java
@@ -0,0 +1,24 @@
+package com.nu.modules.tplink.project.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import com.nu.modules.tplink.project.entity.ProjectInfo;
+import com.nu.modules.tplink.project.model.ProjectTreeModel;
+
+import java.util.List;
+
+/**
+ * @Description: 护理单元-物联管理-TPLINK项目信息
+ * @Author: jeecg-boot
+ * @Date: 2025-01-22
+ * @Version: V1.0
+ */
+public interface IProjectInfoService extends IService {
+ Result sync();
+ void sync(String jsonResponse);
+ List findList(ProjectInfo projectInfo);
+ IPage findPage(Page page, ProjectInfo projectInfo);
+ List queryTreeList();
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/impl/ProjectInfoServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/impl/ProjectInfoServiceImpl.java
new file mode 100644
index 0000000..1431682
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/project/service/impl/ProjectInfoServiceImpl.java
@@ -0,0 +1,131 @@
+package com.nu.modules.tplink.project.service.impl;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import com.nu.modules.tplink.project.entity.ProjectInfo;
+import com.nu.modules.tplink.project.mapper.ProjectInfoMapper;
+import com.nu.modules.tplink.project.model.ProjectTreeModel;
+import com.nu.modules.tplink.project.service.IProjectInfoService;
+import com.nu.modules.tplink.utils.TumsApi;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 护理单元-物联管理-TPLINK项目信息
+ * @Author: jeecg-boot
+ * @Date: 2025-01-22
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class ProjectInfoServiceImpl extends ServiceImpl implements IProjectInfoService {
+
+ @Autowired
+ private TumsApi tumsApi;
+
+
+ /**
+ * 同步项目信息
+ * @return
+ */
+ @Override
+ public Result sync(){
+ StringBuffer sb = new StringBuffer();
+ sb.append("{");
+ sb.append("\"start\"").append(":0,");
+ sb.append("\"limit\"").append(":1000");
+ sb.append("}");
+ String jsonResponse = tumsApi.getAllProjectInfo(sb.toString());
+ JSONObject jsonObject = new JSONObject(jsonResponse);
+ String errorCode = jsonObject.getStr("error_code");
+ if(errorCode.equals("0")){
+ sync(jsonResponse);
+ return Result.OK("同步项目成功!");
+ }else{
+ return Result.error(jsonObject.getStr("msg"));
+ }
+ }
+
+ /**
+ * 接口返回数据同步入库
+ * @param jsonResponse
+ */
+ @Override
+ public void sync(String jsonResponse){
+ JSONObject jsonObject = new JSONObject(jsonResponse);
+ if(jsonObject.getInt("error_code").equals(0)){
+ JSONObject result = (JSONObject)jsonObject.get("result");
+ if(result.getInt("total")>0){
+ JSONArray list = result.getJSONArray("list");
+ for(int i=0;i map = new HashMap<>();
+ for (String key : voObject.keySet()) {
+ map.put(key, voObject.getStr(key));
+ }
+ map.put("sort", map.get("order"));
+ ProjectInfo entity = baseMapper.getByProjectId(map);
+ if(entity==null){
+ //新增
+ map.put("status","1");
+ baseMapper.add(map);
+ }else{
+ //修改
+ map.put("id",String.valueOf(entity.getId()));
+ baseMapper.updateById(map);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * TPLINK项目信息列表查询
+ *
+ * @param projectInfo
+ * @return
+ */
+ @Override
+ public List findList(ProjectInfo projectInfo){
+ return baseMapper.findList(projectInfo);
+ }
+
+ /**
+ * TPLINK项目信息分页列表查询
+ *
+ * @param page
+ * @param projectInfo
+ * @return
+ */
+ @Override
+ public IPage findPage(Page page,ProjectInfo projectInfo){
+ return baseMapper.findPage(page,projectInfo);
+ }
+
+ /**
+ * 查询项目treeList
+ *
+ */
+ @Override
+ public List queryTreeList(){
+ List records = new ArrayList<>();
+ List list = baseMapper.queryTreeList();
+ for (int i = 0; i < list.size(); i++) {
+ ProjectInfo project = list.get(i);
+ ProjectTreeModel treeModel = new ProjectTreeModel(project);
+ records.add(treeModel);
+ }
+ return records;
+ }
+
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/controller/RegionInfoController.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/controller/RegionInfoController.java
new file mode 100644
index 0000000..b33a2dc
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/controller/RegionInfoController.java
@@ -0,0 +1,89 @@
+/**
+ * Version:v1.0.0 ,
+ * Description:TP-LINK厂家区域信息相关操作
+ * CreateDate:2025-02-20 09:00:00
+ * Author:曹磊
+ */
+package com.nu.modules.tplink.region.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.base.controller.JeecgController;
+import com.nu.modules.tplink.region.entity.RegionInfo;
+import com.nu.modules.tplink.region.model.RegionTreeModel;
+import com.nu.modules.tplink.region.service.IRegionInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+* @Description: 护理单元-物联管理-TPLINK区域信息
+* @Author: jeecg-boot
+* @Date: 2025-02-20
+* @Version: V1.0
+*/
+@Api(tags="护理单元-物联管理-TPLINK区域信息")
+@RestController
+@RequestMapping("/iot/regionInfo")
+@Slf4j
+public class RegionInfoController extends JeecgController {
+ @Autowired
+ private IRegionInfoService service;
+
+ /**
+ * 分页列表查询
+ *
+ * @param regionInfo
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "护理单元-物联管理-TPLINK项目信息-分页列表查询")
+ @ApiOperation(value="护理单元-物联管理-TPLINK项目信息-分页列表查询", notes="护理单元-物联管理-TPLINK项目信息-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(RegionInfo regionInfo,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = service.findPage(page, regionInfo);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 同步区域信息
+ *
+ * @return
+ */
+ @GetMapping(value = "/sync")
+ public Result getUploadToServerProcess(RegionInfo regionInfo)throws Exception{
+ return service.sync(regionInfo);
+ }
+
+ /**
+ * 异步查询区域list
+ * @param parentId 父节点 异步加载时传递
+ * @return
+ */
+ @RequestMapping(value = "/queryRegionTreeSync", method = RequestMethod.GET)
+ public Result> queryDepartTreeSync(@RequestParam(name = "parentId", required = false) String parentId, @RequestParam(name = "projectId", required = false) String projectId) {
+ Result> result = new Result<>();
+ try {
+ List list = service.queryTreeListByPid(parentId,projectId);
+ result.setResult(list);
+ result.setSuccess(true);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ result.setSuccess(false);
+ result.setMessage("查询失败");
+ }
+ return result;
+ }
+
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/entity/RegionInfo.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/entity/RegionInfo.java
new file mode 100644
index 0000000..99e2d49
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/entity/RegionInfo.java
@@ -0,0 +1,109 @@
+package com.nu.modules.tplink.region.entity;
+
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 护理单元-物联管理-TPLINK区域信息
+ * @Author: jeecg-boot
+ * @Date: 2025-02-20
+ * @Version: V1.0
+ */
+@Data
+@TableName("nu_iot_tplink_region")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="nu_iot_tplink_region对象", description="护理单元-物联管理-TPLINK区域信息")
+public class RegionInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**ID*/
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "ID")
+ private Integer id;
+ /**区域ID*/
+ @Excel(name = "区域ID", width = 15)
+ @ApiModelProperty(value = "区域ID")
+ private String regionId;
+ /**区域名称*/
+ @Excel(name = "区域名称", width = 15)
+ @ApiModelProperty(value = "区域名称")
+ private String regionName;
+ /**区域层级*/
+ @Excel(name = "区域层级", width = 15)
+ @ApiModelProperty(value = "区域层级")
+ private String regionLevel;
+ /**区域次序,接口对应字段,在数据库中是关键字,数据库中用sort代替order*/
+ @ApiModelProperty(value = "项目次序")
+ @TableField(exist = false)
+ private String order;
+ /**项目次序*/
+ @Excel(name = "项目次序", width = 15)
+ @ApiModelProperty(value = "项目次序")
+ private Integer sort;
+ /**父区域ID*/
+ @Excel(name = "父区域ID", width = 15)
+ @ApiModelProperty(value = "父区域ID")
+ private String parentId;
+ /**父区域ID*/
+ @Excel(name = "父区域", width = 15)
+ @ApiModelProperty(value = "父区域")
+ @TableField(exist = false)
+ private String parentName;
+ /**项目ID*/
+ @Excel(name = "项目ID", width = 15)
+ @ApiModelProperty(value = "项目ID")
+ private String projectId;
+ /**项目名称*/
+ @Excel(name = "项目名称", width = 15)
+ @ApiModelProperty(value = "项目名称")
+ @TableField(exist = false)
+ private String projectName;
+ /**系统类型*/
+ @Excel(name = "系统类型", width = 15)
+ @ApiModelProperty(value = "系统类型")
+ private String sysType;
+ /**流道*/
+ @Excel(name = "流道", width = 15)
+ @ApiModelProperty(value = "流道")
+ private String streamWay;
+ /**是否有子区域*/
+ @Excel(name = "是否有子区域", width = 15)
+ @ApiModelProperty(value = "是否有子区域 0无 1有")
+ private String hasChildren;
+ /**区域类型*/
+ @Excel(name = "区域类型", width = 15)
+ @ApiModelProperty(value = "区域类型")
+ private String regionType;
+ /**更新时间*/
+ @Excel(name = "更新时间", width = 15)
+ @ApiModelProperty(value = "更新时间,年月日时分秒")
+ private String updateTime;
+ /**流媒体服务器ID*/
+ @Excel(name = "流媒体服务器ID", width = 15)
+ @ApiModelProperty(value = "流媒体服务器ID")
+ private String mediaServerId;
+ /**备用流媒体服务器ID*/
+ @Excel(name = "备用流媒体服务器ID", width = 15)
+ @ApiModelProperty(value = "备用流媒体服务器ID")
+ private String backupMediaServerId;
+ /**绑定类型*/
+ @Excel(name = "绑定类型", width = 15)
+ @ApiModelProperty(value = "绑定类型 0:设备直接取流/流媒体转发模式,1: 自动模式")
+ private String bindType;
+ /**是否有叶子节点: 1是0否*/
+ @Excel(name = "是否有叶子节点: 1是0否", width = 15)
+ @ApiModelProperty(value = "是否有叶子节点: 1是0否")
+ private Integer izLeaf;
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/job/RegionSyncJob.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/job/RegionSyncJob.java
new file mode 100644
index 0000000..05dc45e
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/job/RegionSyncJob.java
@@ -0,0 +1,55 @@
+package com.nu.modules.tplink.region.job;
+
+import cn.hutool.json.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import com.nu.modules.tplink.project.entity.ProjectInfo;
+import com.nu.modules.tplink.project.service.IProjectInfoService;
+import com.nu.modules.tplink.region.service.IRegionInfoService;
+import com.nu.modules.tplink.utils.TumsApi;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+/**
+ * 区域信息同步
+ */
+@Slf4j
+public class RegionSyncJob implements Job {
+
+ @Autowired
+ IRegionInfoService service;
+ @Autowired
+ IProjectInfoService pService;
+
+ @Autowired
+ private TumsApi tumsApi;
+
+ @Override
+ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+ ProjectInfo pi = new ProjectInfo();
+ pi.setStatus(1);//正常状态
+ List projectList = pService.findList(pi);
+ if(projectList!=null&&projectList.size()>0){
+ for(int i=0;i< projectList.size();i++){
+ ProjectInfo projectInfo = projectList.get(i);
+ String jsonRequest = "{\n" +
+ " \"projectId\": \""+projectInfo.getProjectId()+"\",\n"+
+ " \"sysType\": 3\n"+
+ "}";
+// System.out.println(jsonRequest);
+ String jsonResponse = tumsApi.getRootRegions(jsonRequest);
+ JSONObject jsonObject = new JSONObject(jsonResponse);
+ String errorCode = jsonObject.getStr("error_code");
+ if(errorCode.equals("0")){
+ service.sync(jsonResponse);
+ }else{
+ log.error("RegionSyncJob:{}-{}", DateUtils.now(),jsonObject.getStr("msg"));
+ }
+ }
+ }
+ }
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/RegionInfoMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/RegionInfoMapper.java
new file mode 100644
index 0000000..2fe3196
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/RegionInfoMapper.java
@@ -0,0 +1,24 @@
+package com.nu.modules.tplink.region.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.nu.modules.tplink.region.entity.RegionInfo;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 护理单元-物联管理-TPLINK区域信息
+ * @Author: jeecg-boot
+ * @Date: 2025-02-20
+ * @Version: V1.0
+ */
+public interface RegionInfoMapper extends BaseMapper {
+ RegionInfo getByRegionId(Map map);
+ List findList(RegionInfo regionInfo);
+ IPage findPage(Page page, @Param("params") RegionInfo regionInfo);
+ int add(Map map);
+ int updateById(Map map);
+ List queryTreeListByPid(String parentId,String projectId);
+}
diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml
new file mode 100644
index 0000000..a755b3e
--- /dev/null
+++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/region/mapper/xml/RegionInfoMapper.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+