From da26a61eee160d63ad99b69bcef0b24565c1a8f7 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期四, 10 七月 2025 15:44:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 170 insertions(+), 9 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 d466081..7f1e65b 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,13 +6,16 @@
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;
import org.jeecg.common.constant.enums.RoleIndexConfigEnum;
import org.jeecg.common.desensitization.annotation.SensitiveEncode;
+import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.SysUserCacheInfo;
+import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.common.util.oConvertUtils;
@@ -20,9 +23,12 @@
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.mapper.*;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
+import org.jeecg.modules.system.service.ISysDictService;
import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.vo.EamUserRepDepVo;
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;
@@ -45,7 +51,7 @@
@Service
@Slf4j
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
-
+
@Autowired
private SysUserMapper userMapper;
@Autowired
@@ -74,6 +80,10 @@
SysRoleIndexMapper sysRoleIndexMapper;
@Resource
MdcUserProductionMapper mdcUserProductionMapper;
+ @Resource
+ EamBaseRepairDepartUserMapper eamBaseRepairDepartUserMapper;
+ @Resource
+ private ISysDictService sysDictService;
@Override
@CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
@@ -89,8 +99,12 @@
if (!newpassword.equals(confirmpassword)) {
return Result.error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!");
}
+ //璁剧疆瀵嗙爜鏇存柊鏃堕棿
+ //sysUser.setPasswordTime(new Date());
+ //璁剧疆瀵嗙爜棣栨鐧诲綍澶辨晥
+ //sysUser.setPasswordFlag(CommonConstant.DEL_FLAG_0);
String password = PasswordUtil.encrypt(username, newpassword, user.getSalt());
- this.userMapper.update(new SysUser().setPassword(password), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId()));
+ this.userMapper.update(new SysUser().setPassword(password).setPasswordTime(new Date()).setPasswordFlag(CommonConstant.DEL_FLAG_0), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId()));
return Result.ok("瀵嗙爜閲嶇疆鎴愬姛!");
}
@@ -99,6 +113,10 @@
public Result<?> changePassword(SysUser sysUser) {
String salt = oConvertUtils.randomGen(8);
sysUser.setSalt(salt);
+ //璁剧疆瀵嗙爜鏇存柊鏃堕棿
+ sysUser.setPasswordTime(new Date());
+ //绠$悊鍛樹慨鏀瑰瘑鐮侊紝璁剧疆鐢ㄦ埛棣栨鐧诲綍
+ //sysUser.setPasswordFlag();
String password = sysUser.getPassword();
String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt);
sysUser.setPassword(passwordEncode);
@@ -128,8 +146,8 @@
public SysUser getUserByName(String username) {
return userMapper.getUserByName(username);
}
-
-
+
+
@Override
@Transactional(rollbackFor = Exception.class)
public void addUserWithRole(SysUser user, String roles) {
@@ -190,7 +208,7 @@
roleIndex = list.get(0);
}
}
-
+
//濡傛灉componentUrl涓虹┖锛屽垯杩斿洖绌�
if(oConvertUtils.isEmpty(roleIndex.getComponent())){
return null;
@@ -256,7 +274,7 @@
info.setSysUserName(sysUser.getRealname());
info.setSysOrgCode(sysUser.getOrgCode());
}
-
+
//澶氶儴闂ㄦ敮鎸乮n鏌ヨ
List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId());
List<String> sysMultiOrgCode = new ArrayList<String>();
@@ -272,7 +290,7 @@
}
}
info.setSysMultiOrgCode(sysMultiOrgCode);
-
+
return info;
}
@@ -342,6 +360,16 @@
@Override
public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
return userMapper.getUserByRoleId(page,roleId,username);
+ }
+
+ /**
+ * 鏍规嵁璁惧杞﹂棿绠$悊Id鏌ヨ
+ * @param page
+ * @param baseFactoryId 璁惧杞﹂棿绠$悊Id
+ * @return
+ */
+ public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String baseFactoryId,String username){
+ return userMapper.getUserByWorkShopDepartId(page,baseFactoryId,username);
}
@@ -442,6 +470,32 @@
result.error500("璇ョ敤鎴峰凡鍐荤粨");
return result;
}
+ //鎯呭喌4锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佺郴棣栨浣跨敤锛岄渶淇敼瀵嗙爜
+ List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN);
+ if (dictList != null && !dictList.isEmpty()) {
+ if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) {
+ baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "绯婚娆$櫥褰曠郴缁燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null);
+ result.setCode(5001);
+ result.setMessage("鐢ㄦ埛瀵嗙爜绯婚粯璁ゅ瘑鐮侊紝闇�閲嶇疆瀵嗙爜鍚庨噸鏂扮櫥褰曞瘑鐮侊紒");
+ result.setSuccess(false);
+ return result;
+ }
+ }
+ //鎯呭喌5锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佹槸鍚﹀凡杩囨洿鏀瑰懆鏈�
+ Date passwordTime = sysUser.getPasswordTime();
+ //Integer passwordExpirationPeriod = CommonConstant.PASSWORD_EXPIRATION_PERIOD;
+ List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_PASSWORD_EXPIRATION);
+ if (dictModelList != null && !dictModelList.isEmpty()) {
+ Integer passwordExpirationPeriod = Integer.valueOf(dictModelList.get(0).getValue());
+ Date dayAfter = DateUtils.getDayAfter(passwordTime, passwordExpirationPeriod);
+ if (new Date().after(dayAfter)) {
+ baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null);
+ result.setCode(5002);
+ result.setMessage("鐢ㄦ埛瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒");
+ result.setSuccess(false);
+ return result;
+ }
+ }
return result;
}
@@ -519,7 +573,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String selectedProductions) {
+ public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String selectedProductions, String selectedRepairDeparts) {
//step.1 淇濆瓨鐢ㄦ埛
this.save(user);
//step.2 淇濆瓨瑙掕壊
@@ -546,12 +600,20 @@
mdcUserProductionMapper.insert(mdcUserProduction);
}
}
+ //step.5 淇濆瓨鎵�灞炵淮淇儴闂�
+ if (oConvertUtils.isNotEmpty(selectedRepairDeparts)) {
+ String[] arr = selectedRepairDeparts.split(",");
+ for (String repairDepartId : arr) {
+ EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId);
+ eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser);
+ }
+ }
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
- public void editUser(SysUser user, String roles, String departs, String productions) {
+ public void editUser(SysUser user, String roles, String departs, String productions, String repairDeparts) {
//step.1 淇敼鐢ㄦ埛鍩虹淇℃伅
this.updateById(user);
//step.2 淇敼瑙掕壊
@@ -607,6 +669,19 @@
mdcUserProductionMapper.insert(mdcUserProduction);
}
}
+ //step.5 淇敼缁翠慨閮ㄩ棬
+ String[] arrayRepDep = {};
+ if(oConvertUtils.isNotEmpty(repairDeparts)){
+ arrayRepDep = repairDeparts.split(",");
+ }
+ //鍏堝垹鍚庡姞
+ eamBaseRepairDepartUserMapper.delete(new QueryWrapper<EamBaseRepairDepartUser>().lambda().eq(EamBaseRepairDepartUser::getUserId, user.getId()));
+ if (oConvertUtils.isNotEmpty(repairDeparts)) {
+ for (String repairDepartId : arrayRepDep) {
+ EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId);
+ eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser);
+ }
+ }
//step.5 淇敼鎵嬫満鍙峰拰閭
// 鏇存柊鎵嬫満鍙枫�侀偖绠辩┖瀛楃涓蹭负 null
userMapper.updateNullByEmptyString("email");
@@ -653,6 +728,21 @@
return res;
}
+ @Override
+ public Map<String, String> getRepDepNamesByUserIds(List<String> userIds) {
+ List<EamUserRepDepVo> list = this.baseMapper.getRepDepNamesByUserIds(userIds);
+
+ Map<String, String> res = new HashMap<>(5);
+ list.forEach(item -> {
+ if (res.get(item.getUserId()) == null) {
+ res.put(item.getUserId(), item.getRepairDepartName());
+ } else {
+ res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getRepairDepartName());
+ }
+ });
+ return res;
+ }
+
// 鏍规嵁瑙掕壊Id鏌ヨ璇ヨ鑹蹭笅鐨勬墍鏈夌敤鎴蜂俊鎭�
@Override
public List<SysUser> getAllUsersByRoleId(String roleId) {
@@ -666,4 +756,75 @@
public List<String> getUserByRoleCode(String roleCode) {
return this.baseMapper.getUserByRoleCode(roleCode);
}
+
+ /**
+ * 鏍规嵁瑙掕壊缂栫爜鍒楄〃鏌ヨ鐢ㄦ埛id闆嗗悎
+ */
+ @Override
+ public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) {
+ return this.baseMapper.getUserByRoleCodeList(roleCodeList);
+ }
+
+ /**
+ * 鏍规嵁瑙掕壊缂栫爜鍜岃澶囩紪鍙锋煡璇㈢敤鎴�
+ */
+ @Override
+ public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) {
+ return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId);
+ }
+
+ @Override
+ public List<UserSelector> selectOperatorList(String equipmentCode, String productionId, String positionCode) {
+ LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SysUser::getPost, positionCode);
+ if(StringUtils.isNotBlank(equipmentCode)) {
+ queryWrapper.and(q -> q.isNull(SysUser::getEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEquipmentIds, equipmentCode));
+ }
+ if(StringUtils.isNotBlank(productionId)) {
+ queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=sys_user.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;
+ }
+
+ /**
+ * 閫夋嫨鐢ㄦ埛
+ * @param equipmentCode 閫夋嫨鐨勮澶嘔D
+ * @param factoryId 閫夋嫨鐨勫伐鍘侷D
+ * @param positionCode 宀椾綅缂栧彿
+ * @return
+ */
+ @Override
+ public List<UserSelector> selectOperatorFactoryList(String equipmentCode, String factoryId, String positionCode){
+ LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SysUser::getPost, positionCode);
+// if(StringUtils.isNotBlank(equipmentCode)) {
+// queryWrapper.and(q -> q.isNull(SysUser::getEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEquipmentIds, equipmentCode));
+// }
+// if(StringUtils.isNotBlank(factoryId)) {
+// queryWrapper.exists("select 1 from eam_base_factory_user t where t.user_id=sys_user.id and t.factory_id={0}", factoryId);
+// }
+ 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;
+ }
+
+ @Override
+ public List<UserSelector> selectOperatorList(String positionCode) {
+ LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SysUser::getPost, positionCode);
+ 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