| | |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.constant.BladeConstant; |
| | | import org.springblade.core.tool.constant.RoleConstant; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.*; |
| | | import org.springblade.modules.FTP.FtpUtil; |
| | | import org.springblade.modules.accreditation.entity.AccreditationRecords; |
| | | import org.springblade.modules.accreditation.service.AccreditationRecordsService; |
| | | import org.springblade.modules.dispatcher.entity.Dispatcher; |
| | | import org.springblade.modules.dispatcher.service.IDispatcherService; |
| | | import org.springblade.modules.exam.excel.ExportExamScoreExcel; |
| | | import org.springblade.modules.experience.entity.Experience; |
| | | import org.springblade.modules.experience.service.IExperienceService; |
| | | import org.springblade.modules.jurisdiction.entity.Jurisdiction; |
| | |
| | | import org.springblade.modules.system.entity.Dept; |
| | | import org.springblade.modules.system.entity.Role; |
| | | import org.springblade.modules.system.entity.User; |
| | | import org.springblade.modules.system.entity.UserDetailEntity; |
| | | import org.springblade.modules.system.excel.*; |
| | | import org.springblade.modules.system.node.TreeNode; |
| | | import org.springblade.modules.system.service.IDeptService; |
| | | import org.springblade.modules.system.service.IRoleService; |
| | | import org.springblade.modules.system.service.IUserService; |
| | | import org.springblade.modules.system.service.MyAsyncService; |
| | | import org.springblade.modules.system.vo.DeptVO; |
| | | import org.springblade.modules.system.service.*; |
| | | import org.springblade.modules.system.vo.UserInfoDetail; |
| | | import org.springblade.modules.system.vo.UserVO; |
| | | import org.springblade.modules.system.wrapper.UserWrapper; |
| | | import org.springblade.modules.training.entity.TrainingRegistration; |
| | | import org.springblade.modules.training.service.TrainingRegistrationService; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.net.URLEncoder; |
| | | import java.security.InvalidKeyException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.springblade.common.config.FtpConfig.*; |
| | | import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; |
| | | import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE; |
| | | |
| | | /** |
| | |
| | | public class UserController { |
| | | |
| | | private final IUserService userService; |
| | | private final IUserDetailService userDetailService; |
| | | private final IDeptService iDeptService; |
| | | private final IRoleService roleService; |
| | | private final IExperienceService experienceService; |
| | |
| | | }) |
| | | @ApiOperationSupport(order = 3) |
| | | @ApiOperation(value = "列表", notes = "传入account和realName") |
| | | //@PreAuth(RoleConstant.HAS_ROLE_ADMIN) |
| | | public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) { |
| | | IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId())); |
| | | public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId) { |
| | | IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId())); |
| | | return R.data(pages); |
| | | } |
| | | |
| | |
| | | if (userCount > 0) { |
| | | throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | // 校验保安员,如果角色为保安员,则需要判断身份证号是否已注册 |
| | | List<String> roleIds = Arrays.asList(user.getRoleId().split(",")); |
| | | String roleId = "1412226235153731586"; |
| | | if (roleIds.contains(roleId)){ |
| | | // 判断是否已存在,通过身份证号码查询用户信息 |
| | | QueryWrapper<User> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("is_deleted",0).eq("status",1).eq("cardid",user.getCardid()).like("role_id","%"+roleId+"%"); |
| | | List<User> list = userService.list(wrapper); |
| | | if (list.size()>0){ |
| | | throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前保安员身份证号码 [{}] 已存在!", user.getCardid())); |
| | | } |
| | | } |
| | | user.setTenantId("000000"); |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | |
| | | } |
| | | //新增 |
| | | boolean stats = userService.save(user); |
| | | if (stats) { |
| | | //内网同步 |
| | | String s = "insert into blade_user(" + |
| | | "id,tenant_id,code,account,password,real_name,phone,sex,role_id,dept_id," + |
| | | "create_time,update_time,cardid,status,is_deleted,jurisdiction) " + |
| | | "values(" + "'" + user.getId() + "'" + "," + |
| | | "'" + user.getTenantId() + "'" + "," + |
| | | "'" + user.getCode() + "'" + "," + |
| | | "'" + user.getAccount() + "'" + "," + |
| | | "'" + user.getPassword() + "'" + "," + |
| | | "'" + user.getRealName() + "'" + "," + |
| | | "'" + user.getPhone() + "'" + "," + |
| | | "'" + user.getSex() + "'" + "," + |
| | | "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" |
| | | + ")"; |
| | | myAsyncService.dataSync(s); |
| | | } |
| | | } else { |
| | | //修改 |
| | | User user1 = userService.getById(user.getId()); |
| | | user.setPassword(user1.getPassword()); |
| | | user.setUpdateTime(new Date()); |
| | | boolean b = userService.updateById(user); |
| | | if (b) { |
| | | String s1 = |
| | | "update blade_user set account = " + "'" + user.getAccount() + "'" |
| | | + ",code = " + "'" + user.getCode() + "'" |
| | | + ",real_name = " + "'" + user.getRealName() + "'" |
| | | + ",phone = " + "'" + user.getPhone() + "'" |
| | | + ",sex = " + "'" + user.getSex() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" |
| | | + ",role_id = " + "'" + user.getRoleId() + "'" |
| | | + ",dept_id = " + "'" + user.getDeptId() + "'" |
| | | + ",cardid = " + "'" + user.getCardid() + "'" |
| | | + ",guncode = " + "'" + user.getGuncode() + "'" |
| | | + " " + "where id = " + "'" + user.getId() + "'"; |
| | | myAsyncService.dataSync(s1); |
| | | } |
| | | } |
| | | |
| | | //返回 |
| | | return R.success("成功"); |
| | | } |
| | | |
| | | /** |
| | | * 微信注册 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | @PostMapping("/wxRegister") |
| | | public R wxRegister(User user){ |
| | | //密码加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | |
| | | Boolean result = userService.wxRegister(user); |
| | | return R.status(result); |
| | | } |
| | | |
| | | /** |
| | |
| | | @PostMapping("/update") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入User") |
| | | public R update(@Valid @RequestBody User user) throws Exception { |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R update(@Valid @RequestBody Map<String, Object> userMap) throws Exception { |
| | | //获取user |
| | | User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class); |
| | | // 用户详情 |
| | | UserDetailEntity userDetailEntity = JSON.parseObject(JSON.toJSONString(userMap.get("userDetail")), UserDetailEntity.class); |
| | | //分配保安角色 |
| | | CacheUtil.clear(USER_CACHE); |
| | | User user1 = userService.getById(user.getId()); |
| | | String url = ""; |
| | | if (null != user.getFingerprint() && !user.getFingerprint().equals("")) { |
| | | if (user.getFingerprint().length() > 100) { |
| | | //指纹图片上传并返回url |
| | | String s = uploadBase64String(user); |
| | | String[] split = s.split(","); |
| | | user.setFingerprint(split[0]); |
| | | //内网指纹图片url |
| | | url = split[1]; |
| | | } |
| | | } |
| | | |
| | | //判断是否持证 |
| | | boolean states = false; |
| | | if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){ |
| | | //持证,校验保安证编号是否合法 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(user.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | states = true; |
| | | } |
| | | } |
| | | if (!states){ |
| | | user.setHold("2"); |
| | | // throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | }else { |
| | | // throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | states = false; |
| | | user.setHold("2"); |
| | | } |
| | | } |
| | | if (user.getHold().equals("2")){ |
| | | states = true; |
| | | } |
| | | |
| | | // 指纹设置 |
| | | fingerprintSet(user); |
| | | // 校验是否持证 |
| | | boolean states = updateByIsSecurity(user); |
| | | //如果是离职 |
| | | if (leaveHandle(user)) return R.success("修改成功"); |
| | | int state = 0; |
| | | //如果是异常标记 |
| | | if (null != user.getExaminationType() && !user.getExaminationType().equals("")) { |
| | | if (user.getExaminationType().equals("1")) { |
| | | //吊销保安证 |
| | | user.setHold("3"); |
| | | state = 1; |
| | | } |
| | | } |
| | | user.setPassword(user1.getPassword()); |
| | | user.setUpdateTime(new Date()); |
| | | |
| | | //如果身份证号修改 |
| | | if (!user.getCardid().equals(user1.getCardid())) { |
| | | //账号,密码也修改 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | //加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | state = 2; |
| | | } |
| | | |
| | | //修改 |
| | | boolean status = userService.updateById(user); |
| | | if (status){ |
| | | //同时更新用户详情信息 |
| | | userDetailService.updateById(userDetailEntity); |
| | | } |
| | | if (!states) { |
| | | return R.data(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | return R.data(200,null,"修改成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 离职处理 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public boolean leaveHandle(@RequestBody @Valid User user) { |
| | | if (null != user.getStatus()) { |
| | | if (user.getStatus().equals(2)) { |
| | | //修改派遣状态 |
| | |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | } else { |
| | | //新增 |
| | | if (null != user.getRtime()) { |
| | | experience.setEntrytime(user.getRtime()); |
| | | } else { |
| | | experience.setEntrytime(new Date()); |
| | | } |
| | | experience.setDeparturetime(new Date()); |
| | | experience.setName(user.getRealName()); |
| | | if (null != user.getReasonForLeav() && !user.getReasonForLeav().equals("")) { |
| | |
| | | experience.setSecurityid(user.getId().toString()); |
| | | //新增 |
| | | boolean save = experienceService.save(experience); |
| | | if (save) { |
| | | //内网同步 |
| | | String s = "insert into sys_experience(id,name,entryTime,departureTime,leaving,cardId,companyname,securityId) " + |
| | | "values(" + "'" + experience.getId() + "'" + |
| | | "," + "'" + experience.getName() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getDeparturetime()) + "'" + |
| | | "," + "'" + experience.getLeaving() + "'" + |
| | | "," + "'" + experience.getCardid() + "'" + |
| | | "," + "'" + experience.getCompanyname() + "'" + |
| | | "," + "'" + experience.getSecurityid() + "'" |
| | | + ")"; |
| | | myAsyncService.dataSync(s); |
| | | } |
| | | } |
| | | |
| | | boolean status = userService.updateById(user); |
| | | //qfqk 数据推送 |
| | | if (status) { |
| | | myAsyncService.updateUserByQfqk(user); |
| | | //内网更新 |
| | | String s1 = |
| | | "update blade_user set status = " + "'" + user.getStatus() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'" |
| | | + " " + "where id = " + "'" + user.getId() + "'"; |
| | | myAsyncService.dataSync(s1); |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 校验是否持证-更新 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public boolean updateByIsSecurity(@RequestBody @Valid User user) { |
| | | //判断是否持证 |
| | | boolean states = false; |
| | | if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){ |
| | | //持证,校验保安证编号是否合法 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(user.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | states = true; |
| | | } |
| | | } |
| | | return R.success("修改成功"); |
| | | if (!states){ |
| | | user.setHold("2"); |
| | | // throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | }else { |
| | | // throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | states = false; |
| | | user.setHold("2"); |
| | | } |
| | | } |
| | | |
| | | int state = 0; |
| | | //如果是异常标记 |
| | | if (null != user.getExaminationType() && !user.getExaminationType().equals("")) { |
| | | if (user.getExaminationType().equals("1")) { |
| | | //吊销保安证 |
| | | user.setHold("3"); |
| | | state = 1; |
| | | } |
| | | if (user.getHold().equals("2")){ |
| | | states = true; |
| | | } |
| | | |
| | | user.setPassword(user1.getPassword()); |
| | | user.setUpdateTime(new Date()); |
| | | |
| | | //如果身份证号修改 |
| | | if (!user.getCardid().equals(user1.getCardid())) { |
| | | //账号,密码也修改 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | //加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | state = 2; |
| | | } |
| | | |
| | | //修改 |
| | | boolean status = userService.updateById(user); |
| | | |
| | | if (status) { |
| | | if (state == 2) { |
| | | UserDTO userDTO = new UserDTO(); |
| | | userDTO.setAccount(user.getAccount()); |
| | | userDTO.setCardid(user.getCardid()); |
| | | userDTO.setOldCardid(user1.getCardid()); |
| | | userDTO.setPassword(user.getPassword()); |
| | | userDTO.setRealName(user.getRealName()); |
| | | userDTO.setPhone(user.getPhone()); |
| | | userDTO.setSex(user.getSex()); |
| | | userDTO.setAvatar(user.getAvatar()); |
| | | //推送qfqk |
| | | myAsyncService.updateUserByAccount(userDTO); |
| | | } else { |
| | | myAsyncService.updateUserByQfqk(user); |
| | | } |
| | | } |
| | | |
| | | |
| | | String rtime; |
| | | if (user.getRtime() == null) { |
| | | String s1 = |
| | | "update blade_user set account = " + "'" + user.getAccount() + "'" |
| | | + ",name = " + "'" + user.getName() + "'" |
| | | + ",real_name = " + "'" + user.getRealName() + "'" |
| | | + ",avatar = " + "'" + user.getAvatar() + "'" |
| | | + ",email = " + "'" + user.getEmail() + "'" |
| | | + ",phone = " + "'" + user.getPhone() + "'" |
| | | + ",sex = " + "'" + user.getSex() + "'" |
| | | + ",role_id = " + "'" + user.getRoleId() + "'" |
| | | + ",dept_id = " + "'" + user.getDeptId() + "'" |
| | | + ",cardid = " + "'" + user.getCardid() + "'" |
| | | + ",nativePlace = " + "'" + user.getNativeplace() + "'" |
| | | + ",nation = " + "'" + user.getNation() + "'" |
| | | + ",education = " + "'" + user.getEducation() + "'" |
| | | + ",politicaloutlook = " + "'" + user.getPoliticaloutlook() + "'" |
| | | + ",healstats = " + "'" + user.getHealstats() + "'" |
| | | + ",height = " + "'" + user.getHeight() + "'" |
| | | + ",fingerprint = " + "'" + url + "'" |
| | | + ",my_picture = " + "'" + user.getMyPicture() + "'" |
| | | + ",address = " + "'" + user.getAddress() + "'" |
| | | + ",registered = " + "'" + user.getRegistered() + "'" |
| | | + ",dispatch = " + "'" + user.getDispatch() + "'" |
| | | + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" |
| | | + ",hold = " + "'" + user.getHold() + "'" |
| | | + ",jurisdiction = " + "'" + user.getJurisdiction() + "'" |
| | | + ",reason_for_leav = " + "'" + user.getReasonForLeav() + "'" |
| | | + ",guncode = " + "'" + user.getGuncode() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" |
| | | + " " + "where id = " + "'" + user.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | } else { |
| | | rtime = new SimpleDateFormat("yyyy-MM-dd").format(user.getRtime()); |
| | | String s1 = |
| | | "update blade_user set account = " + "'" + user.getAccount() + "'" |
| | | + ",name = " + "'" + user.getName() + "'" |
| | | + ",real_name = " + "'" + user.getRealName() + "'" |
| | | + ",avatar = " + "'" + user.getAvatar() + "'" |
| | | + ",email = " + "'" + user.getEmail() + "'" |
| | | + ",phone = " + "'" + user.getPhone() + "'" |
| | | + ",sex = " + "'" + user.getSex() + "'" |
| | | + ",role_id = " + "'" + user.getRoleId() + "'" |
| | | + ",dept_id = " + "'" + user.getDeptId() + "'" |
| | | + ",cardid = " + "'" + user.getCardid() + "'" |
| | | + ",nativePlace = " + "'" + user.getNativeplace() + "'" |
| | | + ",nation = " + "'" + user.getNation() + "'" |
| | | + ",education = " + "'" + user.getEducation() + "'" |
| | | + ",politicaloutlook = " + "'" + user.getPoliticaloutlook() + "'" |
| | | + ",healstats = " + "'" + user.getHealstats() + "'" |
| | | + ",height = " + "'" + user.getHeight() + "'" |
| | | + ",fingerprint = " + "'" + url + "'" |
| | | + ",my_picture = " + "'" + user.getMyPicture() + "'" |
| | | + ",address = " + "'" + user.getAddress() + "'" |
| | | + ",registered = " + "'" + user.getRegistered() + "'" |
| | | + ",rtime = " + "'" + rtime + "'" |
| | | + ",dispatch = " + "'" + user.getDispatch() + "'" |
| | | + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" |
| | | + ",hold = " + "'" + user.getHold() + "'" |
| | | + ",jurisdiction = " + "'" + user.getJurisdiction() + "'" |
| | | + ",reason_for_leav = " + "'" + user.getReasonForLeav() + "'" |
| | | + ",guncode = " + "'" + user.getGuncode() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" |
| | | + " " + "where id = " + "'" + user.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | } |
| | | if (!states) { |
| | | return R.data(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | return R.data(200,null,"修改成功!"); |
| | | return states; |
| | | } |
| | | |
| | | |
| | |
| | | signInRecordsService.updateById(inRecordsServiceOne); |
| | | } |
| | | } |
| | | |
| | | //内网同步 |
| | | String s1 = |
| | | "update blade_user set account = " + "'" + user.getCardid() + "'" |
| | | + ",real_name = " + "'" + user.getRealName() + "'" |
| | | + ",avatar = " + "'" + user.getAvatar() + "'" |
| | | + ",sex = " + "'" + user.getSex() + "'" |
| | | + ",cardid = " + "'" + user.getCardid() + "'" |
| | | + ",nation = " + "'" + user.getNation() + "'" |
| | | + ",fingerprint = " + "'" + url + "'" |
| | | + ",my_picture = " + "'" + user.getMyPicture() + "'" |
| | | + ",address = " + "'" + user.getAddress() + "'" |
| | | + ",registered = " + "'" + user.getRegistered() + "'" |
| | | + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" |
| | | + ",hold = " + "'" + user.getHold() + "'" |
| | | + ",cell = " + "'" + user.getCell() + "'" |
| | | + " " + "where id = " + "'" + user.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | return R.success("修改成功"); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | //填写你文件上传的地址以及相应信息 |
| | | String url = FileConfig.url; |
| | | String url = FileConfig.apiUrl; |
| | | String access = FileConfig.access; |
| | | String secret = FileConfig.secret; |
| | | String bucket = FileConfig.bucket; |
| | |
| | | in, in.available(), -1) |
| | | .headers(headers) |
| | | .build()); |
| | | InputStream inputStream = new ByteArrayInputStream(b); |
| | | FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream); |
| | | // InputStream inputStream = new ByteArrayInputStream(b); |
| | | // FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream); |
| | | in.close(); |
| | | //外围url |
| | | String urls = FileConfig.url + "/zhba/" + newName; |
| | |
| | | @PostMapping("/remove") |
| | | @ApiOperationSupport(order = 6) |
| | | @ApiOperation(value = "删除", notes = "传入id集合") |
| | | //@PreAuth(RoleConstant.HAS_ROLE_ADMIN) |
| | | public R remove(@RequestParam String ids) { |
| | | CacheUtil.clear(USER_CACHE); |
| | | List<String> list = Arrays.asList(ids.split(",")); |
| | | // 遍历删除用户详情信息 |
| | | list.forEach(id -> { |
| | | User user = userService.getById(id); |
| | | User user1 = new User(); |
| | | user1.setId(user.getId()); |
| | | user1.setCardid(user.getCardid()); |
| | | user1.setIsDeleted(1); |
| | | //qfqk 同步 |
| | | myAsyncService.deleteUserByQfqk(user1); |
| | | //内网同步 |
| | | String s1 = "update blade_user set is_deleted = 1" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'" |
| | | + " " + "where id = " + "'" + id + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("user_id",id); |
| | | userDetailService.remove(wrapper); |
| | | }); |
| | | return R.status(userService.removeUser(ids)); |
| | | } |
| | |
| | | return R.success("操作成功"); |
| | | } |
| | | |
| | | // /** |
| | | // * 导出用户 |
| | | // */ |
| | | // @GetMapping("export-user") |
| | | // @ApiOperationSupport(order = 13) |
| | | // @ApiOperation(value = "导出用户", notes = "传入user") |
| | | // public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) { |
| | | /** |
| | | * 导出用户 |
| | | */ |
| | | @GetMapping("export-user") |
| | | @ApiOperationSupport(order = 13) |
| | | @ApiOperation(value = "导出用户", notes = "传入user") |
| | | public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) { |
| | | // QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class); |
| | | // if (!AuthUtil.isAdministrator()) { |
| | | // queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()); |
| | | // } |
| | | // queryWrapper.lambda().eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED); |
| | | // List<UserExcel> list = userService.exportUser(queryWrapper); |
| | | // ExcelUtil.export(response, "用户数据" + DateUtil.time(), "用户数据表", list, UserExcel.class); |
| | | // } |
| | | List<UserExcel> list = userService.exportUser(user); |
| | | ExcelUtil.export(response, "用户数据" + DateUtil.time(), "用户数据表", list, UserExcel.class); |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | securityExcel.setSex("男"); |
| | | securityExcel.setCardid("360XXX19XXXXXX****"); |
| | | securityExcel.setNation("汉"); |
| | | securityExcel.setRegistered("江西省南昌市******"); |
| | | // securityExcel.setHold("是"); |
| | | securityExcel.setSecuritynumber("赣洪202100001"); |
| | | securityExcel.setPermanentResidenceAddress("山西省晋城市******"); |
| | | securityExcel.setEducation("本科"); |
| | | securityExcel.setPoliticaloutlook("群众"); |
| | | securityExcel.setUnitName("晋城市***公司"); |
| | | securityExcel.setDwellAddress("山西省晋城市******"); |
| | | securityExcel.setAcceptanceTime("2023/12/01"); |
| | | list.add(securityExcel); |
| | | |
| | | SecurityExcel securityExcel1 = new SecurityExcel(); |
| | |
| | | securityExcel1.setSex("女"); |
| | | securityExcel1.setCardid("360XXX19XXXXXX****"); |
| | | securityExcel1.setNation("汉"); |
| | | securityExcel1.setRegistered("江西省南昌市******"); |
| | | // securityExcel1.setHold("否"); |
| | | securityExcel1.setSecuritynumber(""); |
| | | securityExcel1.setPermanentResidenceAddress("山西省晋城市******"); |
| | | securityExcel1.setEducation("本科"); |
| | | securityExcel1.setPoliticaloutlook("党员"); |
| | | securityExcel1.setUnitName("晋城市***公司"); |
| | | securityExcel1.setDwellAddress("山西省晋城市******"); |
| | | securityExcel1.setAcceptanceTime("2023/12/01"); |
| | | list.add(securityExcel1); |
| | | String fileName = null; |
| | | try { |
| | |
| | | securityExcel.setSex("男"); |
| | | securityExcel.setCardid("360XXX19XXXXXX****"); |
| | | securityExcel.setNation("汉"); |
| | | securityExcel.setRegistered("江西省南昌市******"); |
| | | securityExcel.setRegistered("山西省晋城市******"); |
| | | // securityExcel.setHold("是"); |
| | | securityExcel.setSecuritynumber("赣洪202100001"); |
| | | // securityExcel.setSecuritynumber("晋202100001"); |
| | | list.add(securityExcel); |
| | | |
| | | SecurityYyExcel securityExcel1 = new SecurityYyExcel(); |
| | |
| | | securityExcel1.setSex("女"); |
| | | securityExcel1.setCardid("360XXX19XXXXXX****"); |
| | | securityExcel1.setNation("汉"); |
| | | securityExcel1.setRegistered("江西省南昌市******"); |
| | | securityExcel1.setRegistered("山西省晋城市******"); |
| | | // securityExcel1.setHold("否"); |
| | | securityExcel1.setSecuritynumber(""); |
| | | list.add(securityExcel1); |
| | |
| | | public R securitySave(@Valid @RequestBody Map<String, Object> userMap) throws Exception { |
| | | //获取user |
| | | User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class); |
| | | // 用户详情 |
| | | UserDetailEntity userDetailEntity = JSON.parseObject(JSON.toJSONString(userMap.get("userDetail")), UserDetailEntity.class); |
| | | //分配保安角色 |
| | | Role role = new Role(); |
| | | role.setRoleAlias("保安"); |
| | |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | user.setDispatch("1"); |
| | | user.setExaminationType("0"); |
| | | user.setCreateTime(new Date()); |
| | | user.setTenantId("000000"); |
| | | user.setAccount(user.getCardid()); |
| | | // 用户校验 |
| | | userCheck(user); |
| | | // 保安员证校验 |
| | | boolean state = securityPaperCheck(user); |
| | | // 指纹设置 |
| | | fingerprintSet(user); |
| | | //密码加密 |
| | | if (Func.isNotEmpty(user.getCardid())) { |
| | | // user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | //取身份证号码后6位作为密码 |
| | | user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6))); |
| | | } |
| | | //用户新增 |
| | | boolean status = userService.save(user); |
| | | // 用户详情信息新增 |
| | | if (status){ |
| | | userDetailEntity.setUserId(user.getId()); |
| | | // 新增 |
| | | userDetailService.save(userDetailEntity); |
| | | } |
| | | //从业记录新增 |
| | | experienceSave(user); |
| | | //判断是否持证是否为空 |
| | | if (!state) { |
| | | return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | return R.data(200,null,"新增成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 指纹设置 |
| | | * @param user |
| | | * @throws Exception |
| | | */ |
| | | private void fingerprintSet(User user) throws Exception { |
| | | String url = ""; |
| | | if (null != user.getFingerprint() && !user.getFingerprint().equals("")) { |
| | | if (user.getFingerprint().length() > 100) { |
| | | String s = uploadBase64String(user); |
| | | String[] split = s.split(","); |
| | | user.setFingerprint(split[0]); |
| | | url = split[1]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保安员证校验 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | private boolean securityPaperCheck(User user) { |
| | | boolean state = false; |
| | | if (user.getHold().equals("1")){ |
| | | //持证,校验保安证编号是否合法 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(user.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | state = true; |
| | | } |
| | | } |
| | | if (!state){ |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | } |
| | | }else { |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | } |
| | | }else { |
| | | state = true; |
| | | } |
| | | return state; |
| | | } |
| | | |
| | | /** |
| | | * 从业记录新增 |
| | | * @param user |
| | | */ |
| | | public void experienceSave(User user) { |
| | | //从业记录新增 |
| | | Experience experience = new Experience(); |
| | | Dept dept = iDeptService.getById(user.getDeptId()); |
| | | experience.setCardid(user.getCardid()); |
| | | experience.setSecurityid(user.getId().toString()); |
| | | experience.setCompanyname(dept.getDeptName()); |
| | | experience.setName(user.getRealName()); |
| | | experience.setPost("保安员"); |
| | | experienceService.save(experience); |
| | | } |
| | | |
| | | /** |
| | | * 用户校验 |
| | | * @param user |
| | | */ |
| | | public void userCheck(User user) { |
| | | User user1 = new User(); |
| | | user1.setIsDeleted(0); |
| | | user1.setStatus(1); |
| | | user1.setAccount(user.getCardid()); |
| | | List<User> list = userService.list(Condition.getQueryWrapper(user1)); |
| | | |
| | | // 判断校验 |
| | | if (list.size() > 0 && Func.isEmpty(user.getId())) { |
| | | if (null != user.getCell() && !user.getCell().equals("")) { |
| | | if (user.getCell().equals("2")) { |
| | |
| | | throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | } |
| | | |
| | | //判断是否持证 |
| | | boolean state = false; |
| | | if (user.getHold().equals("1")){ |
| | | //持证,校验保安证编号是否合法 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(user.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | state = true; |
| | | } |
| | | } |
| | | if (!state){ |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | } |
| | | }else { |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | } |
| | | }else { |
| | | state = true; |
| | | } |
| | | |
| | | String url = ""; |
| | | if (null != user.getFingerprint() && !user.getFingerprint().equals("")) { |
| | | if (user.getFingerprint().length() > 100) { |
| | | String s = uploadBase64String(user); |
| | | String[] split = s.split(","); |
| | | user.setFingerprint(split[0]); |
| | | url = split[1]; |
| | | } |
| | | } |
| | | |
| | | //密码加密 |
| | | if (Func.isNotEmpty(user.getCardid())) { |
| | | // user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | //取身份证号码后6位作为密码 |
| | | user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6))); |
| | | } |
| | | user.setCreateTime(new Date()); |
| | | user.setTenantId("000000"); |
| | | //用户新增 |
| | | boolean status = userService.save(user); |
| | | |
| | | //从业记录新增 |
| | | Experience experience = new Experience(); |
| | | |
| | | String rtime; |
| | | String paperTime; |
| | | if (user.getRtime() == null) { |
| | | rtime = null; |
| | | } else { |
| | | rtime = new SimpleDateFormat("yyyy-MM-dd").format(user.getRtime()); |
| | | experience.setEntrytime(user.getRtime()); |
| | | } |
| | | |
| | | Dept dept = iDeptService.getById(user.getDeptId()); |
| | | experience.setCardid(user.getCardid()); |
| | | experience.setSecurityid(user.getId().toString()); |
| | | experience.setCompanyname(dept.getDeptName()); |
| | | experience.setName(user.getRealName()); |
| | | experience.setPost("保安员"); |
| | | experienceService.save(experience); |
| | | |
| | | |
| | | //发证日期处理 |
| | | // if (user.getPaperTime() == null) { |
| | | // paperTime = ""; |
| | | // } else { |
| | | // paperTime = new SimpleDateFormat("yyyy-MM-dd").format(user.getPaperTime()); |
| | | // } |
| | | //头像 |
| | | if (null != user.getAvatar() && !user.getAvatar().equals("")) { |
| | | user.setAvatar(FtpConfig.ip + user.getAvatar().substring(26)); |
| | | } |
| | | |
| | | //数据推送 |
| | | //1.群访群控数据推送(异步) |
| | | if (status) { |
| | | myAsyncService.qfqkUserSave(user); |
| | | //2.内网数据推送 |
| | | String s = "insert into blade_user(" + |
| | | "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," + |
| | | "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," + |
| | | "politicaloutlook,healstats,height,address,registered,rtime," + |
| | | "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,guncode,create_time,cell) " + |
| | | "values(" + "'" + user.getId() + "'" + |
| | | "," + "'" + user.getTenantId() + "'" + |
| | | "," + "'" + user.getAccount() + "'" + |
| | | "," + "'" + user.getPassword() + "'" + |
| | | "," + "'" + user.getName() + "'" + |
| | | "," + "'" + user.getRealName() + "'" + |
| | | "," + "'" + user.getAvatar() + "'" + |
| | | "," + "'" + user.getEmail() + "'" + |
| | | "," + "'" + user.getPhone() + "'" + |
| | | "," + "'" + user.getSex() + "'" + |
| | | "," + "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getNativeplace() + "'" + |
| | | "," + "'" + user.getNation() + "'" + |
| | | "," + "'" + url + "'" + |
| | | "," + "'" + user.getEducation() + "'" + |
| | | "," + "'" + user.getPoliticaloutlook() + "'" + |
| | | "," + "'" + user.getHealstats() + "'" + |
| | | "," + "'" + user.getHeight() + "'" + |
| | | "," + "'" + user.getAddress() + "'" + |
| | | "," + "'" + user.getRegistered() + "'" + |
| | | "," + "'" + rtime + "'" + |
| | | "," + "'" + user.getSecuritynumber() + "'" + |
| | | "," + "'" + user.getHold() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" + |
| | | "," + "'" + user.getExaminationType() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getDispatch() + "'" + |
| | | "," + "'" + user.getGuncode() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + |
| | | "," + "'" + user.getCell() + "'" + ");" + |
| | | "insert into sys_experience(id,name,post,entryTime," + |
| | | "cardId,companyname,securityId) " + |
| | | "values(" + "'" + experience.getId() + "'" + "," + |
| | | "'" + experience.getName() + "'" + "," + |
| | | "'" + experience.getPost() + "'" + "," + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" + |
| | | "," + "'" + experience.getCardid() + "'" + |
| | | "," + "'" + experience.getCompanyname() + "'" + |
| | | "," + "'" + experience.getSecurityid() + "'" |
| | | + ")"; |
| | | myAsyncService.dataSync(s); |
| | | } |
| | | |
| | | |
| | | //获取从业记录 |
| | | // List<Experience> experiences = (List<Experience>) userMap.get("userPractitionersInfo"); |
| | | // if (experiences.size()>0){ |
| | | // int count = 0; |
| | | // for (int i = 0; i < experiences.size(); i++) { |
| | | // Experience e = JSON.parseObject(JSON.toJSONString(experiences.get(i)), Experience.class); |
| | | // e.setSecurityid(user.getId().toString()); |
| | | // experienceService.save(e); |
| | | // count++; |
| | | // } |
| | | // if (count < 1) { |
| | | // return R.status(false); |
| | | // } |
| | | // } |
| | | //判断是否持证是否为空 |
| | | if (!state) { |
| | | return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | return R.data(200,null,"新增成功!"); |
| | | } |
| | | |
| | | /** |
| | |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | } else { |
| | | //新增 |
| | | if (null != user.getRtime()) { |
| | | experience.setEntrytime(user.getRtime()); |
| | | } else { |
| | | experience.setEntrytime(new Date()); |
| | | } |
| | | experience.setDeparturetime(new Date()); |
| | | experience.setName(user.getRealName()); |
| | | if (null != user.getReasonForLeav() && !user.getReasonForLeav().equals("")) { |
| | |
| | | */ |
| | | @GetMapping("/details") |
| | | public R details(User user) { |
| | | User user1 = userService.getById(user.getId()); |
| | | if (null != user1.getFingerprint() && !user1.getFingerprint().equals("")) { |
| | | //url 转base64 |
| | | String base64Url = ImageUtils.imageUrlToBase64(user1.getFingerprint()); |
| | | System.out.println("base64Url = " + base64Url); |
| | | user1.setFingerprint(base64Url); |
| | | UserVO userInfo = userService.getUserDetailById(user.getId()); |
| | | // 查询对应的详情信息 |
| | | if (null!=userInfo){ |
| | | QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("user_id",userInfo.getId()).eq("is_deleted",0); |
| | | UserDetailEntity one = userDetailService.getOne(wrapper); |
| | | userInfo.setUserDetail(one); |
| | | } |
| | | return R.data(user1); |
| | | if (null != userInfo.getFingerprint() && !userInfo.getFingerprint().equals("")) { |
| | | //url 转base64 |
| | | String base64Url = ImageUtils.imageUrlToBase64(userInfo.getFingerprint()); |
| | | userInfo.setFingerprint(base64Url); |
| | | } |
| | | return R.data(userInfo); |
| | | } |
| | | |
| | | |
| | |
| | | public R getNotUpdatePwdInfo() { |
| | | return R.data(userService.getNotUpdatePwdInfo()); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 数据处理 |
| | | * @return |
| | | */ |
| | | @GetMapping("/dataHandler") |
| | | public R dataHandler() { |
| | | return R.data(userService.dataHandler()); |
| | | } |
| | | |
| | | |
| | | //获取用户表和用户详情表的信息 |
| | | @GetMapping("/getUserInfoDetail") |
| | | public R getUserInfoDetail(String id){ |
| | | UserInfoDetail userInfoDetail = userService.getUserInfoDetail(id); |
| | | return R.data(userInfoDetail); |
| | | } |
| | | |
| | | @PostMapping("/batchAudit") |
| | | public R batchAudit(String ids,String auditStatus){ |
| | | boolean result = userService.batchAudit(ids,auditStatus); |
| | | return R.status(result); |
| | | } |
| | | |
| | | |
| | | } |