智慧保安后台管理-外网项目备份
zhongrj
2023-12-01 daaf2caafd40f3657aa1f7e45bc1641d482baeb1
src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -56,14 +56,11 @@
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;
@@ -76,18 +73,14 @@
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.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;
@@ -97,18 +90,12 @@
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;
/**
@@ -124,6 +111,7 @@
public class UserController {
   private final IUserService userService;
   private final IUserDetailService userDetailService;
   private final IDeptService iDeptService;
   private final IRoleService roleService;
   private final IExperienceService experienceService;
@@ -210,11 +198,8 @@
   })
   @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) {
      System.out.println("在线更新代码.... ");
      IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
      System.out.println("=================在线更新代码==================");
   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);
   }
@@ -284,50 +269,64 @@
   @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)) {
            //修改派遣状态
@@ -417,60 +416,46 @@
                     + " " + "where id = " + "'" + user.getId() + "'";
               myAsyncService.dataSync(s1);
            }
            return R.success("修改成功");
            return true;
         }
      }
      return false;
   }
      int state = 0;
      //如果是异常标记
      if (null != user.getExaminationType() && !user.getExaminationType().equals("")) {
         if (user.getExaminationType().equals("1")) {
            //吊销保安证
            user.setHold("3");
            state = 1;
   /**
    *    校验是否持证-更新
    * @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;
               }
            }
            if (!states){
               user.setHold("2");
//               throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            }
         }else {
//            throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            states = false;
            user.setHold("2");
         }
      }
      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;
      if (user.getHold().equals("2")){
         states = true;
      }
      //修改
      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);
         }
      }
      if (!states) {
         return R.data(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"修改成功!");
      return states;
   }
@@ -670,25 +655,15 @@
   @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);
//      });
      List<String> list = Arrays.asList(ids.split(","));
      // 遍历删除用户详情信息
      list.forEach(id -> {
         QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("user_id",id);
         userDetailService.remove(wrapper);
      });
      return R.status(userService.removeUser(ids));
   }
@@ -1082,6 +1057,8 @@
   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("保安");
@@ -1089,14 +1066,124 @@
      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();
      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);
   }
   /**
    * 用户校验
    * @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")) {
@@ -1127,91 +1214,6 @@
            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));
      }
      //判断是否持证是否为空
      if (!state) {
         return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"新增成功!");
   }
   /**
@@ -1328,14 +1330,20 @@
    */
   @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);
   }