From 25f0083c533bc4632d14dfe6b7f6f40777f86c32 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 14 十月 2026 15:47:10 +0800
Subject: [PATCH] 【丽水】getCurrentUserServiceSubtaskCount 和 patItem对不上总数
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 26 +++++++------
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 60 +++++++++++++++++++-----------
2 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index 6852e78..986a89d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -844,29 +844,31 @@
@PostMapping("/getCurrentUserServiceSubtaskCount")
public Map<String, Object> getCurrentUserServiceSubtaskCount() {
Map<String, Object> map = new HashMap<>();
- LoginUser loginUser = getLoginUser();
- SysUser sysUser = loginUser.getUser();
+ SysUser sysUser = SecurityUtils.getLoginUser().getUser();
SysUserDept sysUserDept = new SysUserDept();
sysUserDept.setUserId(sysUser.getUserId());
sysUserDept.setOrgid(sysUser.getOrgid());
sysUserDept.setCampusid(sysUser.getCampusid());
sysUserDept.setDeptType("1");
- List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept);
- SysUserDept sysUserWard = new SysUserDept();
- sysUserWard.setUserId(sysUser.getUserId());
- sysUserWard.setOrgid(sysUser.getOrgid());
- sysUserWard.setCampusid(sysUser.getCampusid());
- sysUserWard.setDeptType("2");
- List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard);
- List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
- List<String> wardCodes = sysUserWards.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
+ List<Map<String, Object>> deptCodesMap = sysUser.getBelongDepts();
+ List<Map<String, Object>> wardCodesMap = sysUser.getBelongWards();
+ List<String> deptCodes = deptCodesMap.stream()
+ .map(item -> item.get("deptCode"))
+ .filter(obj -> obj != null) // 鍓旈櫎null
+ .map(Object::toString)
+ .collect(Collectors.toList());
+ List<String> wardCodes = wardCodesMap.stream()
+ .map(item -> item.get("districtCode"))
+ .filter(obj -> obj != null) // 鍓旈櫎null
+ .map(Object::toString)
+ .collect(Collectors.toList());
ServiceSubtaskEntity entity = new ServiceSubtaskEntity();
entity.setOrgid(sysUser.getOrgid());
entity.setLeaveldeptcodes(deptCodes);
entity.setLeavehospitaldistrictcodes(wardCodes);
if (ObjectUtils.isNotEmpty(sysUser)) {
if (!("admin").equals(sysUser.getUserName())) {
- if (ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)) {
+ if (CollectionUtils.isNotEmpty(deptCodes) && CollectionUtils.isNotEmpty(wardCodes)) {
map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
}
} else {
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index aad52e0..28ad277 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -406,17 +406,21 @@
</if>
</if>
<if test="deptOrDistrict==2">
- AND (1=1
- <if test="leavehospitaldistrictcodes != null">
- AND leavehospitaldistrictcode IN
+ AND (
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ leavehospitaldistrictcode IN
<foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
separator=","
close=")">
#{leavehospitaldistrictcode}
</foreach>
</if>
- <if test=" leaveldeptcodes != null">
- OR deptcode IN
+ <if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0)
+ and (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
+ OR
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size() > 0">
+ deptcode IN
<foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
close=")">
#{leaveldeptcode}
@@ -2637,17 +2641,21 @@
</if>
</if>
<if test="deptOrDistrict==2">
- AND (1=1
+ AND (
<if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND leavehospitaldistrictcode IN
+ leavehospitaldistrictcode IN
<foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
separator=","
close=")">
#{leavehospitaldistrictcode}
</foreach>
</if>
+ <if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0)
+ and (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
+ OR
+ </if>
<if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
- OR deptcode IN
+ deptcode IN
<foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
close=")">
#{leaveldeptcode}
@@ -2844,20 +2852,28 @@
<if test="campusid != null and campusid != ''">
and campusid = #{campusid}
</if>
- <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
- AND leavehospitaldistrictcode IN
- <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
- separator=","
- close=")">
- #{leavehospitaldistrictcode}
- </foreach>
- </if>
- <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
- AND deptcode IN
- <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
- close=")">
- #{leaveldeptcode}
- </foreach>
+ <if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0)
+ or (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
+ AND(
+ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+ leavehospitaldistrictcode IN
+ <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="("
+ separator=","
+ close=")">
+ #{leavehospitaldistrictcode}
+ </foreach>
+ </if>
+ <if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0)
+ and (leaveldeptcodes != null and leaveldeptcodes.size() > 0)">
+ OR
+ </if>
+ <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0">
+ deptcode IN
+ <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator=","
+ close=")">
+ #{leaveldeptcode}
+ </foreach>
+ </if>)
</if>
</select>
--
Gitblit v1.9.3