智慧保安后台管理-外网
Administrator
2022-06-09 9c08a3cfd782b2818e335da9d678abfb4d584fb9
新增操作记录
1 files modified
7 files added
445 ■■■■■ changed files
src/main/java/org/springblade/modules/log/controller/HandlerLogController.java 92 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/entity/HandlerLog.java 68 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/mapper/HandlerLogMapper.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/mapper/HandlerLogMapper.xml 20 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/service/HandlerLogService.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/service/impl/HandlerLogServiceImpl.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/vo/HandlerLogVo.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/quartz/task/Task.java 151 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/log/controller/HandlerLogController.java
New file
@@ -0,0 +1,92 @@
package org.springblade.modules.log.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.log.entity.HandlerLog;
import org.springblade.modules.log.service.HandlerLogService;
import org.springblade.modules.log.vo.HandlerLogVo;
import org.springframework.web.bind.annotation.*;
/**
 *
 * 操作日志
 * @author zhongrj
 * @time 2022-06-09
 */
@RestController
@AllArgsConstructor
@RequestMapping("/handlerLog")
public class HandlerLogController {
    private final HandlerLogService handlerLogService;
    /**
     * 自定义分页
     * @param query page,size
     * @param handlerLog 操作日志对象
     * @return
     */
    @GetMapping("/page")
    public R<IPage<HandlerLogVo>> page(HandlerLogVo handlerLog, Query query) {
        IPage<HandlerLogVo> pages = handlerLogService.selectHandlerLogPage(Condition.getPage(query), handlerLog);
        return R.data(pages);
    }
    /**
     * 新增
     * @param handlerLog 操作日志对象
     */
    @PostMapping("/save")
    @ApiOperation(value = "新增", notes = "传入handlerLog")
    public R save(@RequestBody HandlerLog handlerLog){
        return R.data(handlerLogService.save(handlerLog));
    }
    /**
     * 修改
     * @param handlerLog 操作日志对象
     */
    @PostMapping("/update")
    public R update(@RequestBody HandlerLog handlerLog){
        return R.status(handlerLogService.updateById(handlerLog));
    }
    /**
     * 新增或修改
     * @param handlerLog 操作日志对象
     */
    @PostMapping("/submit")
    public R submit(@RequestBody HandlerLog handlerLog){
        return R.data(handlerLogService.saveOrUpdate(handlerLog));
    }
    /**
     * 删除
     * @param ids 操作日志ids 数组
     */
    @PostMapping("/remove")
    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
        return R.status(handlerLogService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 详情
     * @param handlerLog 操作日志对象
     */
    @GetMapping("/detail")
    @ApiOperation(value = "详情", notes = "传入handlerLog")
    public R<HandlerLog> detail(HandlerLog handlerLog) {
        HandlerLog detail = handlerLogService.getOne(Condition.getQueryWrapper(handlerLog));
        return R.data(detail);
    }
}
src/main/java/org/springblade/modules/log/entity/HandlerLog.java
New file
@@ -0,0 +1,68 @@
package org.springblade.modules.log.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 操作日志实体类
 * @author zhongrj
 * @time 2022-06-09
 */
@Data
@TableName("sys_handler_log")
public class HandlerLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 操作日志主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 类型 1:用户新增  2:用户导入  3:培训报名 4:保安员证编号
     */
    private Integer type;
    /**
     * 操作人id
     */
    private String userId;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 操作时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date operatorTime;
    /**
     * 说明
     */
    private String remark;
    /**
     * 操作单位 id
     */
    private String deptId;
}
src/main/java/org/springblade/modules/log/mapper/HandlerLogMapper.java
New file
@@ -0,0 +1,26 @@
package org.springblade.modules.log.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.log.entity.HandlerLog;
import org.springblade.modules.log.vo.HandlerLogVo;
import java.util.List;
/**
 * 操作日志Mapper 接口
 * @author zhongrj
 * @time 2022-06-09
 */
public interface HandlerLogMapper extends BaseMapper<HandlerLog> {
    /**
     * 自定义分页
     * @param page
     * @param handlerLog 操作日志对象
     * @return
     */
    List<HandlerLogVo> selectHandlerLogPage(IPage<HandlerLogVo> page, @Param("handlerLog") HandlerLogVo handlerLog);
}
src/main/java/org/springblade/modules/log/mapper/HandlerLogMapper.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.log.mapper.HandlerLogMapper">
    <!--根据deptId查询 操作日志-->
    <select id="selectHandlerLogPage" resultType="org.springblade.modules.log.vo.HandlerLogVo">
        select shl.*,bu.real_name realName,bd.dept_name deptName from sys_handler_log shl
        left join blade_user bu on bu.id = shl.user_id
        left join blade_dept bd on shl.dept_id = bd.id
        where 1=1
        <if test="handlerLog.deptName!=null and handlerLog.deptName!''">
            bd.dept_name like concat('%',#{handlerLog.deptName},'%')
        </if>
        <if test="handlerLog.deptId!=null and handlerLog.deptId!''">
            shl.dept_id = #{handlerLog.deptId}
        </if>
        order by shl.id desc
    </select>
</mapper>
src/main/java/org/springblade/modules/log/service/HandlerLogService.java
New file
@@ -0,0 +1,23 @@
package org.springblade.modules.log.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.log.entity.HandlerLog;
import org.springblade.modules.log.vo.HandlerLogVo;
/**
 * 操作日志服务类
 * @author zhongrj
 * @time 2022-06-09
 */
public interface HandlerLogService extends IService<HandlerLog> {
    /**
     * 自定义分页
     * @param page
     * @param handlerLog 操作日志对象
     * @return
     */
    IPage<HandlerLogVo> selectHandlerLogPage(IPage<HandlerLogVo> page, HandlerLogVo handlerLog);
}
src/main/java/org/springblade/modules/log/service/impl/HandlerLogServiceImpl.java
New file
@@ -0,0 +1,34 @@
package org.springblade.modules.log.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.modules.log.entity.HandlerLog;
import org.springblade.modules.log.mapper.HandlerLogMapper;
import org.springblade.modules.log.service.HandlerLogService;
import org.springblade.modules.log.vo.HandlerLogVo;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 操作日志实现类
 * @author zhongrj
 * @time 2022-06-09
 */
@Service
@AllArgsConstructor
public class HandlerLogServiceImpl extends ServiceImpl<HandlerLogMapper, HandlerLog> implements HandlerLogService {
    /**
     * 自定义分页
     * @param page
     * @param handlerLog 操作日志对象
     * @return
     */
    @Override
    public IPage<HandlerLogVo> selectHandlerLogPage(IPage<HandlerLogVo> page, HandlerLogVo handlerLog) {
        return page.setRecords(baseMapper.selectHandlerLogPage(page, handlerLog));
    }
}
src/main/java/org/springblade/modules/log/vo/HandlerLogVo.java
New file
@@ -0,0 +1,31 @@
package org.springblade.modules.log.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springblade.modules.log.entity.HandlerLog;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 操作日志vo
 * @author zhongrj
 * @time 2022-06-09
 */
@Data
public class HandlerLogVo extends HandlerLog implements Serializable {
    /**
     * 操作人姓名
     */
    private String realName;
    /**
     * 操作人部门名称
     */
    private String deptName;
}
src/main/java/org/springblade/modules/quartz/task/Task.java
@@ -2,11 +2,15 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springblade.common.utils.DesensitizedUtil;
import org.springblade.modules.FTP.*;
import org.springblade.modules.log.entity.HandlerLog;
import org.springblade.modules.log.service.HandlerLogService;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.service.MyAsyncService;
@@ -20,6 +24,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -41,6 +46,9 @@
    @Autowired
    private IUserService userService;
    @Autowired
    private HandlerLogService handlerLogService;
    @Autowired
    private RedisTemplate redisTemplate;
@@ -382,10 +390,14 @@
    private void userListInfoHandler(Result result) {
        //获取 result
        List<Result> data1 = result.getData();
        System.out.println("批量导入数据 = " + data1);
        if (data1.size()>0){
            for (Result result1 : data1) {
                // 取出 Msg ,此 msg 存的对应的 uuid
                String uuid = result1.getMsg();
                //从redis 中获取用户数据
                Object o1 = redisTemplate.opsForValue().get(uuid);
                User user0 = JSON.parseObject(o1.toString(), User.class);
                // 从redis 中获取对应的用户信息,脱敏处理过
                User user = handlerUserInfo(uuid);
                if (result1.getCode()==200){
@@ -421,9 +433,46 @@
                }
                if (result1.getCode()==202){
                    //已在其他单位存在
                    HandlerLog handlerLog = new HandlerLog();
                    handlerLog.setCreateTime(new Date());
                    handlerLog.setDeptId(user.getDeptId());
                    handlerLog.setOperatorTime(user.getCreateTime());
                    handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]已在其他单位存在");
                    handlerLog.setType(2);
                    //插入记录
                    handlerLogService.save(handlerLog);
                }
                if (result1.getCode()==203){
                    //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
                    user.setId(result.getUserId());
                    //先查询当前库是否有改用户?
                    User user2 = userService.getById(result.getUserId());
                    //判断
                    if (null != user2) {
                        //修改
                        //数据修改
                        boolean b = userService.updateById(user);
                        if (b) {
                            //异步同步到群防群控
                            myAsyncService.updateUserByQfqk(user);
                        }
                    } else {
                        //新增
                        boolean save = userService.save(user);
                        if (save) {
                            //异步同步到群防群控
                            myAsyncService.qfqkUserSave(user);
                        }
                    }
                    //保安证编号不匹配
                    HandlerLog handlerLog = new HandlerLog();
                    handlerLog.setCreateTime(new Date());
                    handlerLog.setDeptId(user.getDeptId());
                    handlerLog.setOperatorTime(user.getCreateTime());
                    handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!");
                    handlerLog.setType(2);
                    //插入记录
                    handlerLogService.save(handlerLog);
                }
            }
        }
@@ -535,7 +584,7 @@
            //创建集合,存年龄符合要求
            List<String> ageList = new ArrayList<>();
            //创建年龄不符合集合
            List<String> errorList = new ArrayList<>();
            List<User> errorList = new ArrayList<>();
            AtomicInteger number = new AtomicInteger();
            if (null != result) {
                //获取 result
@@ -555,7 +604,7 @@
                            //查询用户信息
                            User user = userService.getById(userId);
                            //加入更新集合
                            errorList.add(user.getRealName());
                            errorList.add(user);
                        }
                    }
                }
@@ -605,6 +654,26 @@
                    }
                });
            }
            //如果存在年龄不符的,则抛出异常
            if (number.get()>0){
                String deptId = errorList.get(0).getDeptId();
                List<String> arrayList = new ArrayList<>();
                errorList.forEach(user -> {
                    arrayList.add(user.getAccount());
                });
                //已在其他单位存在
                HandlerLog handlerLog = new HandlerLog();
                handlerLog.setCreateTime(new Date());
                handlerLog.setDeptId(deptId);
                handlerLog.setOperatorTime(new Date());
                handlerLog.setType(3);
                String errorAccount = StringUtils.join(arrayList, "\\\n");
                handlerLog.setRemark("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!");
                //插入记录
                handlerLogService.save(handlerLog);
            }
        }
    }
@@ -626,28 +695,7 @@
        myAsyncService.FTP(sql);
    }
    /**
     *  用户审查
     * @return
     */
    public void userExamine() {
        System.out.println("用户审查任务发起"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        //查询审查状态为未审查的保安员
        User user = new User();
        user.setStatus(1);
        user.setIsDeleted(0);
        user.setRoleId("1412226235153731586");
        //未审查
        user.setExaminationType("2");
        //查询
        List<User> users = userService.list(new QueryWrapper<>(user));
        //遍历
        if (users.size()>0){
            users.forEach(user1 -> {
                myAsyncService.userExamineFTP(user1);
            });
        }
    }
@@ -658,6 +706,9 @@
     */
    @Async
    public void userInfoHandler(String uuid, Result result){
        //从redis 中获取用户数据
        Object o1 = redisTemplate.opsForValue().get(uuid);
        User user0 = JSON.parseObject(o1.toString(), User.class);
        //用户数处理
        User users = handlerUserInfo(uuid);
        if (null!=users) {
@@ -703,6 +754,15 @@
                    //异步同步到群防群控
                    myAsyncService.qfqkUserSave(users);
                }
                //保安证编号不匹配
                HandlerLog handlerLog = new HandlerLog();
                handlerLog.setCreateTime(new Date());
                handlerLog.setDeptId(user0.getDeptId());
                handlerLog.setOperatorTime(user0.getCreateTime());
                handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!");
                handlerLog.setType(1);
                //插入记录
                handlerLogService.save(handlerLog);
            } else if (result.getCode() == 204) {
                //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
                users.setId(result.getUserId());
@@ -725,9 +785,52 @@
                        myAsyncService.qfqkUserSave(users);
                    }
                }
                //保安证编号不匹配
                HandlerLog handlerLog = new HandlerLog();
                handlerLog.setCreateTime(new Date());
                handlerLog.setDeptId(user0.getDeptId());
                handlerLog.setOperatorTime(user0.getCreateTime());
                handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!");
                handlerLog.setType(1);
                //插入记录
                handlerLogService.save(handlerLog);
            }else {
                //已在其他单位存在
                HandlerLog handlerLog = new HandlerLog();
                handlerLog.setCreateTime(new Date());
                handlerLog.setDeptId(user0.getDeptId());
                handlerLog.setOperatorTime(user0.getCreateTime());
                handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]已在其他单位存在");
                handlerLog.setType(1);
                //插入记录
                handlerLogService.save(handlerLog);
            }
        }
    }
    /**
     *  用户审查
     * @return
     */
    public void userExamine() {
        System.out.println("用户审查任务发起"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        //查询审查状态为未审查的保安员
        User user = new User();
        user.setStatus(1);
        user.setIsDeleted(0);
        user.setRoleId("1412226235153731586");
        //未审查
        user.setExaminationType("2");
        //查询
        List<User> users = userService.list(new QueryWrapper<>(user));
        //遍历
        if (users.size()>0){
            users.forEach(user1 -> {
                myAsyncService.userExamineFTP(user1);
            });
        }
    }
}