From d465f6537bda4c5b3844a15b73badf704f44c9a1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 07 四月 2025 16:01:16 +0800
Subject: [PATCH] art: 设备管理-用户选择-根据岗位选择用户

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |   67 +++++++++++++++++++++++++++++----
 1 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 106de85..55e48fa 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
@@ -26,6 +27,7 @@
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.vo.MdcUserProVo;
 import org.jeecg.modules.system.vo.SysUserDepVo;
+import org.jeecg.modules.system.vo.UserSelector;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
@@ -48,7 +50,7 @@
 @Service
 @Slf4j
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
-	
+
 	@Autowired
 	private SysUserMapper userMapper;
 	@Autowired
@@ -79,6 +81,10 @@
 	MdcUserProductionMapper mdcUserProductionMapper;
 	@Resource
 	private ISysDictService sysDictService;
+	@Resource
+	private MdcProductionEquipmentMapper mdcProductionEquipmentMapper;
+	@Resource
+	private DncDevicePermissionMapper dncDevicePermissionMapper;
 
     @Override
     @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
@@ -141,8 +147,8 @@
 	public SysUser getUserByName(String username) {
 		return userMapper.getUserByName(username);
 	}
-	
-	
+
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addUserWithRole(SysUser user, String roles) {
@@ -203,7 +209,7 @@
 				roleIndex = list.get(0);
 			}
 		}
-		
+
 		//濡傛灉componentUrl涓虹┖锛屽垯杩斿洖绌�
 		if(oConvertUtils.isEmpty(roleIndex.getComponent())){
 			return null;
@@ -269,7 +275,7 @@
 			info.setSysUserName(sysUser.getRealname());
 			info.setSysOrgCode(sysUser.getOrgCode());
 		}
-		
+
 		//澶氶儴闂ㄦ敮鎸乮n鏌ヨ
 		List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId());
 		List<String> sysMultiOrgCode = new ArrayList<String>();
@@ -285,7 +291,7 @@
 			}
 		}
 		info.setSysMultiOrgCode(sysMultiOrgCode);
-		
+
 		return info;
 	}
 
@@ -577,12 +583,24 @@
 				sysUserDepartMapper.insert(userDeaprt);
 			}
 		}
+		String[] arr = {};
 		//step.4 淇濆瓨鎵�灞炰骇绾�
 		if (oConvertUtils.isNotEmpty(selectedProductions)) {
-			String[] arr = selectedProductions.split(",");
+			arr = selectedProductions.split(",");
 			for (String productionId : arr) {
 				MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId);
 				mdcUserProductionMapper.insert(mdcUserProduction);
+			}
+		}
+		//step.5 淇濆瓨璁惧鏉冮檺
+		List<String> EquipmentIds= mdcProductionEquipmentMapper.selectList(new QueryWrapper<MdcProductionEquipment>().in("production_id",arr))
+				.stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+		if (oConvertUtils.isNotEmpty(EquipmentIds)) {
+			for (String equipmentId : EquipmentIds) {
+				DncDevicePermission dncDevicePermission=new DncDevicePermission();
+				dncDevicePermission.setDeviceId(equipmentId);
+				dncDevicePermission.setUserId(user.getId());
+				dncDevicePermissionMapper.insert(dncDevicePermission);
 			}
 		}
 	}
@@ -646,7 +664,20 @@
 				mdcUserProductionMapper.insert(mdcUserProduction);
 			}
 		}
-		//step.5 淇敼鎵嬫満鍙峰拰閭
+		//step.5 淇敼璁惧鏉冮檺
+		//鍏堝垹鍚庡姞
+		dncDevicePermissionMapper.delete(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getUserId, user.getId()));
+		List<String> EquipmentIds= mdcProductionEquipmentMapper.selectList(new QueryWrapper<MdcProductionEquipment>().in("production_id",array))
+				.stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+		if (oConvertUtils.isNotEmpty(EquipmentIds)) {
+			for (String equipmentId : EquipmentIds) {
+				DncDevicePermission dncDevicePermission=new DncDevicePermission();
+				dncDevicePermission.setDeviceId(equipmentId);
+				dncDevicePermission.setUserId(user.getId());
+				dncDevicePermissionMapper.insert(dncDevicePermission);
+			}
+		}
+		//step.6 淇敼鎵嬫満鍙峰拰閭
 		// 鏇存柊鎵嬫満鍙枫�侀偖绠辩┖瀛楃涓蹭负 null
 		userMapper.updateNullByEmptyString("email");
 		userMapper.updateNullByEmptyString("phone");
@@ -713,4 +744,24 @@
 	public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) {
 		return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId);
 	}
+
+	@Override
+	public List<UserSelector> selectOperatorList(String equipmentId, String productionId, String positionCode) {
+		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(SysUser::getPost, positionCode);
+		if(StringUtils.isNotBlank(equipmentId)) {
+			queryWrapper.isNull(SysUser::getEquipmentIds);
+			queryWrapper.or().eq(SysUser::getEquipmentIds, "");
+			queryWrapper.or().like(SysUser::getEquipmentIds, equipmentId);
+		}
+		if(StringUtils.isNotBlank(productionId)) {
+			queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=id and t.pro_id={0}", productionId);
+		}
+		queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0);
+		queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1);
+		queryWrapper.orderByDesc(SysUser::getId);
+		List<SysUser> sysUsers = userMapper.selectList(queryWrapper);
+		List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList());
+		return collect;
+	}
 }

--
Gitblit v1.9.3