diff --git a/jeecg-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java b/jeecg-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java index c3a17c2..9091c6c 100644 --- a/jeecg-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java +++ b/jeecg-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java @@ -520,6 +520,8 @@ public interface ISysBaseAPI extends CommonAPI { List checkExistUser(String existUserId, String userName, String mobile, String idCard); + List checkExistUserAY(String existUserId, String userName, String mobile, String idCard); + Page pageUser(SysUser user, Integer pageNo, Integer pageSize, List managerCodes); // List checkExistUser(String existUserId,String userName, String mobile, String idCard); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IHealthUserEmployeeExService.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IHealthUserEmployeeExService.java index b1305ec..58b635b 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IHealthUserEmployeeExService.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/IHealthUserEmployeeExService.java @@ -63,6 +63,8 @@ public interface IHealthUserEmployeeExService extends IService updateUserInfo(UserEmployee userEmployee, LoginUser loginUser); boolean saveAndUserDepartManager(UserEmployee userEmployee); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java index 6e63898..a9ef24f 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java @@ -894,6 +894,52 @@ public class HealthUserEmployeeExServiceImpl extends ServiceImpl checkExistUser = sysBaseAPI.checkExistUserAY(null, userEmployee.getUsername(), userEmployee.getPhone(), userEmployee.getIdCard()); + if (CollectionUtil.isNotEmpty(checkExistUser)) { + ExceptionAssertsUtil.fail(String.join(",", checkExistUser)); + } + // 1: 员工 + userEmployee.setPersonType("1"); + userEmployee.setCreateTime(new Date()); + handlePassword(userEmployee); + userEmployee.setStatus(1); + userEmployee.setWorkNo(userEmployee.getExtension().getEmpSysno()); + userEmployee.setDelFlag(CommonConstant.DEL_FLAG_0); + String selectedDeparts = handleDepart(userEmployee); + sysUserService.addUserWithDepart(userEmployee, selectedDeparts); + String userId = userEmployee.getId(); + if (!StringUtils.hasText(userId)) { + return false; + } + addCommonRole(userId); + HealthUserEmployeeEx extension = userEmployee.getExtension(); + extension.setId(userId); + extension.setCreatedon(new Date()); + // 添加当前年龄 + if (StrUtil.isNotEmpty(userEmployee.getIdCard())) { + extension.setCurrentAge(GlobalUtils.getAgeByIdCard(userEmployee.getIdCard())); + } + int i = healthUserEmployeeExMapper.insert(extension); + // 保存员工岗位信息,其他用户类型无岗位 + SysUserPost sysUserPost = new SysUserPost(); + if (StrUtil.isNotBlank(userEmployee.getExtension().getPostId())) { + sysUserPost.setId(userId); + sysUserPost.setPostId(userEmployee.getExtension().getPostId()); + sysUserPost.setClassifyId(userEmployee.getExtension().getClassifyId()); + sysUserPostService.insert(sysUserPost); + } + return i != 0; + } + private void addQhCommonRole(String userId) { SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper().eq(SysRole::getRoleCode, "manager_qh")); SysUserRole userRole = new SysUserRole(); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java index 52b0e39..05ab045 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/LoginAnYanServiceImpl.java @@ -186,7 +186,7 @@ public class LoginAnYanServiceImpl implements ILoginAnYanService { user.setOrgCode(departId); user.setPersonType("1"); user.setStatus(1); - healthUserEmployeeExService.saveAndUser(user); + healthUserEmployeeExService.saveAndUserAY(user); } else if (list.size() == 1) { SysUser sysUser = list.get(0); UserEmployee user = getUserEmployee(employeeUnitDTO); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 902157c..600cd7c 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -40,7 +40,6 @@ import org.jeecg.common.bean.request.SendSmsReq; import org.jeecg.common.bean.response.BaseUserGroup; import org.jeecg.common.bean.response.NotSignType; import org.jeecg.common.bean.transfer.GroupCount; -import org.jeecg.common.bean.transfer.UserEatFlag; import org.jeecg.common.bean.transfer.UserEatParam; import org.jeecg.common.bean.transfer.UserWeightSign; import org.jeecg.common.config.TenantContext; @@ -441,7 +440,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } @Override - public List specificGroupUser(){ + public List specificGroupUser() { /* * 机关其他 A01A80 * 陇东油气开发分公司 A01A44 @@ -536,6 +535,28 @@ public class SysBaseApiImpl implements ISysBaseAPI { }).collect(Collectors.toList()); } + @Override + public List checkExistUserAY(String existUserId, String userName, String mobile, String idCard) { + //userName mobile idCard + List list = userMapper.checkExistUser(existUserId, userName, mobile, idCard); + return list.stream() + .filter(f -> !"account".equals(f.getAccount()) && !"mobile".equals(f.getAccount()) && f.getCount() > 0) + .map(CheckExistUserRes::getAccount) + .map(s -> { + if ("userName".equals(s)) { + s = "用户账号已存在"; + } + //安眼暂时去掉手机号校验 +// if ("mobile".equals(s)) { +// s = "电话号码已存在"; +// } + if ("idCard".equals(s)) { + s = "身份证号已存在"; + } + return s; + }).collect(Collectors.toList()); + } + @Override public Page pageUser(SysUser user, Integer pageNo, Integer pageSize, List managerCodes) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(user, Collections.emptyMap()); @@ -613,7 +634,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { return Collections.emptyList(); } List result = new ArrayList<>(); - GlobalUtils.convertList(users, result,LoginUser.class); + GlobalUtils.convertList(users, result, LoginUser.class); return result; } @@ -1059,13 +1080,13 @@ public class SysBaseApiImpl implements ISysBaseAPI { @Override public void sendBusSms(BusTemplateMessageDTO message) { //判断群发 - if(message.isMultipart()){ - if(CollectionUtil.isEmpty(message.getPhones())){ + if (message.isMultipart()) { + if (CollectionUtil.isEmpty(message.getPhones())) { log.error("群发短信,phones不能为空"); - return ; - }else if(message.getPhones().size()>CommonConstant.MSG_BATCH_NUM){ + return; + } else if (message.getPhones().size() > CommonConstant.MSG_BATCH_NUM) { log.error("群发短信,一次不能超过10个手机号"); - return ; + return; } } @@ -1110,7 +1131,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { sysMessage.setEsTitle(title); sysMessage.setTemplateCode(message.getTemplateCode()); sysMessage.setEsType(message.isMultipart() ? CommonConstant.ES_TYPE_2 : CommonConstant.ES_TYPE_1);//这里借用busType,区分1为短信单发,2为短信群发,群发的情况可能会一次保存很多信息,需要特殊优化处理 - sysMessage.setEsReceiver(message.isMultipart() ? String.join(",", message.getPhones()): toUser);//群发的这里phones处理一下 + sysMessage.setEsReceiver(message.isMultipart() ? String.join(",", message.getPhones()) : toUser);//群发的这里phones处理一下 sysMessage.setEsContent(content); sysMessage.setEsParam(JSONObject.toJSONString(map)); sysMessage.setEsSendStatus(SendMsgStatusEnum.WAIT.getCode()); @@ -2041,7 +2062,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { @Override public Result> getUserIdsByOrgCodeList(List orgCodeList) { - return Result.OK("",userMapper.getUserIdsByOrgCodeList(orgCodeList)); + return Result.OK("", userMapper.getUserIdsByOrgCodeList(orgCodeList)); } @@ -2150,11 +2171,11 @@ public class SysBaseApiImpl implements ISysBaseAPI { @Override - public List userBodyInfo(List userIds){ + public List userBodyInfo(List userIds) { if (CollUtil.isEmpty(userIds)) { return Collections.emptyList(); } - return userDataRecordBWHMapper.userBodyInfo(userIds,null); + return userDataRecordBWHMapper.userBodyInfo(userIds, null); } @@ -2204,7 +2225,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } @Override - public void sendSmsNotSign(List notSignTypes){ + public void sendSmsNotSign(List notSignTypes) { if (CollUtil.isEmpty(notSignTypes)) { return; } diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/task/AnYanUserInfoJob.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/task/AnYanUserInfoJob.java index 8d7ad8d..297fed6 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/task/AnYanUserInfoJob.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/task/AnYanUserInfoJob.java @@ -7,15 +7,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.renkang.anyan.client.AnYanClient; import com.renkang.anyan.model.vo.AnYanUpdateUserBatchInfo; -import com.xxl.job.core.handler.annotation.XxlJob; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -34,7 +35,8 @@ public class AnYanUserInfoJob { private final ISysUserService sysUserService; - @XxlJob("an-yan-update-vital_info") + // @XxlJob("an-yan-update-vital_info") + @Scheduled(cron = "0 00 15 * * ?") public void batchUpdateUserInfo() { log.info("------开始执行用户信息同步任务------"); boolean flag = true; @@ -87,21 +89,30 @@ public class AnYanUserInfoJob { } String phone = userInfo.getPhone(); String idNo = userInfo.getIdNo(); - if ((phone != null && !phone.equals(existingUser.getPhone())) || - (idNo != null && !idNo.equals(existingUser.getIdCard()))) { + if (StringUtils.isBlank(existingUser.getPhone())) { + //系统中手机号为空时才更新 sysUserService.update(new LambdaUpdateWrapper() .eq(SysUser::getWorkNo, existingUser.getWorkNo()) .set(SysUser::getPhone, phone) - .set(SysUser::getIdCard, idNo) - .set(SysUser::getUpdateTime, existingUser.getUpdateTime()) + .set(SysUser::getUpdateTime, new Date()) ); } - if (ObjectUtil.isNull(existingUser.getBirthday()) && StringUtils.isNotBlank(idNo)) { - //同步生日 - sysUserService.update(new LambdaUpdateWrapper() - .eq(SysUser::getWorkNo, existingUser.getWorkNo()) - .set(SysUser::getBirthday, IdcardUtil.getBirthByIdCard(idNo)) - ); + if (StringUtils.isNotBlank(idNo)) { + if (existingUser.getIdCard() == null || !idNo.equals(existingUser.getIdCard())) { + //系统身份证为空或者身份证不一致时做更新 + sysUserService.update(new LambdaUpdateWrapper() + .eq(SysUser::getWorkNo, existingUser.getWorkNo()) + .set(SysUser::getIdCard, idNo) + .set(SysUser::getUpdateTime, new Date()) + ); + } + if (ObjectUtil.isNull(existingUser.getBirthday())) { + //同步生日 + sysUserService.update(new LambdaUpdateWrapper() + .eq(SysUser::getWorkNo, existingUser.getWorkNo()) + .set(SysUser::getBirthday, IdcardUtil.getBirthByIdCard(idNo)) + ); + } } } catch (Exception e) { log.error("用户信息同步任务异常:{}", e.getMessage());