删除无用代码-区域标签,同步tplink代码和结构代码与运维系统统一

This commit is contained in:
曹磊 2025-05-06 11:01:02 +08:00
parent ed7c4c84ab
commit 16e3c931c4
27 changed files with 455 additions and 1443 deletions

View File

@ -1,147 +0,0 @@
package com.nu.modules.institution.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.nu.modules.institution.entity.InstitutionArea;
import com.nu.modules.institution.model.InstitutionAreaTreeModel;
import com.nu.modules.institution.service.IInstitutionAreaService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.util.JwtUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* <p>
* 机构表 前端控制器
* <p>
*
* @Author: 曹磊 @Since 2025-03-25
*/
@RestController
@RequestMapping("/admin/institutionArea")
@Slf4j
public class InstitutionAreaController {
@Autowired
private IInstitutionAreaService service;
/**
* 异步查询机构list
* @param parentId 父节点 异步加载时传递
* @param primaryKey 主键字段id或者orgCode
* @return
*/
@RequestMapping(value = "/queryTreeSync", method = RequestMethod.GET)
public Result<List<InstitutionAreaTreeModel>> queryTreeSync(@RequestParam(name = "pid", required = false) String parentId, @RequestParam(name = "primaryKey", required = false) String primaryKey) {
Result<List<InstitutionAreaTreeModel>> result = new Result<>();
try {
List<InstitutionAreaTreeModel> list = service.queryTreeListByPid(parentId,primaryKey);
result.setResult(list);
result.setSuccess(true);
} catch (Exception e) {
log.error(e.getMessage(),e);
result.setSuccess(false);
result.setMessage("查询失败");
}
return result;
}
/**
* 添加新数据 添加用户新建的机构对象数据,并保存到数据库
*
* @param InstitutionArea
* @return
*/
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result<InstitutionArea> add(@RequestBody InstitutionArea InstitutionArea, HttpServletRequest request) {
Result<InstitutionArea> result = new Result<InstitutionArea>();
String username = JwtUtil.getUserNameByToken(request);
try {
InstitutionArea.setCreateBy(username);
service.saveInstData(InstitutionArea, username);
result.success("添加成功!");
} catch (Exception e) {
log.error(e.getMessage(),e);
result.error500("操作失败");
}
return result;
}
/**
* 编辑数据 编辑机构的部分数据,并保存到数据库
*
* @param InstitutionArea
* @return
*/
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<InstitutionArea> edit(@RequestBody InstitutionArea InstitutionArea, HttpServletRequest request) {
String username = JwtUtil.getUserNameByToken(request);
InstitutionArea.setUpdateBy(username);
Result<InstitutionArea> result = new Result<InstitutionArea>();
InstitutionArea InstitutionAreaEntity = service.getById(InstitutionArea.getId());
if (InstitutionAreaEntity == null) {
result.error500("未找到对应实体");
} else {
boolean ok = service.updateInstDataById(InstitutionArea, username);
if (ok) {
result.success("修改成功!");
}
}
return result;
}
/**
* 删除
* @param institutionArea
* @return
*/
@PostMapping(value = "/delete")
public Result<String> delete(@RequestBody InstitutionArea institutionArea){
InstitutionArea entity = service.getById(institutionArea.getId());
if(entity==null) {
return Result.error("未找到对应实体");
}else {
return service.deleteInst(entity);
}
}
/**
* <p>
* 机构搜索功能方法,根据关键字模糊搜索相关机构
* </p>
*
* @param keyWord
* @return
*/
@RequestMapping(value = "/searchBy", method = RequestMethod.GET)
public Result<List<InstitutionAreaTreeModel>> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord) {
Result<List<InstitutionAreaTreeModel>> result = new Result<List<InstitutionAreaTreeModel>>();
List<InstitutionAreaTreeModel> treeList = this.service.searchByKeyWord(keyWord);
if (treeList == null || treeList.size() == 0) {
result.setSuccess(false);
result.setMessage("未查询匹配数据!");
return result;
}
result.setResult(treeList);
return result;
}
/**
* 查询所有子区域信息
* @return
*/
@GetMapping("queryChildrenByParentId")
public Result<List<InstitutionArea>> queryChildrenByParentId(@RequestParam(name = "pid", required = false) String parentId) {
Result<List<InstitutionArea>> result = new Result<>();
LambdaQueryWrapper<InstitutionArea> query = new LambdaQueryWrapper<InstitutionArea>();
query.orderByAsc(InstitutionArea::getInstName);
query.eq(InstitutionArea::getParentId,parentId);
List<InstitutionArea> ls = this.service.list(query);
result.setSuccess(true);
result.setResult(ls);
return result;
}
}

View File

@ -1,86 +0,0 @@
package com.nu.modules.institution.entity;
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 com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/**
* <p>
* 机构区域表
* <p>
*
* @Author 曹磊
* @Since 2025-03-25
*/
@Data
@TableName("nu_admin_institution_area")
public class InstitutionArea implements Serializable {
private static final long serialVersionUID = 1L;
/**ID*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**父机构ID*/
private String parentId;
/**机构/部门名称*/
@Excel(name="机构/区域名称",width=15)
private String instName;
/**英文名*/
@Excel(name="英文名",width=15)
private String instNameEn;
/**缩写*/
private String instNameAbbr;
/**排序*/
@Excel(name="排序",width=15)
private Integer instOrder;
/**描述*/
@Excel(name="描述",width=15)
private String description;
/**机构类别 1=机构2=区域*/
@Excel(name="机构区域类别",width=15,dicCode="inst_category")
private String orgCategory;
/**机构类型 1一级部门 2子部门*/
private String orgType;
/**机构编码*/
@Excel(name="机构编码",width=15)
private String orgCode;
/**手机号*/
@Excel(name="手机号",width=15)
private String mobile;
/**地址*/
@Excel(name="地址",width=15)
private String address;
/**状态1启用0不启用*/
@Dict(dicCode = "depart_status")
private String status;
/**删除状态0正常1已删除*/
@Dict(dicCode = "del_flag")
private String delFlag;
/**创建人*/
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**租户ID*/
private Integer tenantId;
/**是否有叶子节点: 1是0否*/
private Integer izLeaf;
}

View File

@ -1,55 +0,0 @@
package com.nu.modules.institution.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.institution.entity.InstitutionArea;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* <p>
* 机构 Mapper 接口
* <p>
*
* @Author: 曹磊
* @Since 2025-03-25
*/
public interface InstitutionAreaMapper extends BaseMapper<InstitutionArea> {
/**
* 根据parent_id查询下级区域
* @param parentId 父id
* @return List<InstitutionArea>
*/
List<InstitutionArea> queryTreeListByPid(@Param("parentId") String parentId);
/**
* 根据id下级区域数量
* @param parentId
* @return
*/
@Select("SELECT count(*) FROM nu_admin_institution_area where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}")
Integer queryCountByPid(@Param("parentId")String parentId);
@InterceptorIgnore(tenantLine = "true")
@Select("SELECT * FROM nu_admin_institution_area where id = #{id,jdbcType=VARCHAR}")
InstitutionArea getInstById(@Param("id") String id);
@InterceptorIgnore(tenantLine = "true")
List<InstitutionArea> getMaxCodeInst(@Param("page") Page<InstitutionArea> page, @Param("parentId") String parentId);
/**
* 修改部门状态字段 是否子节点
* @param id 部门id
* @param leaf 叶子节点
* @return int
*/
@Update("UPDATE nu_admin_institution_area SET iz_leaf=#{leaf} WHERE id = #{id}")
int setMainLeaf(@Param("id") String id, @Param("leaf") Integer leaf);
}

View File

@ -1,34 +0,0 @@
<?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.nu.modules.institution.mapper.InstitutionAreaMapper">
<!--根据parent_id查询下级区域-->
<select id="queryTreeListByPid" parameterType="Object" resultType="com.nu.modules.institution.entity.InstitutionArea">
SELECT * FROM nu_admin_institution_area where del_flag = '0'
<choose>
<when test="parentId != null and parentId != ''">
AND parent_id = #{parentId,jdbcType=VARCHAR}
</when>
<otherwise>
AND parent_id is null or parent_id=''
</otherwise>
</choose>
order by inst_order
</select>
<!--获取机构orgCode最大值的机构信息-->
<select id="getMaxCodeInst" resultType="com.nu.modules.institution.entity.InstitutionArea">
SELECT * FROM nu_admin_institution_area
WHERE
<choose>
<when test="parentId != null and parentId != ''">
parent_id = #{parentId}
</when>
<otherwise>
parent_id IS NULL OR parent_id=''
</otherwise>
</choose>
ORDER BY org_code DESC
</select>
</mapper>

View File

@ -1,98 +0,0 @@
package com.nu.modules.institution.model;
import com.nu.modules.institution.entity.InstitutionArea;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 机构表 封装树结构的机构的名称的实体类
* <p>
*
* @Author Steve
* @Since 2019-01-22
*
*/
public class InstitutionAreaIdModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String key;
/**
* 主键ID
*/
private String value;
/**
* 机构名称
*/
private String title;
List<InstitutionAreaIdModel> children = new ArrayList<>();
/**
* 将SysDepartTreeModel的部分数据放在该对象当中
* @param treeModel
* @return
*/
public InstitutionAreaIdModel convert(InstitutionAreaTreeModel treeModel) {
this.key = treeModel.getId();
this.value = treeModel.getId();
this.title = treeModel.getInstName();
return this;
}
/**
* 该方法为用户机构的实现类所使用
* @param inst
* @return
*/
public InstitutionAreaIdModel convertByUserDepart(InstitutionArea inst) {
this.key = inst.getId();
this.value = inst.getId();
this.title = inst.getInstName();
return this;
}
public List<InstitutionAreaIdModel> getChildren() {
return children;
}
public void setChildren(List<InstitutionAreaIdModel> children) {
this.children = children;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
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;
}
}

View File

@ -1,357 +0,0 @@
package com.nu.modules.institution.model;
import com.nu.modules.institution.entity.InstitutionArea;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 机构表 存储树结构数据的实体类
* <p>
*
* @Author 曹磊
* @Since 2025-03-25
*/
public class InstitutionAreaTreeModel implements Serializable{
private static final long serialVersionUID = 1L;
/** 对应InstitutionArea中的id字段,前端数据树中的key*/
private String key;
/** 对应InstitutionArea中的id字段,前端数据树中的value*/
private String value;
/** 对应inst_name字段,前端数据树中的title*/
private String title;
private boolean isLeaf;
// 以下所有字段均与InstitutionArea相同
private String id;
private String parentId;
private String instName;
private String instNameEn;
private String instNameAbbr;
private Integer instOrder;
private String description;
private String orgCategory;
private String orgType;
private String orgCode;
private String mobile;
private String address;
private String status;
private String delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
//update-begin---author:wangshuai ---date:20200308 for[JTC-119]在部门管理菜单下设置部门负责人新增字段部门负责人ids
/**部门负责人ids*/
private String directorUserIds;
//update-end---author:wangshuai ---date:20200308 for[JTC-119]在部门管理菜单下设置部门负责人新增字段部门负责人ids
private List<InstitutionAreaTreeModel> children = new ArrayList<>();
/**
* 将InstitutionArea对象转换成InstitutionAreaTreeModel对象
* @param inst
*/
public InstitutionAreaTreeModel(InstitutionArea inst) {
this.key = inst.getId();
this.value = inst.getId();
this.title = inst.getInstName();
this.id = inst.getId();
this.parentId = inst.getParentId();
this.instName = inst.getInstName();
this.instNameEn = inst.getInstNameEn();
this.instNameAbbr = inst.getInstNameAbbr();
this.instOrder = inst.getInstOrder();
this.description = inst.getDescription();
this.orgCategory = inst.getOrgCategory();
this.orgType = inst.getOrgType();
this.orgCode = inst.getOrgCode();
this.mobile = inst.getMobile();
this.address = inst.getAddress();
this.status = inst.getStatus();
this.delFlag = inst.getDelFlag();
this.createBy = inst.getCreateBy();
this.createTime = inst.getCreateTime();
this.updateBy = inst.getUpdateBy();
this.updateTime = inst.getUpdateTime();
if(0 == inst.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 getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<InstitutionAreaTreeModel> getChildren() {
return children;
}
public void setChildren(List<InstitutionAreaTreeModel> children) {
if (children==null){
this.isLeaf=true;
}
this.children = children;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getInstName() {
return instName;
}
public void setInstName(String instName) {
this.instName = instName;
}
public String getOrgCategory() {
return orgCategory;
}
public void setOrgCategory(String orgCategory) {
this.orgCategory = orgCategory;
}
public String getOrgType() {
return orgType;
}
public void setOrgType(String orgType) {
this.orgType = orgType;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getInstNameEn() {
return instNameEn;
}
public void setInstNameEn(String instNameEn) {
this.instNameEn = instNameEn;
}
public String getInstNameAbbr() {
return instNameAbbr;
}
public void setInstNameAbbr(String instNameAbbr) {
this.instNameAbbr = instNameAbbr;
}
public Integer getInstOrder() {
return instOrder;
}
public void setInstOrder(Integer instOrder) {
this.instOrder = instOrder;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public InstitutionAreaTreeModel() { }
/**
* 重写equals方法
*/
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
InstitutionAreaTreeModel model = (InstitutionAreaTreeModel) o;
return Objects.equals(id, model.id) &&
Objects.equals(parentId, model.parentId) &&
Objects.equals(instName, model.instName) &&
Objects.equals(instNameEn, model.instNameEn) &&
Objects.equals(instNameAbbr, model.instNameAbbr) &&
Objects.equals(instOrder, model.instOrder) &&
Objects.equals(description, model.description) &&
Objects.equals(orgCategory, model.orgCategory) &&
Objects.equals(orgType, model.orgType) &&
Objects.equals(orgCode, model.orgCode) &&
Objects.equals(mobile, model.mobile) &&
Objects.equals(address, model.address) &&
Objects.equals(status, model.status) &&
Objects.equals(delFlag, model.delFlag) &&
Objects.equals(createBy, model.createBy) &&
Objects.equals(createTime, model.createTime) &&
Objects.equals(updateBy, model.updateBy) &&
Objects.equals(updateTime, model.updateTime) &&
Objects.equals(children, model.children);
}
/**
* 重写hashCode方法
*/
@Override
public int hashCode() {
return Objects.hash(id, parentId, instName, instNameEn, instNameAbbr,
instOrder, description, orgCategory, orgType, orgCode, mobile, address,
status, delFlag, createBy, createTime, updateBy, updateTime,
children);
}
}

View File

@ -1,80 +0,0 @@
package com.nu.modules.institution.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.institution.entity.InstitutionArea;
import com.nu.modules.institution.model.InstitutionAreaTreeModel;
import org.jeecg.common.api.vo.Result;
import java.util.List;
/**
* <p>
* 机构表 服务实现类
* <p>
*
* @Author 曹磊
* @Since 2025-03-25
*/
public interface IInstitutionAreaService extends IService<InstitutionArea>{
/**
* 保存部门数据
* @param InstitutionArea
* @param username 用户名
*/
void saveInstData(InstitutionArea InstitutionArea,String username);
/**
* 更新Inst数据
* @param InstitutionArea
* @param username 用户名
* @return
*/
Boolean updateInstDataById(InstitutionArea InstitutionArea,String username);
/**
* 根据关键字搜索相关的部门数据
* @param keyWord
* @return
*/
List<InstitutionAreaTreeModel> searchByKeyWord(String keyWord);
/**
* 根据部门id删除并删除其可能存在的子级部门
* @param id
* @return
*/
boolean delete(String id);
/**
* 获取我的部门下级所有部门
* @param parentId 父id
* @param primaryKey 主键字段id或者orgCode
* @return
*/
List<InstitutionAreaTreeModel> queryTreeListByPid(String parentId,String primaryKey);
/**
* 根据id查询机构信息
* @param parentId
* @return
*/
IPage<InstitutionArea> getMaxCodeInst(Page<InstitutionArea> page, String parentId);
/**
* 删除部门
* @param id
*/
Result<String> deleteInst(InstitutionArea institutionArea);
/**
* 根据id查询部门信息
* @param parentId
* @return
*/
InstitutionArea getInstById(String parentId);
}

View File

@ -1,201 +0,0 @@
package com.nu.modules.institution.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.institution.entity.InstitutionArea;
import com.nu.modules.institution.mapper.InstitutionAreaMapper;
import com.nu.modules.institution.model.InstitutionAreaTreeModel;
import com.nu.modules.institution.service.IInstitutionAreaService;
import com.nu.modules.institution.utils.OrgCodeRule;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Consumer;
/**
* <p>
* 机构表 服务实现类
* <p>
*
* @Author 曹磊
* @Since 2025-03-25
*/
@Service
public class InstitutionAreaServiceImpl extends ServiceImpl<InstitutionAreaMapper, InstitutionArea> implements IInstitutionAreaService {
/**
* 根据parentId查询机构树
* @param parentId
* @param primaryKey 主键字段id或者orgCode
* @return
*/
@Override
public List<InstitutionAreaTreeModel> queryTreeListByPid(String parentId,String primaryKey) {
Consumer<LambdaQueryWrapper<InstitutionArea>> square = i -> {
if(oConvertUtils.isEmpty(parentId)){
i.and(q->q.isNull(true,InstitutionArea::getParentId).or().eq(true,InstitutionArea::getParentId,""));
}else{
i.eq(true,InstitutionArea::getParentId,parentId);
}
};
LambdaQueryWrapper<InstitutionArea> lqw=new LambdaQueryWrapper<>();
lqw.eq(true,InstitutionArea::getDelFlag,CommonConstant.DEL_FLAG_0.toString());
lqw.func(square);
lqw.orderByAsc(InstitutionArea::getInstOrder);
List<InstitutionArea> list = list(lqw);
List<InstitutionAreaTreeModel> records = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
InstitutionArea inst = list.get(i);
InstitutionAreaTreeModel treeModel = new InstitutionAreaTreeModel(inst);
records.add(treeModel);
}
return records;
}
/**
* 根据id查询机构信息
* @param parentId
* @return
*/
@Override
public IPage<InstitutionArea> getMaxCodeInst(Page<InstitutionArea> page, String parentId) {
return page.setRecords(baseMapper.getMaxCodeInst(page,parentId));
}
/**
* saveInstData 对应 add 保存用户在页面添加的新的机构对象数据
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveInstData(InstitutionArea institutionArea, String username) {
if (institutionArea != null && username != null) {
//给机构表加个是否有子节点------------
if (oConvertUtils.isEmpty(institutionArea.getParentId())) {
institutionArea.setParentId("");
}else{
//将父机构的设成不是叶子结点
baseMapper.setMainLeaf(institutionArea.getParentId(),CommonConstant.NOT_LEAF);
}
//给机构表加个是否有子节点------------
institutionArea.setId(IdWorker.getIdStr(institutionArea));
// 先判断该对象有无父级ID,有则意味着不是最高级,否则意味着是最高级
// 获取父级ID
String parentId = institutionArea.getParentId();
//begin--机构编码规则生成器做成公用配置
JSONObject formData = new JSONObject();
formData.put("parentId",parentId);
String[] codeArray = OrgCodeRule.getOrgCode(formData);
//end--机构编码规则生成器做成公用配置
institutionArea.setOrgCode(codeArray[0]);
String orgType = codeArray[1];
institutionArea.setOrgType(String.valueOf(orgType));
institutionArea.setCreateTime(new Date());
institutionArea.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
//新添加的机构是叶子节点
institutionArea.setIzLeaf(CommonConstant.IS_LEAF);
if (oConvertUtils.isEmpty(institutionArea.getOrgCategory())) {
if (oConvertUtils.isEmpty(institutionArea.getParentId())) {
institutionArea.setOrgCategory("1");
} else {
institutionArea.setOrgCategory("2");
}
}
this.save(institutionArea);
}
}
/**
* updateInstDataById 对应 edit 根据机构主键来更新对应的机构数据
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateInstDataById(InstitutionArea institutionArea, String username) {
if (institutionArea != null && username != null) {
institutionArea.setUpdateTime(new Date());
institutionArea.setUpdateBy(username);
this.updateById(institutionArea);
return true;
} else {
return false;
}
}
/**
* <p>
* 根据关键字搜索相关的机构数据
* </p>
*/
@Override
public List<InstitutionAreaTreeModel> searchByKeyWord(String keyWord) {
LambdaQueryWrapper<InstitutionArea> query = new LambdaQueryWrapper<InstitutionArea>();
List<InstitutionAreaTreeModel> newList = new ArrayList<>();
query.like(InstitutionArea::getInstName, keyWord);
InstitutionAreaTreeModel model = new InstitutionAreaTreeModel();
List<InstitutionArea> instList = this.list(query);
if(instList.size() > 0) {
for(InstitutionArea inst : instList) {
model = new InstitutionAreaTreeModel(inst);
model.setChildren(null);
newList.add(model);
}
return newList;
}
return null;
}
@Override
public InstitutionArea getInstById(String id) {
return baseMapper.getInstById(id);
}
@Override
public Result<String> deleteInst(InstitutionArea institutionArea) {
//判断是否有字节点
int childrenCount = baseMapper.queryCountByPid(institutionArea.getId());
if(childrenCount>0){
if(institutionArea.getOrgCategory().equals("1")){
return Result.error("此机构存在子区域,请将子区域全部删除后再来删除此机构!");
}else{
return Result.error("此区域存在子区域,请将子区域全部删除后再来删除此区域!");
}
}
//删除机构设置父级的叶子结点
this.setIzLeaf(institutionArea.getId());
this.delete(institutionArea.getId());
return Result.OK("机构删除成功!");
}
/**
* 设置父级节点是否存在叶子结点
* @param id
*/
private void setIzLeaf(String id) {
InstitutionArea inst = this.getInstById(id);
String parentId = inst.getParentId();
if(oConvertUtils.isNotEmpty(parentId)){
Long count = this.count(new QueryWrapper<InstitutionArea>().lambda().eq(InstitutionArea::getParentId, parentId));
if(count == 1){
//若父节点无其他子节点则该父节点是叶子节点
baseMapper.setMainLeaf(parentId, CommonConstant.IS_LEAF);
}
}
}
/**
* 根据机构id删除并且删除其可能存在的子级任何机构
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean delete(String id) {
boolean ok = this.removeById(id);
return ok;
}
}

View File

@ -1,180 +0,0 @@
package com.nu.modules.institution.utils;
import io.netty.util.internal.StringUtil;
import org.jeecg.common.util.oConvertUtils;
/**
* 流水号生成规则(按默认规则递增数字从1-999开始递增数字到999递增字母;位数不够增加位数)
* A001
* A001A002
* @Author 曹磊
*
*/
public class FindOrgCodeUtil {
// 数字位数(默认生成3位的数字)
/**代表数字位数*/
private static final int NUM_LENGTH = 3;
public static final int ZHANWEI_LENGTH = 1+ NUM_LENGTH;
public static final char LETTER= 'Z';
/**
* 根据前一个code获取同级下一个code
* 例如:当前最大code为A001A004下一个code为A001A005
*
* @param code
* @return
*/
public static synchronized String getNextOrgCode(String code) {
String newcode = "";
if (oConvertUtils.isEmpty(code)) {
String zimu = "A";
String num = getStrNum(1);
newcode = zimu + num;
} else {
String beforeCode = code.substring(0, code.length() - 1- NUM_LENGTH);
String afterCode = code.substring(code.length() - 1 - NUM_LENGTH,code.length());
char afterCodeZimu = afterCode.substring(0, 1).charAt(0);
Integer afterCodeNum = Integer.parseInt(afterCode.substring(1));
String nextNum = "";
char nextZimu = 'A';
// 先判断数字等于999*则计数从1重新开始递增
if (afterCodeNum == getMaxNumByLength(NUM_LENGTH)) {
nextNum = getNextStrNum(0);
} else {
nextNum = getNextStrNum(afterCodeNum);
}
// 先判断数字等于999*则字母从A重新开始,递增
if(afterCodeNum == getMaxNumByLength(NUM_LENGTH)) {
nextZimu = getNextZiMu(afterCodeZimu);
}else{
nextZimu = afterCodeZimu;
}
// 例如Z99下一个code就是Z99A01
if (LETTER == afterCodeZimu && getMaxNumByLength(NUM_LENGTH) == afterCodeNum) {
newcode = code + (nextZimu + nextNum);
} else {
newcode = beforeCode + (nextZimu + nextNum);
}
}
return newcode;
}
/**
* 根据父亲code,获取下级的下一个code
*
* 例如父亲CODE:A001
* 当前CODE:A001B003
* 获取的code:A001B004
*
* @param parentCode 上级code
* @param localCode 同级code
* @return
*/
public static synchronized String getSubOrgCode(String parentCode,String localCode) {
if(localCode!=null && localCode!=""){
return getNextOrgCode(localCode);
}else{
parentCode = parentCode + "A"+ getNextStrNum(0);
}
return parentCode;
}
/**
* 将数字前面位数补零
*
* @param num
* @return
*/
private static String getNextStrNum(int num) {
return getStrNum(getNextNum(num));
}
/**
* 将数字前面位数补零
*
* @param num
* @return
*/
private static String getStrNum(int num) {
String s = String.format("%0" + NUM_LENGTH + "d", num);
return s;
}
/**
* 递增获取下个数字
*
* @param num
* @return
*/
private static int getNextNum(int num) {
num++;
return num;
}
/**
* 递增获取下个字母
*
* @param zimu
* @return
*/
private static char getNextZiMu(char zimu) {
if (zimu == LETTER) {
return 'A';
}
zimu++;
return zimu;
}
/**
* 根据数字位数获取最大值
* @param length
* @return
*/
private static int getMaxNumByLength(int length){
if(length==0){
return 0;
}
StringBuilder maxNum = new StringBuilder();
for (int i=0;i<length;i++){
maxNum.append("9");
}
return Integer.parseInt(maxNum.toString());
}
public static String[] cutOrgCode(String code){
if(code==null || StringUtil.isNullOrEmpty(code)){
return null;
}else{
//获取标准长度为numLength+1,截取的数量为code.length/numLength+1
int c = code.length()/(NUM_LENGTH +1);
String[] cutcode = new String[c];
for(int i =0 ; i <c;i++){
cutcode[i] = code.substring(0,(i+1)*(NUM_LENGTH +1));
}
return cutcode;
}
}
// public static void main(String[] args) {
// String s = getNextOrgCode("A001A002");
// System.out.println(s);
// char c1 = getNextZiMu('C');
// int n = getNextNum(8);
// String[] ss = cutOrgCode("C099A001B001");
// System.out.println(c1);
// System.out.println(n);
// for(int i=0;i<ss.length;i++){
// System.out.println(ss[i]);
// }
// }
}

View File

@ -1,108 +0,0 @@
package com.nu.modules.institution.utils;
import com.nu.modules.institution.entity.InstitutionArea;
import com.nu.modules.institution.model.InstitutionAreaIdModel;
import com.nu.modules.institution.model.InstitutionAreaTreeModel;
import org.jeecg.common.util.oConvertUtils;
import java.util.ArrayList;
import java.util.List;
/**
* <P>
* 对应机构的表,处理并查找树级数据
* <P>
*
* @Author: 曹磊
* @Date: 2025-03-25
*/
public class FindsInstChildrenUtil {
/**
* queryTreeList的子方法 ====1=====
* 该方法是s将InstitutionArea类型的list集合转换成InstitutionAreaTreeModel类型的集合
*/
public static List<InstitutionAreaTreeModel> wrapTreeDataToTreeList(List<InstitutionArea> recordList) {
List<InstitutionAreaIdModel> idList = new ArrayList<InstitutionAreaIdModel>();
List<InstitutionAreaTreeModel> records = new ArrayList<>();
for (int i = 0; i < recordList.size(); i++) {
InstitutionArea inst = recordList.get(i);
records.add(new InstitutionAreaTreeModel(inst));
}
List<InstitutionAreaTreeModel> tree = findChildren(records, idList);
setEmptyChildrenAsNull(tree);
return tree;
}
/**
* 获取 InstitutionAreaIdModel
* @param recordList
* @return
*/
public static List<InstitutionAreaIdModel> wrapTreeDataToInstIdTreeList(List<InstitutionArea> recordList) {
List<InstitutionAreaIdModel> idList = new ArrayList<InstitutionAreaIdModel>();
List<InstitutionAreaTreeModel> records = new ArrayList<>();
for (int i = 0; i < recordList.size(); i++) {
InstitutionArea inst = recordList.get(i);
records.add(new InstitutionAreaTreeModel(inst));
}
findChildren(records, idList);
return idList;
}
/**
* queryTreeList的子方法 ====2=====
* 该方法是找到并封装顶级父类的节点到TreeList集合
*/
private static List<InstitutionAreaTreeModel> findChildren(List<InstitutionAreaTreeModel> recordList, List<InstitutionAreaIdModel> instIdList) {
List<InstitutionAreaTreeModel> treeList = new ArrayList<>();
for (int i = 0; i < recordList.size(); i++) {
InstitutionAreaTreeModel branch = recordList.get(i);
if (oConvertUtils.isEmpty(branch.getParentId())) {
treeList.add(branch);
InstitutionAreaIdModel InstitutionAreaIdModel = new InstitutionAreaIdModel().convert(branch);
instIdList.add(InstitutionAreaIdModel);
}
}
getGrandChildren(treeList,recordList,instIdList);
return treeList;
}
/**
* queryTreeList的子方法====3====
*该方法是找到顶级父类下的所有子节点集合并封装到TreeList集合
*/
private static void getGrandChildren(List<InstitutionAreaTreeModel> treeList,List<InstitutionAreaTreeModel> recordList,List<InstitutionAreaIdModel> idList) {
for (int i = 0; i < treeList.size(); i++) {
InstitutionAreaTreeModel model = treeList.get(i);
InstitutionAreaIdModel idModel = idList.get(i);
for (int i1 = 0; i1 < recordList.size(); i1++) {
InstitutionAreaTreeModel m = recordList.get(i1);
if (m.getParentId()!=null && m.getParentId().equals(model.getId())) {
model.getChildren().add(m);
InstitutionAreaIdModel dim = new InstitutionAreaIdModel().convert(m);
idModel.getChildren().add(dim);
}
}
getGrandChildren(treeList.get(i).getChildren(), recordList, idList.get(i).getChildren());
}
}
/**
* queryTreeList的子方法 ====4====
* 该方法是将子节点为空的List集合设置为Null值
*/
private static void setEmptyChildrenAsNull(List<InstitutionAreaTreeModel> treeList) {
for (int i = 0; i < treeList.size(); i++) {
InstitutionAreaTreeModel model = treeList.get(i);
if (model.getChildren().size() == 0) {
model.setChildren(null);
model.setIsLeaf(true);
}else{
setEmptyChildrenAsNull(model.getChildren());
model.setIsLeaf(false);
}
}
}
}

View File

@ -1,78 +0,0 @@
package com.nu.modules.institution.utils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.institution.entity.InstitutionArea;
import com.nu.modules.institution.service.impl.InstitutionAreaServiceImpl;
import io.netty.util.internal.StringUtil;
import org.jeecg.common.util.SpringContextUtils;
import java.util.List;
/**
* @Author scott
* @Date 2019/12/9 11:33
* @Description: 机构编码生成规则
*/
public class OrgCodeRule{
public static String[] getOrgCode(JSONObject params) {
InstitutionAreaServiceImpl institutionAreaService = (InstitutionAreaServiceImpl) SpringContextUtils.getBean("institutionAreaServiceImpl");
String[] strArray = new String[2];
//定义机构类型
String orgType = "";
// 定义新编码字符串
String newOrgCode = "";
// 定义旧编码字符串
String oldOrgCode = "";
String parentId = null;
Object obj = params.get("parentId");
if (obj != null) {
parentId = obj.toString();
}
//如果是最高级,则查询出同级的org_code, 调用工具类生成编码并返回
if (StringUtil.isNullOrEmpty(parentId)) {
// 线判断数据库中的表是否为空,空则直接返回初始编码
//获取最大值code的机构信息
Page<InstitutionArea> page = new Page<>(1,1);
IPage<InstitutionArea> pageList = institutionAreaService.getMaxCodeInst(page,"");
List<InstitutionArea> records = pageList.getRecords();
if (null==records || records.size()==0) {
strArray[0] = FindOrgCodeUtil.getNextOrgCode(null);
strArray[1] = "1";
return strArray;
} else {
InstitutionArea depart = records.get(0);
oldOrgCode = depart.getOrgCode();
orgType = depart.getOrgType();
newOrgCode = FindOrgCodeUtil.getNextOrgCode(oldOrgCode);
}
} else {//反之则查询出所有同级的机构,获取结果后有两种情况,有同级和没有同级
//获取自己机构最大值orgCode机构信息
Page<InstitutionArea> page = new Page<>(1,1);
IPage<InstitutionArea> pageList = institutionAreaService.getMaxCodeInst(page,parentId);
List<InstitutionArea> records = pageList.getRecords();
// 查询出父级机构
InstitutionArea depart = institutionAreaService.getInstById(parentId);
// 获取父级机构的Code
String parentCode = depart.getOrgCode();
// 根据父级机构类型算出当前机构的类型
orgType = String.valueOf(Integer.valueOf(depart.getOrgType()) + 1);
// 处理同级机构为null的情况
if (null == records || records.size()==0) {
// 直接生成当前的机构编码并返回
newOrgCode = FindOrgCodeUtil.getSubOrgCode(parentCode, null);
} else { //处理有同级机构的情况
// 获取同级机构的编码,利用工具类
String subCode = records.get(0).getOrgCode();
// 返回生成的当前机构编码
newOrgCode = FindOrgCodeUtil.getSubOrgCode(parentCode, subCode);
}
}
// 返回最终封装了机构编码和机构类型的数组
strArray[0] = newOrgCode;
strArray[1] = orgType;
return strArray;
}
}

View File

@ -133,7 +133,7 @@ public class CameraInfo implements Serializable {
private String topTime;
/**护理单元*/
@ApiModelProperty(value = "护理单元ID")
@Dict(dictTable ="nu_base_info",dicText = "nu_name",dicCode = "nu_id")
@Dict(dictTable ="nu_base_info",dicText = "nu_name",dicCode = "id")
private String nuId;
/**护理单元*/
@ApiModelProperty(value = "护理单元")

View File

@ -28,7 +28,7 @@
a.nu_id as nuId,
b.nu_name as nuName,
ifnull(c.multitrans,0) as multitrans
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.nu_id
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.id
left join nu_iot_tplink_camera_capability c on a.device_index = c.device_index
<where>
<if test="params.deviceIndex != null and params.deviceIndex != ''">
@ -92,7 +92,7 @@
from nu_base_info b
<where>
<if test="params.nuId != null and params.nuId != ''">
AND b.nu_id = #{params.nuId}
AND b.id = #{params.nuId}
</if>
<if test="params.nuName != null and params.nuName != ''">
AND b.nu_name LIKE concat('%',#{params.nuName},'%')
@ -125,7 +125,7 @@
protocol as protocol,
a.nu_id as nuId,
b.nu_name as nuName
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.nu_id
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.id
where device_index = #{deviceIndex}
</select>

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nu.modules.tplink.common.entity.TumsConfig;
import com.nu.modules.tplink.common.service.ITumsConfigService;
import com.nu.modules.tplink.common.mapper.TumsConfigMapper;
import org.apache.commons.compress.utils.Lists;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
@ -42,7 +42,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
@Autowired
private IErrorCodeService errorCodeService;
@Autowired
private ITumsConfigService tumsConfigService;
private TumsConfigMapper tumsConfigMapper;
/**
* 获取摄像头信息-分页
@ -1833,7 +1833,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
List<CameraInfo> chnList = (List)chnMap.get("data");
if(chnList!=null&&chnList.size()>0){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
TumsConfig tumsConfig = tumsConfigService.getByCode(sysUser.getOrgCode());
TumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode());
for(int j=0;j<chnList.size();j++){
CameraInfo chn = chnList.get(j);
Map<String,Object> playbackMap = getPlaybackUrl(chn,1);
@ -2014,7 +2014,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
String multitransError = multitransMap.get("error").toString();
if(multitransError.equals("0")){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
TumsConfig tumsConfig = tumsConfigService.getByCode(sysUser.getOrgCode());
TumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode());
CameraInfo entity = (CameraInfo)multitransMap.get("data");
entity.setQueryAddress(tumsConfig.getTumsUrl());
return Result.OK(entity);
@ -2034,7 +2034,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
@Override
public Result uploadToServer(CameraInfo cameraInfo){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
TumsConfig tumsConfig = tumsConfigService.getByCode(sysUser.getOrgCode());
TumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode());
String deviceIndex = cameraInfo.getDeviceIndex();
String parentId = cameraInfo.getParentId();
String fileName = cameraInfo.getFileName();

View File

@ -9,9 +9,8 @@ import org.jeecg.common.api.vo.Result;
import com.nu.modules.tplink.utils.TumsApi;
import org.jeecg.common.system.vo.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@ -52,4 +51,23 @@ public class TpLinkController {
tumsApi.destroyTumsClient();
return Result.OK();
}
/**
* 获取图门系统用户
* @return
*/
@GetMapping(value = "/getUser")
public Result<?> getUser(TumsConfig tumsConfig) {
return tumsConfigService.getUser(tumsConfig);
}
/**
* 添加和编辑图门系统用户
* @return
*/
@PostMapping(value = "/saveUser")
public Result<String> saveUser(@RequestBody TumsConfig tumsConfig) {
return tumsConfigService.saveUser(tumsConfig);
}
}

View File

@ -1,7 +1,11 @@
package com.nu.modules.tplink.common.entity;
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;
@ -21,9 +25,18 @@ import java.io.Serializable;
@ApiModel(value="nu_iot_tplink_tums_base", description="护理单元-物联管理-TPLINK图门系统配置信息")
public class TumsConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**ID*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "ID")
private Integer id;
private String tumsUrl; //获取图门系统地址
private String tumsProjectId; //图门系统登录项目ID
@TableField(exist = false)
private String tumsProjectName; //图门系统登录项目ID
private String tumsUserId; // 图门系统登录用户ID
private String tumsUsername; // 获取图门系统用户
private String tumsPassword; //获取图门系统密码
private String tumsRoleId; //图门系统角色ID
private String ftpIp; //回放视频转FTP上传IP
private String ftpPort; //回放视频转FTP上传端口
private String ftpUsername; //回放视频转FTP上传用户

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.tplink.common.entity.TumsConfig;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
/**
* @Description: 护理单元-物联管理-错误码
* @Author: jeecg-boot
@ -14,4 +16,7 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TumsConfigMapper extends BaseMapper<TumsConfig> {
TumsConfig getByCode(String orgCode);
TumsConfig findProjectByCodeOrId(TumsConfig tumsConfig);
void addUser(Map<String, String> map);
void updateUser(Map<String, String> map);
}

View File

@ -6,8 +6,11 @@
select
id,
tums_url as tumsUrl,
tums_project_id as tumsProjectId,
tums_userId as tumsUserId,
tums_username as tumsUsername,
tums_password as tumsPassword,
tums_roleId as tumsRoleId,
ftp_ip as ftpIp,
ftp_port as ftpPort,
ftp_username as ftpUsername,
@ -27,4 +30,135 @@
limit 1
</select>
<select id="findProjectByCodeOrId" parameterType="String" resultType="com.nu.modules.tplink.common.entity.TumsConfig">
select p.project_id as tumsProjectId,
p.project_name as tumsProjectName
from nu_iot_tplink_project p
inner join sys_depart d on p.institution_id = d.id
<where>
<if test="tumsProjectId != null and tumsProjectId != ''">
AND p.project_id = #{tumsProjectId}
</if>
<if test="tumsProjectId == null or tumsProjectId == ''">
AND d.org_code = #{orgCode}
</if>
</where>
limit 1
</select>
<insert id="addUser">
insert into nu_iot_tplink_tums_base(
<if test="tumsUrl != null and tumsUrl != ''">
tums_url,
</if>
<if test="tumsProjectId != null and tumsProjectId != ''">
tums_project_id,
</if>
<if test="tumsUserId != null and tumsUserId != ''">
tums_userId,
</if>
<if test="tumsUsername != null and tumsUsername != ''">
tums_username,
</if>
<if test="tumsPassword != null and tumsPassword != ''">
tums_password,
</if>
<if test="tumsRoleId != null and tumsRoleId != ''">
tums_roleId,
</if>
<if test="ftpIp != null and ftpIp != ''">
ftp_ip,
</if>
<if test="ftpPort != null and ftpPort != ''">
ftp_port,
</if>
<if test="ftpUsername != null and ftpUsername != ''">
ftp_username,
</if>
<if test="ftpPassword != null and ftpPassword != ''">
ftp_password,
</if>
<if test="ftpUploadpath != null and ftpUploadpath != ''">
ftp_uploadpath,
</if>
org_code
)
values(
<if test="tumsUrl != null and tumsUrl != ''">
#{tumsUrl},
</if>
<if test="tumsProjectId != null and tumsProjectId != ''">
#{tumsProjectId},
</if>
<if test="tumsUserId != null and tumsUserId != ''">
#{tumsUserId},
</if>
<if test="tumsUsername != null and tumsUsername != ''">
#{tumsUsername},
</if>
<if test="tumsPassword != null and tumsPassword != ''">
#{tumsPassword},
</if>
<if test="tumsRoleId != null and tumsRoleId != ''">
#{tumsRoleId},
</if>
<if test="ftpIp != null and ftpIp != ''">
#{ftpIp},
</if>
<if test="ftpPort != null and ftpPort != ''">
#{ftpPort},
</if>
<if test="ftpUsername != null and ftpUsername != ''">
#{ftpUsername},
</if>
<if test="ftpPassword != null and ftpPassword != ''">
#{ftpPassword},
</if>
<if test="ftpUploadpath != null and ftpUploadpath != ''">
#{ftpUploadpath},
</if>
#{orgCode}
)
</insert>
<update id="updateUser">
update nu_iot_tplink_tums_base
set
<if test="tumsUrl != null and tumsUrl != ''">
tums_url = #{tumsUrl},
</if>
<if test="tumsProjectId != null and tumsProjectId != ''">
tums_project_id = #{tumsProjectId},
</if>
<if test="tumsUserId != null and tumsUserId != ''">
tums_userId = #{tumsUserId},
</if>
<if test="tumsUsername != null and tumsUsername != ''">
tums_username = #{tumsUsername},
</if>
<if test="tumsPassword != null and tumsPassword != ''">
tums_password = #{tumsPassword},
</if>
<if test="tumsRoleId != null and tumsRoleId != ''">
tums_roleId = #{tumsRoleId},
</if>
<if test="ftpIp != null and ftpIp != ''">
ftp_ip = #{ftpIp},
</if>
<if test="ftpPort != null and ftpPort != ''">
ftp_port = #{ftpPort},
</if>
<if test="ftpUsername != null and ftpUsername != ''">
ftp_username = #{ftpUsername},
</if>
<if test="ftpPassword != null and ftpPassword != ''">
ftp_password = #{ftpPassword},
</if>
<if test="ftpUploadpath != null and ftpUploadpath != ''">
ftp_uploadpath = #{ftpUploadpath},
</if>
org_code = #{orgCode}
where org_code = #{orgCode}
</update>
</mapper>

View File

@ -2,6 +2,7 @@ package com.nu.modules.tplink.common.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.tplink.common.entity.TumsConfig;
import org.jeecg.common.api.vo.Result;
/**
* @Description: 护理单元-物联管理-图门系统配置
@ -11,4 +12,6 @@ import com.nu.modules.tplink.common.entity.TumsConfig;
*/
public interface ITumsConfigService extends IService<TumsConfig> {
TumsConfig getByCode(String orgCode);
Result<?> getUser(TumsConfig tumsConfig);
Result<String> saveUser(TumsConfig tumsConfig);
}

View File

@ -1,10 +1,17 @@
package com.nu.modules.tplink.common.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.tplink.common.entity.TumsConfig;
import com.nu.modules.tplink.common.mapper.TumsConfigMapper;
import com.nu.modules.tplink.common.service.ITumsConfigService;
import com.nu.modules.tplink.utils.TumsApi;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: 护理单元-物联管理-图门系统配置
@ -15,9 +22,157 @@ import org.springframework.stereotype.Service;
@Service
public class TumsConfigServiceImpl extends ServiceImpl<TumsConfigMapper, TumsConfig> implements ITumsConfigService {
@Autowired
private TumsApi tumsApi;
@Override
public TumsConfig getByCode(String orgCode){
return baseMapper.getByCode(orgCode);
}
@Override
public Result<?> getUser(TumsConfig tumsConfig){
TumsConfig entity = baseMapper.getByCode(tumsConfig.getOrgCode());
if(entity == null){
entity = new TumsConfig();
entity.setOrgCode(tumsConfig.getOrgCode());
}
TumsConfig project = baseMapper.findProjectByCodeOrId(entity);
if(project!=null){
entity.setTumsProjectId(project.getTumsProjectId());
entity.setTumsProjectName(project.getTumsProjectName());
}
return Result.OK(entity);
}
@Override
public Result<String> saveUser(TumsConfig tumsConfig){
TumsConfig entity = baseMapper.getByCode(tumsConfig.getOrgCode());
if(entity!=null){
String errorMsg = "";
Map<String, String> map = new HashMap<>();
if(!entity.getTumsPassword().equals(tumsConfig.getTumsPassword())){
//调用修改密码接口
StringBuffer sbp = new StringBuffer();
sbp.append("{");
sbp.append("\"userId\"").append(":").append("\"").append(tumsConfig.getTumsUserId()).append("\",");
sbp.append("\"oldPassword\"").append(":").append("\"").append(entity.getTumsPassword()).append("\",");
sbp.append("\"newPassword\"").append(":").append("\"").append(tumsConfig.getTumsPassword()).append("\"");
sbp.append("}");
String jsonResponsep = tumsApi.changePassword(sbp.toString());
JSONObject jsonObjectp = new JSONObject(jsonResponsep);
String errorCodep = jsonObjectp.getStr("error_code");
if(errorCodep.equals("0")){
map.put("tumsPassword",tumsConfig.getTumsPassword());
}else{
if(errorCodep.equals("-82400")){
errorMsg = "修改密码:密码格式错误!";
}else{
errorMsg = "修改密码:"+jsonObjectp.getStr("msg");
}
}
}
if(!entity.getTumsRoleId().equals(tumsConfig.getTumsRoleId())){
//调用修改角色接口
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"userId\"").append(":").append("\"").append(tumsConfig.getTumsUserId()).append("\",");
sb.append("\"roleList\"").append(":[").append(tumsConfig.getTumsRoleId()).append("]");
sb.append("}");
String jsonResponse = tumsApi.editUser(sb.toString());
JSONObject jsonObject = new JSONObject(jsonResponse);
String errorCode = jsonObject.getStr("error_code");
if(errorCode.equals("0")){
map.put("tumsRoleId",tumsConfig.getTumsRoleId());
}else{
if(!errorMsg.equals("")){
errorMsg = errorMsg + "\n" + "修改角色:"+jsonObject.getStr("msg");
}else{
errorMsg = "修改角色:"+jsonObject.getStr("msg");
}
}
}
if(tumsConfig.getTumsUrl()!=null&&!tumsConfig.getTumsUrl().equals("")){
map.put("tumsUrl",tumsConfig.getTumsUrl());
}
if(tumsConfig.getTumsProjectId()!=null&&!tumsConfig.getTumsProjectId().equals("")){
map.put("tumsProjectId",tumsConfig.getTumsProjectId());
}
if(tumsConfig.getFtpIp()!=null&&!tumsConfig.getFtpIp().equals("")){
map.put("ftpIp",tumsConfig.getFtpIp());
}
if(tumsConfig.getFtpPort()!=null&&!tumsConfig.getFtpPort().equals("")){
map.put("ftpPort",tumsConfig.getFtpPort());
}
if(tumsConfig.getFtpUsername()!=null&&!tumsConfig.getFtpUsername().equals("")){
map.put("ftpUsername",tumsConfig.getFtpUsername());
}
if(tumsConfig.getFtpPassword()!=null&&!tumsConfig.getFtpPassword().equals("")){
map.put("ftpPassword",tumsConfig.getFtpPassword());
}
if(tumsConfig.getFtpUploadpath()!=null&&!tumsConfig.getFtpUploadpath().equals("")){
map.put("ftpUploadpath",tumsConfig.getFtpUploadpath());
}
if(tumsConfig.getOrgCode()!=null&&!tumsConfig.getOrgCode().equals("")){
map.put("orgCode",tumsConfig.getOrgCode());
}
baseMapper.updateUser(map);
if(!errorMsg.equals("")){
return Result.error(errorMsg);
}else{
return Result.OK("编辑用户成功!");
}
}else {
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"projectId\"").append(":").append("\"").append(tumsConfig.getTumsProjectId()).append("\",");
sb.append("\"username\"").append(":").append("\"").append(tumsConfig.getTumsUsername()).append("\",");
sb.append("\"password\"").append(":").append("\"").append(tumsConfig.getTumsPassword()).append("\",");
sb.append("\"roleList\"").append(":[").append(tumsConfig.getTumsRoleId()).append("]");
sb.append("}");
String jsonResponse = tumsApi.addUser(sb.toString());
JSONObject jsonObject = new JSONObject(jsonResponse);
String errorCode = jsonObject.getStr("error_code");
if(errorCode.equals("0")){
JSONObject result = (JSONObject)jsonObject.get("result");
Map<String, String> map = new HashMap<>();
map.put("tumsUserId",result.getStr("userId"));
map.put("tumsUsername",result.getStr("username"));
map.put("tumsPassword",tumsConfig.getTumsPassword());
map.put("tumsRoleId",tumsConfig.getTumsRoleId());
if(tumsConfig.getTumsUrl()!=null&&!tumsConfig.getTumsUrl().equals("")){
map.put("tumsUrl",tumsConfig.getTumsUrl());
}
if(tumsConfig.getTumsProjectId()!=null&&!tumsConfig.getTumsProjectId().equals("")){
map.put("tumsProjectId",tumsConfig.getTumsProjectId());
}
if(tumsConfig.getFtpIp()!=null&&!tumsConfig.getFtpIp().equals("")){
map.put("ftpIp",tumsConfig.getFtpIp());
}
if(tumsConfig.getFtpPort()!=null&&!tumsConfig.getFtpPort().equals("")){
map.put("ftpPort",tumsConfig.getFtpPort());
}
if(tumsConfig.getFtpUsername()!=null&&!tumsConfig.getFtpUsername().equals("")){
map.put("ftpUsername",tumsConfig.getFtpUsername());
}
if(tumsConfig.getFtpPassword()!=null&&!tumsConfig.getFtpPassword().equals("")){
map.put("ftpPassword",tumsConfig.getFtpPassword());
}
if(tumsConfig.getFtpUploadpath()!=null&&!tumsConfig.getFtpUploadpath().equals("")){
map.put("ftpUploadpath",tumsConfig.getFtpUploadpath());
}
if(tumsConfig.getOrgCode()!=null&&!tumsConfig.getOrgCode().equals("")){
map.put("orgCode",tumsConfig.getOrgCode());
}
baseMapper.addUser(map);
return Result.OK("添加用户成功!");
}else{
if(errorCode.equals("-82400")){
return Result.error("密码格式错误");
}else{
return Result.error(jsonObject.getStr("msg"));
}
}
}
}
}

View File

@ -21,6 +21,9 @@ public enum ApiEnum {
GET_ENCRYPT_KEY_FOR_LOGIN("/tums/account/v1/getEncryptKeyForLogin","获取登录公钥"),
LOGIN("/tums/account/v2/login","登录"),
LOGOUT("/tums/account/v1/logout","注销"),
ADD_USER("/tums/account/v2/customCreateAccount","添加自定义用户"),
EDIT_USER("/tums/account/v2/editUser","编辑用户"),
CHANGE_PASSWORD("/tums/account/v2/changePassword","修改密码"),
SET_CURRENT_PROJECT("/tums/resource/v2/setCurrentProject","设置当前项目"),
GET_ALL_PROJECT_INFO("/tums/resource/v2/getAllProjectInfo","获取所有项目信息"),
ADD_PROJECT("/tums/resource/v2/addProject","添加项目信息"),

View File

@ -47,7 +47,7 @@ public class ProjectInfo implements Serializable {
/**机构ID*/
@Excel(name = "机构ID", width = 15)
@ApiModelProperty(value = "机构ID")
@Dict(dicCode = "id" , dictTable = "nu_admin_institution_area" , dicText = "inst_name")
@Dict(dicCode = "id" , dictTable = "sys_depart" , dicText = "depart_name")
private String institutionId;
/**创建时间戳,单位秒*/
@ApiModelProperty(value = "创建时间戳,单位秒")

View File

@ -44,11 +44,11 @@ public class RegionInfo implements Serializable {
/**机构ID*/
@Excel(name = "区域ID", width = 15)
@ApiModelProperty(value = "区域ID")
@Dict(dicCode = "id" , dictTable = "nu_admin_institution_area" , dicText = "inst_name")
@Dict(dicCode = "id" , dictTable = "sys_depart" , dicText = "depart_name")
private String areaId;
@Excel(name = "机构ID", width = 15)
@ApiModelProperty(value = "机构ID")
@Dict(dicCode = "id" , dictTable = "nu_admin_institution_area" , dicText = "inst_name")
@Dict(dicCode = "id" , dictTable = "sys_depart" , dicText = "depart_name")
private String institutionId;
/**分组层级*/
@Excel(name = "分组层级", width = 15)

View File

@ -1,7 +1,7 @@
package com.nu.modules.tplink.utils;
import com.nu.modules.tplink.common.entity.TumsConfig;
import com.nu.modules.tplink.common.service.ITumsConfigService;
import com.nu.modules.tplink.common.mapper.TumsConfigMapper;
import com.tplink.ignite.libs.developersdk.api.TumsClient;
import com.tplink.ignite.libs.developersdk.vo.ResultVO;
import lombok.extern.slf4j.Slf4j;
@ -18,8 +18,9 @@ public class TumsApi {
TumsClient tumsClient;
TumsConfig tumsConfig;
@Autowired
private ITumsConfigService tumsConfigService;
private TumsConfigMapper tumsConfigMapper;
/**
* 创建tumsClient
@ -44,10 +45,15 @@ public class TumsApi {
private void initTumsConfig(){
if(tumsConfig==null){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
tumsConfig = tumsConfigService.getByCode(sysUser.getOrgCode());
tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode());
}
}
public String getRsaKey(){
login();
return tumsClient.getRsaKey();
}
/**
* 登录
* @return
@ -84,6 +90,45 @@ public class TumsApi {
}
}
/**
* 添加自定义用户
* @param jsonRequest
* @return
*/
public String addUser(String jsonRequest){
this.createTumsClient();
log.info("addUser:request:{}",jsonRequest);
String jsonResponse = tumsClient.requestEncryptedApi(jsonRequest, ApiEnum.ADD_USER.getValue());
log.info("addUser:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 编辑用户
* @param jsonRequest
* @return
*/
public String editUser(String jsonRequest){
this.createTumsClient();
log.info("editUser:request:{}",jsonRequest);
String jsonResponse = tumsClient.requestEncryptedApi(jsonRequest, ApiEnum.EDIT_USER.getValue());
log.info("editUser:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 编辑用户
* @param jsonRequest
* @return
*/
public String changePassword(String jsonRequest){
this.createTumsClient();
log.info("changePassword:request:{}",jsonRequest);
String jsonResponse = tumsClient.requestEncryptedApi(jsonRequest, ApiEnum.CHANGE_PASSWORD.getValue());
log.info("changePassword:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 设置当前项目
* @param jsonRequest

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.system.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@ -683,4 +684,44 @@ public class SysDepartController {
return Result.error("文件导入失败!");
}
/**
* 人员入住可选择的机构
* @return
*/
@RequestMapping(value = "/queryInstitutionsList", method = RequestMethod.GET)
public List<Map<String,Object>> queryInstitutionsList() {
List<Map<String,Object>> result = new ArrayList<>();
QueryWrapper<SysDepart> query = new QueryWrapper<>();
query.eq("del_flag","0");
query.eq("org_category","1");
query.eq("org_type","1");
query.isNotNull("server_url");
List<SysDepart> list = sysDepartService.list(query);
for(SysDepart depart : list){
Map<String,Object> map = new HashMap<>();
map.put("id",depart.getId());
map.put("departName",depart.getDepartName());
map.put("serverUrl",depart.getServerUrl());
result.add(map);
}
return result;
}
/**
* 查询所有子区域信息
* @return
*/
@GetMapping("queryChildrenByParentId")
public Result<List<SysDepart>> queryChildrenByParentId(@RequestParam(name = "pid", required = false) String parentId) {
Result<List<SysDepart>> result = new Result<>();
LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
query.orderByAsc(SysDepart::getDepartName);
query.eq(SysDepart::getParentId,parentId);
List<SysDepart> ls = this.sysDepartService.list(query);
result.setSuccess(true);
result.setResult(ls);
return result;
}
}

View File

@ -94,6 +94,9 @@ public class SysDepart implements Serializable {
/**是否有叶子节点: 1是0否*/
private Integer izLeaf;
/**各机构服务器后台接口地址*/
private String serverUrl;
//update-begin---author:wangshuai ---date:20200308 for[JTC-119]在部门管理菜单下设置部门负责人新增字段负责人ids和旧的负责人ids
/**部门负责人的ids*/
@TableField(exist = false)

View File

@ -170,7 +170,23 @@
<!--系统后台导出根据父级id和租户id查询部门数据-->
<select id="getSysDepartList" resultType="org.jeecg.modules.system.vo.SysDepartExportVo">
SELECT id,depart_name,parent_id,depart_name_en,depart_order,description,org_category,org_code,mobile,fax,address,memo FROM sys_depart
SELECT id,
depart_name,
parent_id,
depart_name_en,
depart_order,
description,
org_category,
org_code,
operation_start_time,
operation_end_time,
contract_start_time,
contract_end_time,
mobile,
fax,
address,
memo
FROM sys_depart
WHERE
1=1
<if test="null != tenantId and 0 != tenantId">