diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index ea35ac0c..caf53f15 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -59,7 +59,7 @@ public class SysDeptController extends BaseController { */ @SaCheckPermission("system:dept:list") @GetMapping("/list/exclude/{deptId}") - public R> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) { + public R> excludeChild(@PathVariable(value = "deptId", required = false) String deptId) { List depts = deptService.selectDeptList(new SysDeptBo()); depts.removeIf(d -> d.getDeptId().equals(deptId) || StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId))); diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java index 7ab914e5..2307baef 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java @@ -21,7 +21,7 @@ public class DeptTreeSelectVo implements Serializable { /** * 选中部门列表 */ - private List checkedKeys; + private List checkedKeys; /** * 下拉树结构列表 diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java index 0e05a51f..ee0ced48 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/dubbo/RemoteDataScopeServiceImpl.java @@ -16,6 +16,7 @@ import org.dromara.system.mapper.SysRoleDeptMapper; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; /** * 数据权限 实现 @@ -63,6 +64,22 @@ public class RemoteDataScopeServiceImpl implements RemoteDataScopeService { @Override public String getDeptAndChild(String deptId) { if (ObjectUtil.isNull(deptId)) { + return "'-1'"; + } + List deptList = deptMapper.selectList(new LambdaQueryWrapper() + .select(SysDept::getDeptId) + .apply(DataBaseHelper.findInSet(deptId, "ancestors"))); + List ids = StreamUtils.toList(deptList, SysDept::getDeptId); + ids.add(deptId); + + if (CollUtil.isNotEmpty(ids)) { + // 每个 ID 都加上单引号,并用逗号连接 + return ids.stream() + .map(id -> "'" + id.replace("'", "''") + "'") // 转义单引号 + .collect(Collectors.joining(",")); + } + return "'-1'"; + /*if (ObjectUtil.isNull(deptId)) { return "-1"; } List deptList = deptMapper.selectList(new LambdaQueryWrapper() @@ -73,7 +90,7 @@ public class RemoteDataScopeServiceImpl implements RemoteDataScopeService { if (CollUtil.isNotEmpty(ids)) { return StreamUtils.join(ids, Convert::toStr); } - return "-1"; + return "-1";*/ } } diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/listener/TDeviceImportListener.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/listener/TDeviceImportListener.java index 87162912..9f0377a0 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/listener/TDeviceImportListener.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/listener/TDeviceImportListener.java @@ -71,9 +71,9 @@ public class TDeviceImportListener extends AnalysisEventListener { * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 */ - List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); List deviceStatics(@Param("deviceType") String deviceType); List deviceStaticsByDeptId(@Param("deviceType")String deviceType, @Param("deptId")String deptId); + List jzDept(String updateTime); + } diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/schedule/JzDeptSchedule.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/schedule/JzDeptSchedule.java new file mode 100644 index 00000000..f5086c87 --- /dev/null +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/schedule/JzDeptSchedule.java @@ -0,0 +1,87 @@ +package org.dromara.system.schedule; + +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import org.dromara.system.domain.SysDept; +import org.dromara.system.service.ISysDeptService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RequiredArgsConstructor +@RestController +public class JzDeptSchedule { + + private final ISysDeptService deptService; + + + +// @Scheduled(cron = "0 0 0/1 * * ?") + //http://53.1.230.5:8159/api/UUDB/org/list + /* "data": [ + { + "id": "24211111111111", + "pid": "341699000000", + "orgName": "亳州市高新区分局禁毒大队", + "shortName": "亳州市高新区分局禁毒大队", + "path": "/340000000000/341600000000/341699000000/24211111111111/", + "status": "0", + "modiTime": "2025-08-18 15:05:44", + "createTime": "2025-06-14 10:35:17", + "type": "REAL", + "orderIdInt": 1 + }}*/ + public void jzDept(){ + JSONObject para = new JSONObject(); + para.put("orgId","34160000000"); + para.put("page","1"); + para.put("limit","2000"); + String result = HttpUtil.post("http://53.1.230.5:8159/api/UUDB/org/list", para.toString()); + List sysList = new ArrayList<>(); + JSONObject robj = JSON.parseObject(result); + JSONArray dataArr = robj.getJSONArray("data"); + for (Object o : dataArr) { + JSONObject data = JSONObject.parseObject(o.toString()); + String status = data.getString("status"); + if ("0".equals(status)){ + continue; + } + String modiTime = data.getString("modiTime"); + if (DateUtil.between(new Date(),DateUtil.parseDateTime(modiTime), DateUnit.HOUR) > 1){ + continue; + } + String createTime = data.getString("createTime"); + Integer orderNum = data.getInteger("orderIdInt"); + String id = data.getString("id"); + String pid = data.getString("pid"); + String orgName = data.getString("orgName"); + String shortName = data.getString("shortName"); + String path = data.getString("path").replaceAll("^/+|/+$", "").replace("/", ",");; + SysDept dept = new SysDept(); + dept.setDeptId(id); + dept.setParentId(pid); + dept.setDeptName(orgName); + dept.setShortName(shortName); + dept.setStatus("1"); + dept.setDelFlag("0"); + dept.setUpdateTime(DateUtil.parseDateTime(modiTime)); + dept.setOrderNum(orderNum); + dept.setCreateTime(DateUtil.parseDateTime(createTime)); + dept.setAncestors(path); + sysList.add(dept); + } + + deptService.insertORUpdate(sysList); + } + + +} diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/ISysDeptService.java index 254f73d6..50e0ebaa 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -1,6 +1,7 @@ package org.dromara.system.service; import cn.hutool.core.lang.tree.Tree; +import org.dromara.system.domain.SysDept; import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.vo.SysDeptVo; @@ -42,7 +43,7 @@ public interface ISysDeptService { * @param roleId 角色ID * @return 选中部门列表 */ - List selectDeptListByRoleId(Long roleId); + List selectDeptListByRoleId(Long roleId); /** * 根据部门ID查询信息 @@ -138,4 +139,8 @@ public interface ISysDeptService { List getDsList(); List deviceStatics(String deviceType,String manageDeptId); + + List jzDpet(String updateTime); + + boolean insertORUpdate(List list); } diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 456780bb..eb850594 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.apache.ibatis.executor.BatchResult; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.exception.ServiceException; @@ -77,6 +79,7 @@ public class SysDeptServiceImpl implements ISysDeptService { private LambdaQueryWrapper buildQueryWrapper(SysDeptBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.isNotNull(SysDept::getAncestors); lqw.eq(SysDept::getDelFlag, UserConstants.DEL_FLAG_NORMAL); lqw.eq(StringUtils.isNotBlank(bo.getDeptId()), SysDept::getDeptId, bo.getDeptId()); lqw.eq(StringUtils.isNotBlank(bo.getParentId()), SysDept::getParentId, bo.getParentId()); @@ -84,9 +87,7 @@ public class SysDeptServiceImpl implements ISysDeptService { lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysDept::getStatus, bo.getStatus()); lqw.eq(StringUtils.isNotBlank(bo.getFullName()), SysDept::getFullName, bo.getFullName()); lqw.eq(StringUtils.isNotBlank(bo.getIsVisible()),SysDept::getIsVisible,bo.getIsVisible()); - lqw.orderByAsc(SysDept::getAncestors); lqw.orderByAsc(SysDept::getParentId); - lqw.orderByAsc(SysDept::getOrderNum); lqw.orderByAsc(SysDept::getDeptId); return lqw; } @@ -116,7 +117,7 @@ public class SysDeptServiceImpl implements ISysDeptService { * @return 选中部门列表 */ @Override - public List selectDeptListByRoleId(Long roleId) { + public List selectDeptListByRoleId(Long roleId) { SysRole role = roleMapper.selectById(roleId); return baseMapper.selectDeptListByRoleId(roleId, role.getDeptCheckStrictly()); } @@ -304,7 +305,7 @@ public class SysDeptServiceImpl implements ISysDeptService { */ private void updateParentDeptStatusNormal(SysDept dept) { String ancestors = dept.getAncestors(); - Long[] deptIds = Convert.toLongArray(ancestors); + String [] deptIds = Convert.toStrArray(ancestors); baseMapper.update(null, new LambdaUpdateWrapper() .set(SysDept::getStatus, UserConstants.DEPT_NORMAL) .in(SysDept::getDeptId, Arrays.asList(deptIds))); @@ -386,4 +387,17 @@ public class SysDeptServiceImpl implements ISysDeptService { } return -1; // 如果没有找到不为0的字符,返回-1 } + + @Override + @DS("slave") + public List jzDpet(String updateTime) { + return baseMapper.jzDept(updateTime); + } + + @Override + public boolean insertORUpdate(List list) { + List batchResults = baseMapper.insertOrUpdate(list); + return true; + } + } diff --git a/stwzhj-modules/wzhj-system/src/main/resources/mapper/system/SysDeptMapper.xml b/stwzhj-modules/wzhj-system/src/main/resources/mapper/system/SysDeptMapper.xml index ffcc40ae..3b6bae79 100644 --- a/stwzhj-modules/wzhj-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/stwzhj-modules/wzhj-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -22,7 +22,7 @@ select count(*) from sys_dept where del_flag = '0' and dept_id = #{deptId} - select d.dept_id from sys_dept d left join sys_role_dept rd on d.dept_id = rd.dept_id @@ -229,4 +229,12 @@ + + diff --git a/stwzhj-visual/stwzhj-nacos/src/main/resources/application.properties b/stwzhj-visual/stwzhj-nacos/src/main/resources/application.properties index bd8d74e1..aafad8ba 100644 --- a/stwzhj-visual/stwzhj-nacos/src/main/resources/application.properties +++ b/stwzhj-visual/stwzhj-nacos/src/main/resources/application.properties @@ -43,6 +43,7 @@ db.num=1 #db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.url.0=jdbc:mysql://10.129.221.10:3306/wzhj-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root +#db.password.0=root db.password.0=Ycgis@2509 ### the maximum retry times for push