兴安访客小程序访客改造
This commit is contained in:
@@ -85,6 +85,7 @@ public class TokenController
|
|||||||
String s = RsaUiUtils.decryptByPrivateKey(form.getEncrypt());
|
String s = RsaUiUtils.decryptByPrivateKey(form.getEncrypt());
|
||||||
JSONObject jsonObject = JSONObject.parseObject(s);
|
JSONObject jsonObject = JSONObject.parseObject(s);
|
||||||
userInfo = sysLoginService.login(jsonObject.getString("username"), jsonObject.getString("password"));
|
userInfo = sysLoginService.login(jsonObject.getString("username"), jsonObject.getString("password"));
|
||||||
|
// userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
|
||||||
}
|
}
|
||||||
// 获取登录token
|
// 获取登录token
|
||||||
return R.ok(tokenService.createToken(userInfo));
|
return R.ok(tokenService.createToken(userInfo));
|
||||||
|
|||||||
@@ -356,15 +356,16 @@ public class SysLoginService
|
|||||||
|
|
||||||
//生成六位验证码
|
//生成六位验证码
|
||||||
String smsCode = SmsUtils.generateSmsCode();
|
String smsCode = SmsUtils.generateSmsCode();
|
||||||
|
log.info("{}短信二维码{}", register.getPhone(), smsCode);
|
||||||
|
|
||||||
SmsDTO smsDTO = new SmsDTO();
|
SmsDTO smsDTO = new SmsDTO();
|
||||||
smsDTO.setTemplateId(smsProperties.getTemplate11());
|
smsDTO.setTemplateId(smsProperties.getTemplate11());
|
||||||
smsDTO.setCaptcha(smsCode);
|
smsDTO.setCaptcha(smsCode);
|
||||||
smsDTO.setPhone(register.getPhone());
|
smsDTO.setPhone(register.getPhone());
|
||||||
AjaxResult ajaxResult = remoteUserService.sendMessage(smsDTO, SecurityConstants.INNER);
|
// AjaxResult ajaxResult = remoteUserService.sendMessage(smsDTO, SecurityConstants.INNER);
|
||||||
if (!ajaxResult.isSuccess()) {
|
// if (!ajaxResult.isSuccess()) {
|
||||||
throw new ServiceException(ajaxResult.get("msg").toString());
|
// throw new ServiceException(ajaxResult.get("msg").toString());
|
||||||
}
|
// }
|
||||||
|
|
||||||
//缓存次数
|
//缓存次数
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
|||||||
@@ -72,4 +72,6 @@ public class CacheConstants
|
|||||||
public static final String WEIXIN_URL_LINK = "weixin_url_link";
|
public static final String WEIXIN_URL_LINK = "weixin_url_link";
|
||||||
|
|
||||||
public static final String WE_COM_TOKEN = "we_com_token:";
|
public static final String WE_COM_TOKEN = "we_com_token:";
|
||||||
|
|
||||||
|
public static final String VISITOR_SMS_CODE = "visitor_sms_code:";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
package com.dcsoft.common.redis.service;
|
package com.dcsoft.common.redis.service;
|
||||||
|
|
||||||
import java.util.Collection;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import java.util.Iterator;
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.BoundSetOperations;
|
import org.springframework.data.redis.core.BoundSetOperations;
|
||||||
import org.springframework.data.redis.core.HashOperations;
|
import org.springframework.data.redis.core.HashOperations;
|
||||||
@@ -13,18 +9,24 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|||||||
import org.springframework.data.redis.core.ValueOperations;
|
import org.springframework.data.redis.core.ValueOperations;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* spring redis 工具类
|
* spring redis 工具类
|
||||||
*
|
*
|
||||||
* @author dcsoft
|
* @author dcsoft
|
||||||
**/
|
**/
|
||||||
@SuppressWarnings(value = { "unchecked", "rawtypes" })
|
@SuppressWarnings(value = { "unchecked", "rawtypes" })
|
||||||
@Component
|
@Component
|
||||||
|
@Slf4j
|
||||||
public class RedisService
|
public class RedisService
|
||||||
{
|
{
|
||||||
@Autowired
|
@Autowired
|
||||||
public RedisTemplate redisTemplate;
|
public RedisTemplate redisTemplate;
|
||||||
|
|
||||||
|
private static final long DEFAULT_TIMEOUT = 60 * 60 * 24 * 7;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存基本的对象,Integer、String、实体类等
|
* 缓存基本的对象,Integer、String、实体类等
|
||||||
*
|
*
|
||||||
@@ -36,6 +38,43 @@ public class RedisService
|
|||||||
redisTemplate.opsForValue().set(key, value);
|
redisTemplate.opsForValue().set(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存是否存在,存在返回false,不存在返回true并存储缓存值
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @param value
|
||||||
|
*/
|
||||||
|
public Boolean setIfAbsent(final String key, final String value, long timeout, TimeUnit timeUnit)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return redisTemplate.opsForValue().setIfAbsent(key, value, timeout, timeUnit);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("redis error:{}", e.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分布式加锁
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @param value
|
||||||
|
*/
|
||||||
|
public Boolean lock(final String key, final String value, long timeout, TimeUnit timeUnit)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (timeout <= 0) {
|
||||||
|
timeout = DEFAULT_TIMEOUT;
|
||||||
|
timeUnit = TimeUnit.SECONDS;
|
||||||
|
}
|
||||||
|
return redisTemplate.opsForValue().setIfAbsent(key, value, timeout, timeUnit);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("redis error:{}", e.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存基本的对象,Integer、String、实体类等
|
* 缓存基本的对象,Integer、String、实体类等
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -224,6 +224,18 @@ public class SysRoleController extends BaseController
|
|||||||
return toAjax(roleService.insertAuthUsers(roleId, userIds));
|
return toAjax(roleService.insertAuthUsers(roleId, userIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 访客授权
|
||||||
|
*/
|
||||||
|
@Log(title = "角色管理", businessType = BusinessType.GRANT)
|
||||||
|
@PostMapping("/insertVisitor")
|
||||||
|
public AjaxResult insertVisitor(@RequestBody SysUser sysUser) {
|
||||||
|
roleService.checkRoleDataScope(sysUser.getRoleId());
|
||||||
|
Long[] userIds = new Long[1];
|
||||||
|
userIds[0] = sysUser.getUserId();
|
||||||
|
return toAjax(roleService.insertAuthUsers(sysUser.getRoleId(), userIds));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取对应角色部门树列表
|
* 获取对应角色部门树列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.dcsoft.system.utils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class UuidUtil {
|
||||||
|
|
||||||
|
public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
|
||||||
|
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
|
||||||
|
"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
|
||||||
|
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
|
||||||
|
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
|
||||||
|
"W", "X", "Y", "Z" };
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取短UUID
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getShortUuid() {
|
||||||
|
StringBuffer shortBuffer = new StringBuffer();
|
||||||
|
String uuid = UuidUtil.getUuid();
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
String str = uuid.substring(i * 4, i * 4 + 4);
|
||||||
|
int x = Integer.parseInt(str, 16);
|
||||||
|
shortBuffer.append(chars[x % 0x3E]); // 对62取余
|
||||||
|
}
|
||||||
|
return shortBuffer.toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得32位UUID
|
||||||
|
*/
|
||||||
|
public static String getUuid(){
|
||||||
|
String uuid = UUID.randomUUID().toString();
|
||||||
|
//去掉“-”符号
|
||||||
|
return uuid.replaceAll("-", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,16 @@
|
|||||||
package com.dcsoft.system.visitor.controller;
|
package com.dcsoft.system.visitor.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpException;
|
import cn.hutool.http.HttpException;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.dcsoft.common.core.constant.CacheConstants;
|
import com.dcsoft.common.core.constant.CacheConstants;
|
||||||
import com.dcsoft.common.core.constant.Constants;
|
import com.dcsoft.common.core.constant.Constants;
|
||||||
|
import com.dcsoft.common.core.domain.R;
|
||||||
import com.dcsoft.common.core.enums.ExamineEnum;
|
import com.dcsoft.common.core.enums.ExamineEnum;
|
||||||
import com.dcsoft.common.core.enums.MatterEnum;
|
import com.dcsoft.common.core.enums.MatterEnum;
|
||||||
import com.dcsoft.common.core.enums.exception.CommonExceptionEnum;
|
import com.dcsoft.common.core.enums.exception.CommonExceptionEnum;
|
||||||
@@ -36,6 +41,7 @@ import com.dcsoft.system.uniubi.domain.Person;
|
|||||||
import com.dcsoft.system.uniubi.service.ISysApiService;
|
import com.dcsoft.system.uniubi.service.ISysApiService;
|
||||||
import com.dcsoft.system.uniubi.service.ISysSdkService;
|
import com.dcsoft.system.uniubi.service.ISysSdkService;
|
||||||
import com.dcsoft.system.utils.FileUtils;
|
import com.dcsoft.system.utils.FileUtils;
|
||||||
|
import com.dcsoft.system.utils.UuidUtil;
|
||||||
import com.dcsoft.system.visitor.domain.CheckCodeVo;
|
import com.dcsoft.system.visitor.domain.CheckCodeVo;
|
||||||
import com.dcsoft.system.visitor.domain.VisVisitorExamine;
|
import com.dcsoft.system.visitor.domain.VisVisitorExamine;
|
||||||
import com.dcsoft.system.visitor.domain.Visitor;
|
import com.dcsoft.system.visitor.domain.Visitor;
|
||||||
@@ -175,6 +181,8 @@ public class VisitorController extends BaseController {
|
|||||||
// 正则表达式匹配大部分国家的手机号码格式
|
// 正则表达式匹配大部分国家的手机号码格式
|
||||||
private static final Pattern PHONE_NUMBER_PATTERN = Pattern.compile("^1[3-9]\\d{9}$");
|
private static final Pattern PHONE_NUMBER_PATTERN = Pattern.compile("^1[3-9]\\d{9}$");
|
||||||
|
|
||||||
|
private static final String APPROVE_KEY = "APPROVE_KEY:APPROVE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询访客信息列表
|
* 查询访客信息列表
|
||||||
*/
|
*/
|
||||||
@@ -292,6 +300,52 @@ public class VisitorController extends BaseController {
|
|||||||
return success(visitor);
|
return success(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取访客信息详细信息(审批链接进来)
|
||||||
|
*/
|
||||||
|
@PostMapping(value = "/getVisitorInfo")
|
||||||
|
public AjaxResult getVisitorInfo(@RequestBody JSONObject js) throws Exception {
|
||||||
|
String data = js.getString("data");
|
||||||
|
if (StringUtils.isBlank(data)) {
|
||||||
|
throw new ServiceException("参数为空,请联系管理员!");
|
||||||
|
}
|
||||||
|
|
||||||
|
//数据进行解密
|
||||||
|
Object cacheObject = redisService.getCacheObject(CacheConstants.VISITOR_SMS_CODE + data);
|
||||||
|
if (ObjectUtil.isNull(cacheObject)) {
|
||||||
|
throw new ServiceException("链接不存在或已过期!");
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] split = String.valueOf(cacheObject).split("&");
|
||||||
|
Long id = Long.parseLong(split[0]);
|
||||||
|
String telephone = split[1];
|
||||||
|
|
||||||
|
Visitor visitor = visitorService.selectVisitorById(id);
|
||||||
|
visitor.setTelephone(telephone);
|
||||||
|
|
||||||
|
//审核链接进来
|
||||||
|
if (StringUtils.isNotBlank(telephone)) {
|
||||||
|
if (StringUtils.equals(visitor.getExamineState(), ExamineEnum.IN_REVIEW.getCode())) {
|
||||||
|
//查询当前点击审核链接的人员信息
|
||||||
|
SysPeople sysPeople = sysPeopleService.queryPeopleName(telephone, null);
|
||||||
|
|
||||||
|
//根据手机号查询peopleId
|
||||||
|
visitor.setReviewer(String.valueOf(sysPeople.getId()));
|
||||||
|
visitor.setPosition(null);
|
||||||
|
Visitor visitor1 = visitorService.queryReviewProcess(visitor);
|
||||||
|
if (ObjectUtil.isNotNull(visitor1) && StrUtil.isNotBlank(visitor1.getState())) {
|
||||||
|
visitor.setExamineState(visitor1.getState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> map = dictDataService.queryDictData("sys_company_type");
|
||||||
|
visitor.setMatterName(MatterEnum.getByCode(visitor.getMatter()));
|
||||||
|
visitor.setDeptName(map.get(visitor.getDeptId()));
|
||||||
|
return success(visitor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增访客信息
|
* 新增访客信息
|
||||||
*/
|
*/
|
||||||
@@ -304,13 +358,30 @@ public class VisitorController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//判断访客和随访人是否存在预约过的信息
|
//判断访客和随访人是否存在预约过的信息
|
||||||
List<Visitor> visitors = new ArrayList<>();
|
List<String> phones = new ArrayList<>();
|
||||||
visitors.add(visitor);
|
List<String> idcards = new ArrayList<>();
|
||||||
if (!CollUtil.isEmpty(visitor.getItemList())) {
|
if (CollUtil.isNotEmpty(visitor.getItemList())) {
|
||||||
for (Visitor item : visitor.getItemList()) {
|
phones = visitor.getItemList().stream().map(Visitor::getPhone).collect(Collectors.toList());
|
||||||
if (!validatePhoneNumber(item.getPhone())) {
|
idcards = visitor.getItemList().stream().map(Visitor::getIdcard).collect(Collectors.toList());
|
||||||
throw new ServiceException("您输入的随访人员手机号格式不正确");
|
}
|
||||||
}
|
phones.add(visitor.getPhone());
|
||||||
|
if (visitorService.queryVisitorByIdCount(phones) > 0) {
|
||||||
|
throw new ServiceException("手机号已存在访客预约信息");
|
||||||
|
}
|
||||||
|
idcards.add(visitor.getIdcard());
|
||||||
|
if (visitorService.queryVisitorByCardCount(idcards) > 0) {
|
||||||
|
throw new ServiceException("访客中存在已预约访客");
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
|
visitor.setCreateBy(loginUser.getUsername());
|
||||||
|
log.info("新增访客信息:{}", visitor);
|
||||||
|
int i = visitorService.insertVisitor(visitor);
|
||||||
|
|
||||||
|
// 随访人员
|
||||||
|
List<Visitor> itemList = visitor.getItemList();
|
||||||
|
if (CollUtil.isNotEmpty(visitor.getItemList())) {
|
||||||
|
for (Visitor item : itemList) {
|
||||||
item.setParentId(visitor.getId());
|
item.setParentId(visitor.getId());
|
||||||
item.setSource(Constants.ONE);
|
item.setSource(Constants.ONE);
|
||||||
item.setUserId(visitor.getUserId());
|
item.setUserId(visitor.getUserId());
|
||||||
@@ -319,52 +390,38 @@ public class VisitorController extends BaseController {
|
|||||||
item.setStartTime(visitor.getStartTime());
|
item.setStartTime(visitor.getStartTime());
|
||||||
item.setEndTime(visitor.getEndTime());
|
item.setEndTime(visitor.getEndTime());
|
||||||
item.setMatter(visitor.getMatter());
|
item.setMatter(visitor.getMatter());
|
||||||
item.setExamineState(ExamineEnum.IN_REVIEW.getCode());
|
|
||||||
item.setCreateTime(visitor.getCreateTime());
|
item.setCreateTime(visitor.getCreateTime());
|
||||||
item.setStartTime(visitor.getStartTime());
|
item.setStartTime(visitor.getStartTime());
|
||||||
item.setEndTime(visitor.getEndTime());
|
item.setEndTime(visitor.getEndTime());
|
||||||
visitors.add(item);
|
item.setVisitorType(visitor.getVisitorType());
|
||||||
|
item.setVisitingUnit(visitor.getVisitingUnit());
|
||||||
|
item.setUserName(visitor.getUserName());
|
||||||
|
visitorService.insertVisitor(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> phones = visitors.stream().map(Visitor::getPhone).collect(Collectors.toList());
|
|
||||||
if (visitorService.queryVisitorByIdCount(phones) > 0) {
|
|
||||||
throw new ServiceException("手机号已存在访客预约信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> idcards = visitors.stream().map(Visitor::getIdcard).collect(Collectors.toList());
|
|
||||||
if (visitorService.queryVisitorByCardCount(idcards) > 0) {
|
|
||||||
throw new ServiceException("访客中存在已预约访客");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 校验图片
|
|
||||||
// checkPhoto(visitor.getAvatar(), visitor.getName());
|
|
||||||
|
|
||||||
log.info("新增访客信息:{}", visitors);
|
|
||||||
for (Visitor visitor1 : visitors) {
|
|
||||||
visitorService.insertVisitor(visitor1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存附件
|
// 保存附件
|
||||||
if(!CollectionUtils.isEmpty(visitor.getFileList())) {
|
if(!CollectionUtils.isEmpty(visitor.getFileList())) {
|
||||||
saveSysFile(visitor.getFileList(), String.valueOf(visitor.getId()));
|
saveSysFile(visitor.getFileList(), String.valueOf(visitor.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审核通知企微发送消息(小程序来源)
|
String content = getContent(visitor, itemList);
|
||||||
// String appletLink = getAppletLink(String.valueOf(visitor.getId()), "pages/visitor/visitor/examineIndex");
|
|
||||||
SysPeople sysPeople = sysPeopleService.selectSysPeopleByUserId(visitor.getUserId());
|
|
||||||
// log.info("审核通知链接:{}", appletLink);
|
|
||||||
// sendWeCom(sysPeople.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
|
|
||||||
|
|
||||||
// 访客审核
|
// 审核通知企微发送消息(小程序来源)
|
||||||
// SysBranch sysBranch = sysBranchService.selectSysBranchById(visitor.getDeptId());
|
SysPeople sysPeople = sysPeopleService.selectSysPeopleByUserId(visitor.getUserId());
|
||||||
// if(sysBranch != null && Constants.ZERO.equals(sysBranch.getIsExamine())) {
|
String url = getExamineUrl(String.valueOf(visitor.getId()), sysPeople.getPhone());
|
||||||
// VisVisitorExamine examine = new VisVisitorExamine();
|
log.info("add发送审核链接:{}", url);
|
||||||
// examine.setExamine(Constants.ZERO);
|
//发送钉钉信息
|
||||||
// visitor.setExamine(examine);
|
// asyncsendV2(sysPeople.getPhone(), "text", content + url);
|
||||||
// updateVisitorExamine(visitor);
|
|
||||||
// }
|
//发送企微信息
|
||||||
return toAjax(true);
|
try {
|
||||||
|
// sendWeCom(sysPeople.getPhone(), url + " --访客姓名:" + visitor.getName());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("访客add-sendWeCom异常:{}", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return toAjax(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -399,6 +456,61 @@ public class VisitorController extends BaseController {
|
|||||||
return PHONE_NUMBER_PATTERN.matcher(number).matches();
|
return PHONE_NUMBER_PATTERN.matcher(number).matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取审核链接
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getExamineUrl(String id, String telephone) {
|
||||||
|
//生成8位短参作为缓存key
|
||||||
|
String code = UuidUtil.getShortUuid();
|
||||||
|
try {
|
||||||
|
while (redisService.hasKey(code)) {
|
||||||
|
code = UuidUtil.getShortUuid();
|
||||||
|
}
|
||||||
|
redisService.setCacheObject(CacheConstants.VISITOR_SMS_CODE + code, id + "&" + telephone, 30L, TimeUnit.DAYS);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ServiceException("缓存数据异常:" + e.getMessage());
|
||||||
|
}
|
||||||
|
return "https://fk.xyxaks.cn/h5/?c=" + code;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组织链接内容(申请人&随访人基本信息)
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getContent(Visitor visitor, List<Visitor> itemList) {
|
||||||
|
String matterName = "";
|
||||||
|
if (StringUtils.isNotBlank(visitor.getMatter())) {
|
||||||
|
matterName = MatterEnum.getByCode(visitor.getMatter());
|
||||||
|
}
|
||||||
|
String startTime = DateUtil.format(visitor.getStartTime(), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
String endTime = DateUtil.format(visitor.getEndTime(), DatePattern.NORM_DATETIME_FORMATTER);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("收到新的访客申请:").append(matterName).append("\n");
|
||||||
|
//面试
|
||||||
|
if (StringUtils.equals(visitor.getMatter(), MatterEnum.INTERVIEW.getCode())) {
|
||||||
|
SysBranch sysBranch = sysBranchService.selectSysBranchById(visitor.getDeptId());
|
||||||
|
sb.append("面试公司:").append(sysBranch.getName()).append("\n");
|
||||||
|
} else {//访客
|
||||||
|
sb.append("来访公司:").append(visitor.getVisitingUnit() == null ? "用户未填写" : visitor.getVisitingUnit()).append("\n");
|
||||||
|
}
|
||||||
|
sb.append("申请人:").append(visitor.getName()).append("\n");
|
||||||
|
sb.append("申请人联系方式:").append(visitor.getPhone() == null ? "用户未填写" : visitor.getPhone()).append("\n");
|
||||||
|
sb.append("预约申请时间:").append(startTime).append("至").append(endTime).append("\n");
|
||||||
|
if (CollUtil.isNotEmpty(itemList)) {
|
||||||
|
for (Visitor item : itemList) {
|
||||||
|
sb.append("随访人:").append(item.getName()).append("\n");
|
||||||
|
sb.append("随访人联系方式:").append(item.getPhone() == null ? "未填写" : item.getPhone()).append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sb.append("点击链接进行审核:");
|
||||||
|
log.info("getContent:{}", JSON.toJSONString(sb));
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 钉工牌消息通知
|
* 钉工牌消息通知
|
||||||
*/
|
*/
|
||||||
@@ -743,6 +855,132 @@ public class VisitorController extends BaseController {
|
|||||||
return toAjax(visitorService.updateVisitor(visitor));
|
return toAjax(visitorService.updateVisitor(visitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程审核
|
||||||
|
*/
|
||||||
|
@Log(title = "流程审核", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping("/approve")
|
||||||
|
@Transactional
|
||||||
|
public AjaxResult approve(@RequestBody Visitor visitor) {
|
||||||
|
log.info("流程审核入参 {}", JSON.toJSONString(visitor));
|
||||||
|
try {
|
||||||
|
String telephone = StringUtils.isBlank(visitor.getTelephone()) ? "1" : visitor.getTelephone();
|
||||||
|
Boolean lock = redisService.lock(APPROVE_KEY, telephone, 60 * 5, TimeUnit.SECONDS);
|
||||||
|
if (!lock) {
|
||||||
|
log.error("approve-审核人员正在审核中");
|
||||||
|
return error("正在审核中");
|
||||||
|
}
|
||||||
|
List<SysManageRecord> record = visitorService.querySysManageRecord(visitor.getUserId());
|
||||||
|
if (CollectionUtils.isEmpty(record)) {
|
||||||
|
throw new RuntimeException("被访人未授权通行");
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询当前审核人基本信息
|
||||||
|
SysPeople sysPeople = sysPeopleService.queryPeopleName(telephone, null);
|
||||||
|
visitor.setUserId(sysPeople.getId());
|
||||||
|
visitor.setReviewer(String.valueOf(sysPeople.getId()));
|
||||||
|
|
||||||
|
//查询当前访客信息
|
||||||
|
Visitor visitor1 = visitorService.selectVisitorSimpleById(visitor.getId());
|
||||||
|
visitor.setCurrentNode(visitor1.getCurrentNode() + 1);
|
||||||
|
|
||||||
|
//赋值公共字段
|
||||||
|
VisVisitorExamine examine = visitor.getExamine();
|
||||||
|
examine.setVisitorId(visitor.getId());
|
||||||
|
visitor.setState(examine.getExamine());
|
||||||
|
|
||||||
|
//审核通过
|
||||||
|
if(Constants.ZERO.equals(examine.getExamine())) {
|
||||||
|
//被访人审核
|
||||||
|
if (visitor1.getCurrentNode() == 1) {
|
||||||
|
visitor.setNextStepReviewer(visitor.getReviewer2());
|
||||||
|
|
||||||
|
List<Visitor> list = new ArrayList<>();
|
||||||
|
Visitor visitor2 = new Visitor();
|
||||||
|
visitor2.setId(visitor.getId());
|
||||||
|
visitor2.setReviewer(String.valueOf(sysPeople.getId()));
|
||||||
|
visitor2.setState(ExamineEnum.PASSED.getCode());
|
||||||
|
list.add(visitor2);
|
||||||
|
Visitor visitor3 = new Visitor();
|
||||||
|
visitor3.setId(visitor.getId());
|
||||||
|
visitor3.setState(ExamineEnum.IN_REVIEW.getCode());
|
||||||
|
visitor3.setReviewer(visitor.getReviewer2());
|
||||||
|
list.add(visitor3);
|
||||||
|
Visitor visitor4 = new Visitor();
|
||||||
|
visitor4.setId(visitor.getId());
|
||||||
|
visitor4.setState(ExamineEnum.IN_REVIEW.getCode());
|
||||||
|
visitor4.setReviewer(visitor.getReviewer3());
|
||||||
|
list.add(visitor4);
|
||||||
|
//保存审核环节表
|
||||||
|
visitorService.saveVisitorReviewProcessList(list);
|
||||||
|
}
|
||||||
|
//二级审核人审核
|
||||||
|
else if (visitor1.getCurrentNode() == 2) {
|
||||||
|
visitor.setNextStepReviewer(visitor.getReviewer3());
|
||||||
|
visitorService.updateVisitorReviewProcess(visitor);
|
||||||
|
}
|
||||||
|
//如果有下一级审核人员,发送钉钉,企微审核消息链接
|
||||||
|
if (StrUtil.isNotBlank(visitor.getNextStepReviewer())) {
|
||||||
|
//查询下一节点审核人信息
|
||||||
|
SysPeople nextPeople = sysPeopleService.selectSysPeopleById(Long.parseLong(visitor.getNextStepReviewer()));
|
||||||
|
|
||||||
|
//查询随访人员信息
|
||||||
|
Visitor visitor2 = new Visitor();
|
||||||
|
visitor2.setParentId(visitor.getId());
|
||||||
|
List<Visitor> itemList = visitorService.selectVisitorItemList(visitor2);
|
||||||
|
String content = getContent(visitor1, itemList);
|
||||||
|
String url = getExamineUrl(String.valueOf(visitor.getId()), nextPeople.getPhone());
|
||||||
|
log.info("approve发送审核链接:{}", url);
|
||||||
|
String str = content + url;
|
||||||
|
// asyncsendV2(nextPeople.getPhone(), "text", str);
|
||||||
|
log.info("发送钉钉结束:{}", nextPeople.getPhone());
|
||||||
|
} else {//最后一级审核
|
||||||
|
visitor.setExamineState(examine.getExamine());
|
||||||
|
//保存审核历史表
|
||||||
|
examine.setRejectReason(visitor.getRejectReason());
|
||||||
|
visVisitorExamineService.insertVisVisitorExamine(examine);
|
||||||
|
|
||||||
|
//修改环节状态
|
||||||
|
visitorService.updateVisitorReviewProcess(visitor);
|
||||||
|
|
||||||
|
// 同意后,给被访人和访客们发送审核结束短信
|
||||||
|
Visitor visitor2 = new Visitor();
|
||||||
|
visitor2.setParentId(visitor.getId());
|
||||||
|
List<Visitor> itemList = visitorService.selectVisitorItemList(visitor2);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//审核拒绝
|
||||||
|
if (Constants.ONE.equals(examine.getExamine())) {
|
||||||
|
visitor.setExamineState(examine.getExamine());
|
||||||
|
//保存审核历史表
|
||||||
|
examine.setRejectReason(visitor.getRejectReason());
|
||||||
|
visVisitorExamineService.insertVisVisitorExamine(examine);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// sendWeCom(telephone, visitor.getName() + "的访客审核已驳回");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("访客approve-sendWeCom驳回异常:{}", e.getMessage());
|
||||||
|
}
|
||||||
|
// 申请人发送短信(审核不通过)
|
||||||
|
// sendMessage(visitor.getPhone(), "1", smsProperties.getTemplate3());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
visitorService.approve(visitor);
|
||||||
|
|
||||||
|
return toAjax(true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("审核异常:{}", e.getMessage());
|
||||||
|
return toAjax(false);
|
||||||
|
}finally {
|
||||||
|
redisService.deleteObject(APPROVE_KEY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 被访人审核
|
* 被访人审核
|
||||||
*/
|
*/
|
||||||
@@ -822,10 +1060,10 @@ public class VisitorController extends BaseController {
|
|||||||
if("7529".equals(people.getPosition())) {
|
if("7529".equals(people.getPosition())) {
|
||||||
visitor.setPosition("8121");
|
visitor.setPosition("8121");
|
||||||
}
|
}
|
||||||
String string = visitorService.queryReviewProcess(visitor);
|
Visitor visitor5 = visitorService.queryReviewProcess(visitor);
|
||||||
visitor.setNextStepReviewer(StringUtils.isNotEmpty(visitor.getReviewer2()) ? visitor.getReviewer2() : visitor.getReviewer3());
|
visitor.setNextStepReviewer(StringUtils.isNotEmpty(visitor.getReviewer2()) ? visitor.getReviewer2() : visitor.getReviewer3());
|
||||||
if(StringUtils.isNotEmpty(string)) {
|
if(StringUtils.isNotEmpty(visitor5.getReviewer())) {
|
||||||
visitor.setNextStepReviewer(string);
|
visitor.setNextStepReviewer(visitor5.getReviewer());
|
||||||
}
|
}
|
||||||
if(StringUtils.isEmpty(visitor.getNextStepReviewer())) {
|
if(StringUtils.isEmpty(visitor.getNextStepReviewer())) {
|
||||||
visitor.setNextStepReviewer(String.valueOf(visitor.getUserId()));
|
visitor.setNextStepReviewer(String.valueOf(visitor.getUserId()));
|
||||||
@@ -890,7 +1128,7 @@ public class VisitorController extends BaseController {
|
|||||||
visitor.setState(examine.getExamine());
|
visitor.setState(examine.getExamine());
|
||||||
visitorService.updateVisitorReviewProcess(visitor);
|
visitorService.updateVisitorReviewProcess(visitor);
|
||||||
|
|
||||||
OfficialAccountVo officialAccountVo = sysPeopleService.queryPeopleById(string);
|
OfficialAccountVo officialAccountVo = sysPeopleService.queryPeopleById(visitor5.getReviewer());
|
||||||
// 审核通知企微发送消息(小程序来源)
|
// 审核通知企微发送消息(小程序来源)
|
||||||
String appletLink = getAppletLink(String.valueOf(visitor.getId()), "pages/visitor/visitor/examineIndex");
|
String appletLink = getAppletLink(String.valueOf(visitor.getId()), "pages/visitor/visitor/examineIndex");
|
||||||
sendWeCom(officialAccountVo.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
|
sendWeCom(officialAccountVo.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
|
||||||
|
|||||||
@@ -61,8 +61,15 @@ passwordPermission 密码权限 */
|
|||||||
|
|
||||||
private Long ruleId;
|
private Long ruleId;
|
||||||
|
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
|
public String getRejectReason() {
|
||||||
|
return rejectReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRejectReason(String rejectReason) {
|
||||||
|
this.rejectReason = rejectReason;
|
||||||
|
}
|
||||||
|
|
||||||
public void setId(Long id)
|
public void setId(Long id)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -201,6 +201,11 @@ public class Visitor extends BaseEntity {
|
|||||||
|
|
||||||
private List<Visitor> visitor;
|
private List<Visitor> visitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序审核链接的手机号
|
||||||
|
**/
|
||||||
|
private String telephone;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 离开时间
|
* 离开时间
|
||||||
*/
|
*/
|
||||||
@@ -270,4 +275,13 @@ public class Visitor extends BaseEntity {
|
|||||||
* 园区
|
* 园区
|
||||||
*/
|
*/
|
||||||
private String park;
|
private String park;
|
||||||
|
|
||||||
|
/** 当前审批节点 */
|
||||||
|
private Integer currentNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核理由
|
||||||
|
*/
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ public interface VisitorMapper
|
|||||||
|
|
||||||
void updateVisitorReviewProcess(Visitor visitor);
|
void updateVisitorReviewProcess(Visitor visitor);
|
||||||
|
|
||||||
String queryReviewProcess(Visitor visitor);
|
Visitor queryReviewProcess(Visitor visitor);
|
||||||
|
|
||||||
int queryVisitorReviewProcessCount(Long id);
|
int queryVisitorReviewProcessCount(Long id);
|
||||||
|
|
||||||
@@ -239,4 +239,10 @@ public interface VisitorMapper
|
|||||||
List<Visitor> selectAppVisitorList(Visitor visitor);
|
List<Visitor> selectAppVisitorList(Visitor visitor);
|
||||||
|
|
||||||
List<CheckCodeVo> queryCode(List<Long> collect);
|
List<CheckCodeVo> queryCode(List<Long> collect);
|
||||||
|
|
||||||
|
void updateVisitorByParentId(Visitor updateVisitor);
|
||||||
|
|
||||||
|
String selectRecordsByPhone(Long id, String telephone);
|
||||||
|
|
||||||
|
void saveVisitorReviewProcessList(@Param("list") List<Visitor> list);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,9 +244,17 @@ public interface IVisitorService
|
|||||||
|
|
||||||
void updateVisitorReviewProcess(Visitor visitor);
|
void updateVisitorReviewProcess(Visitor visitor);
|
||||||
|
|
||||||
String queryReviewProcess(Visitor visitor);
|
Visitor queryReviewProcess(Visitor visitor);
|
||||||
|
|
||||||
int queryVisitorReviewProcessCount(Long id);
|
int queryVisitorReviewProcessCount(Long id);
|
||||||
|
|
||||||
List<Visitor> selectAppVisitorList(Visitor visitor);
|
List<Visitor> selectAppVisitorList(Visitor visitor);
|
||||||
|
|
||||||
|
Visitor selectVisitorSimpleById(Long id);
|
||||||
|
|
||||||
|
void approve(Visitor visitor);
|
||||||
|
|
||||||
|
String selectRecordsByPhone(Long id, String telephone);
|
||||||
|
|
||||||
|
void saveVisitorReviewProcessList(List<Visitor> list);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package com.dcsoft.system.visitor.service.impl;
|
package com.dcsoft.system.visitor.service.impl;
|
||||||
|
|
||||||
import com.dcsoft.common.core.constant.Constants;
|
import com.dcsoft.common.core.constant.Constants;
|
||||||
|
import com.dcsoft.common.core.constant.SecurityConstants;
|
||||||
import com.dcsoft.common.core.domain.R;
|
import com.dcsoft.common.core.domain.R;
|
||||||
|
import com.dcsoft.common.core.enums.ExamineEnum;
|
||||||
import com.dcsoft.common.core.exception.ServiceException;
|
import com.dcsoft.common.core.exception.ServiceException;
|
||||||
import com.dcsoft.common.core.utils.CollUtil;
|
import com.dcsoft.common.core.utils.CollUtil;
|
||||||
import com.dcsoft.common.core.web.page.TableDataInfoPage;
|
import com.dcsoft.common.core.web.page.TableDataInfoPage;
|
||||||
import com.dcsoft.common.datascope.annotation.DataScope;
|
import com.dcsoft.common.datascope.annotation.DataScope;
|
||||||
|
import com.dcsoft.common.security.utils.SecurityUtils;
|
||||||
import com.dcsoft.system.api.RemoteFileService;
|
import com.dcsoft.system.api.RemoteFileService;
|
||||||
import com.dcsoft.system.api.domain.SysFile;
|
import com.dcsoft.system.api.domain.SysFile;
|
||||||
|
import com.dcsoft.system.api.model.LoginUser;
|
||||||
import com.dcsoft.system.domain.SysBlackList;
|
import com.dcsoft.system.domain.SysBlackList;
|
||||||
import com.dcsoft.system.domain.SysBranch;
|
import com.dcsoft.system.domain.SysBranch;
|
||||||
import com.dcsoft.system.domain.SysManageRecord;
|
import com.dcsoft.system.domain.SysManageRecord;
|
||||||
@@ -31,10 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.dcsoft.common.core.utils.PageUtils.startPage;
|
import static com.dcsoft.common.core.utils.PageUtils.startPage;
|
||||||
@@ -63,6 +64,8 @@ public class VisitorServiceImpl implements IVisitorService {
|
|||||||
@Value("${system.type}")
|
@Value("${system.type}")
|
||||||
public String systemType;
|
public String systemType;
|
||||||
|
|
||||||
|
@Value("${qd.url:http://}")
|
||||||
|
public String qdUrl;
|
||||||
/**
|
/**
|
||||||
* 卡权限创建接口
|
* 卡权限创建接口
|
||||||
*/
|
*/
|
||||||
@@ -138,6 +141,8 @@ public class VisitorServiceImpl implements IVisitorService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int insertVisitor(Visitor visitor) {
|
public int insertVisitor(Visitor visitor) {
|
||||||
|
visitor.setExamineState(ExamineEnum.IN_REVIEW.getCode());
|
||||||
|
visitor.setCurrentNode(1);
|
||||||
return visitorMapper.insertVisitor(visitor);
|
return visitorMapper.insertVisitor(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -615,6 +620,49 @@ public class VisitorServiceImpl implements IVisitorService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批
|
||||||
|
*
|
||||||
|
* @param visitor
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void approve(Visitor visitor) {
|
||||||
|
|
||||||
|
//保存审核记录表
|
||||||
|
visitorMapper.saveVisitorAuditRecords(visitor);
|
||||||
|
|
||||||
|
// 审核同意
|
||||||
|
if (Constants.ZERO.equals(visitor.getExamineState())) {
|
||||||
|
// 保存审核二维码地址信息
|
||||||
|
CheckCodeVo codeVo = new CheckCodeVo();
|
||||||
|
codeVo.setCode(qdUrl + visitor.getId() + "&time=" + new Date().getTime());
|
||||||
|
codeVo.setVisitorId(String.valueOf(visitor.getId()));
|
||||||
|
String replace = UUID.randomUUID().toString().replace("-", "");
|
||||||
|
codeVo.setId(replace);
|
||||||
|
if (StringUtils.isNotEmpty(visitor.getCheckCodeId())) {
|
||||||
|
codeVo.setId(visitor.getCheckCodeId());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (visitor != null) {
|
||||||
|
codeVo.setStartTime(visitor.getStartTime());
|
||||||
|
codeVo.setEndTime(visitor.getEndTime());
|
||||||
|
}
|
||||||
|
saveVisCheckCode(codeVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
visitorMapper.updateVisitor(visitor);
|
||||||
|
|
||||||
|
//修改随访人员信息
|
||||||
|
Visitor updateVisitor = new Visitor();
|
||||||
|
updateVisitor.setParentId(visitor.getId());
|
||||||
|
updateVisitor.setExamineState(visitor.getExamineState());
|
||||||
|
visitorMapper.updateVisitorByParentId(updateVisitor);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存审核记录
|
* 保存审核记录
|
||||||
*
|
*
|
||||||
@@ -662,7 +710,7 @@ public class VisitorServiceImpl implements IVisitorService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String queryReviewProcess(Visitor visitor) {
|
public Visitor queryReviewProcess(Visitor visitor) {
|
||||||
return visitorMapper.queryReviewProcess(visitor);
|
return visitorMapper.queryReviewProcess(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -703,4 +751,22 @@ public class VisitorServiceImpl implements IVisitorService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Visitor selectVisitorSimpleById(Long id) {
|
||||||
|
Visitor visitor = visitorMapper.selectVisitorById(id);
|
||||||
|
if (visitor == null) {
|
||||||
|
return new Visitor();
|
||||||
|
}
|
||||||
|
return visitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String selectRecordsByPhone(Long id, String telephone) {
|
||||||
|
return visitorMapper.selectRecordsByPhone(id, telephone);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveVisitorReviewProcessList(List<Visitor> list) {
|
||||||
|
visitorMapper.saveVisitorReviewProcessList(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,10 @@
|
|||||||
<result property="visitingUnit" column="visiting_unit"/>
|
<result property="visitingUnit" column="visiting_unit"/>
|
||||||
<result property="reviewer2" column="reviewer2"/>
|
<result property="reviewer2" column="reviewer2"/>
|
||||||
<result property="reviewer3" column="reviewer3"/>
|
<result property="reviewer3" column="reviewer3"/>
|
||||||
|
<result property="examineState" column="examine_state"/>
|
||||||
|
<result property="park" column="park"/>
|
||||||
|
<result property="visitorType" column="visitor_type"/>
|
||||||
|
<result property="currentNode" column="current_node"/>
|
||||||
<association property="branch" column="dept_id" javaType="SysBranch" resultMap="branchResult"/>
|
<association property="branch" column="dept_id" javaType="SysBranch" resultMap="branchResult"/>
|
||||||
<association property="people" column="user_id" javaType="SysPeople" resultMap="peopleResult"/>
|
<association property="people" column="user_id" javaType="SysPeople" resultMap="peopleResult"/>
|
||||||
<association property="examine" column="id" javaType="VisVisitorExamine" resultMap="examineResult"/>
|
<association property="examine" column="id" javaType="VisVisitorExamine" resultMap="examineResult"/>
|
||||||
@@ -105,7 +109,11 @@
|
|||||||
vv.position visitorPosition,
|
vv.position visitorPosition,
|
||||||
vv.visiting_unit,
|
vv.visiting_unit,
|
||||||
vv.reviewer2,
|
vv.reviewer2,
|
||||||
vv.reviewer3
|
vv.reviewer3,
|
||||||
|
vv.current_node,
|
||||||
|
vv.examine_state,
|
||||||
|
vv.visitor_type,
|
||||||
|
vv.park
|
||||||
from vis_visitor vv
|
from vis_visitor vv
|
||||||
left join vis_visitor_examine vve on vv.id = vve.visitor_id
|
left join vis_visitor_examine vve on vv.id = vve.visitor_id
|
||||||
left join sys_branch sb on vv.dept_id = sb.id
|
left join sys_branch sb on vv.dept_id = sb.id
|
||||||
@@ -198,7 +206,11 @@
|
|||||||
vv1.position visitorPosition,
|
vv1.position visitorPosition,
|
||||||
vv1.visiting_unit visitingUnit,
|
vv1.visiting_unit visitingUnit,
|
||||||
vv1.reviewer2,
|
vv1.reviewer2,
|
||||||
vv1.reviewer3
|
vv1.reviewer3,
|
||||||
|
vv1.examine_state,
|
||||||
|
vv1.visitor_type,
|
||||||
|
vv1.current_node,
|
||||||
|
vv1.park
|
||||||
from vis_visitor_review_process vvrp
|
from vis_visitor_review_process vvrp
|
||||||
left join vis_visitor vv1 on vv1.id = vvrp.visitor_id
|
left join vis_visitor vv1 on vv1.id = vvrp.visitor_id
|
||||||
left join sys_people s on vvrp.reviewer = s.id
|
left join sys_people s on vvrp.reviewer = s.id
|
||||||
@@ -291,6 +303,7 @@
|
|||||||
<if test="visitorType != null">visitor_type,</if>
|
<if test="visitorType != null">visitor_type,</if>
|
||||||
<if test="park != null">park,</if>
|
<if test="park != null">park,</if>
|
||||||
<if test="userName != null">user_name,</if>
|
<if test="userName != null">user_name,</if>
|
||||||
|
<if test="currentNode != null">current_node,</if>
|
||||||
|
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
@@ -327,6 +340,7 @@
|
|||||||
<if test="visitorType != null">#{visitorType},</if>
|
<if test="visitorType != null">#{visitorType},</if>
|
||||||
<if test="park != null">#{park},</if>
|
<if test="park != null">#{park},</if>
|
||||||
<if test="userName != null">#{userName},</if>
|
<if test="userName != null">#{userName},</if>
|
||||||
|
<if test="currentNode != null">#{currentNode},</if>
|
||||||
|
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
@@ -355,8 +369,22 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="saveVisitorReviewProcess">
|
<insert id="saveVisitorReviewProcess">
|
||||||
insert into vis_visitor_review_process (id, visitor_id, reviewer, type)
|
insert into vis_visitor_review_process (id, visitor_id, reviewer, type
|
||||||
VALUES (REPLACE(uuid(), '-', ''), #{id}, #{reviewer}, #{type})
|
<if test="state != null and state != ''">
|
||||||
|
,state
|
||||||
|
</if>
|
||||||
|
)
|
||||||
|
VALUES (REPLACE(uuid(), '-', ''), #{id}, #{reviewer}, #{type}
|
||||||
|
<if test="state != null and state != ''">
|
||||||
|
,#{state}
|
||||||
|
</if>)
|
||||||
|
</insert>
|
||||||
|
<insert id="saveVisitorReviewProcessList">
|
||||||
|
insert into vis_visitor_review_process (id, visitor_id, reviewer, state)
|
||||||
|
VALUES
|
||||||
|
<foreach collection="list" item="i" index="index" separator=",">
|
||||||
|
(REPLACE(uuid(), '-', ''), #{i.id}, #{i.reviewer}, #{i.state})
|
||||||
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateVisitor" parameterType="Visitor">
|
<update id="updateVisitor" parameterType="Visitor">
|
||||||
@@ -394,6 +422,8 @@
|
|||||||
<if test="visitorPosition != null">position = #{visitorPosition},</if>
|
<if test="visitorPosition != null">position = #{visitorPosition},</if>
|
||||||
<if test="reviewer2 != null">reviewer2 = #{reviewer2},</if>
|
<if test="reviewer2 != null">reviewer2 = #{reviewer2},</if>
|
||||||
<if test="reviewer3 != null">reviewer3 = #{reviewer3},</if>
|
<if test="reviewer3 != null">reviewer3 = #{reviewer3},</if>
|
||||||
|
<if test="examineState != null">examine_state = #{examineState},</if>
|
||||||
|
<if test="currentNode != null">current_node = #{currentNode},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
@@ -477,6 +507,7 @@
|
|||||||
<if test="idCardAddress != null">id_card_address = #{idCardAddress},</if>
|
<if test="idCardAddress != null">id_card_address = #{idCardAddress},</if>
|
||||||
<if test="visitingUnit != null">visiting_unit = #{visitingUnit},</if>
|
<if test="visitingUnit != null">visiting_unit = #{visitingUnit},</if>
|
||||||
<if test="userName != null">user_name = #{userName},</if>
|
<if test="userName != null">user_name = #{userName},</if>
|
||||||
|
<if test="currentNode != null">current_node = #{currentNode},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where idcard = #{idcard} and out_time is null
|
where idcard = #{idcard} and out_time is null
|
||||||
</update>
|
</update>
|
||||||
@@ -488,6 +519,46 @@
|
|||||||
and reviewer = #{reviewer}
|
and reviewer = #{reviewer}
|
||||||
</if>
|
</if>
|
||||||
</update>
|
</update>
|
||||||
|
<update id="updateVisitorByParentId">
|
||||||
|
update vis_visitor
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<if test="name != null and name != ''">name = #{name},</if>
|
||||||
|
<if test="phone != null">phone = #{phone},</if>
|
||||||
|
<if test="sex != null">sex = #{sex},</if>
|
||||||
|
<if test="avatar != null">avatar = #{avatar},</if>
|
||||||
|
<if test="idcard != null">idcard = #{idcard},</if>
|
||||||
|
<if test="carNo != null">car_no = #{carNo},</if>
|
||||||
|
<if test="userId != null">user_id = #{userId},</if>
|
||||||
|
<if test="deptId != null">dept_id = #{deptId},</if>
|
||||||
|
<if test="flag != null">flag = #{flag},</if>
|
||||||
|
<if test="startTime != null">start_time = #{startTime},</if>
|
||||||
|
<if test="endTime != null">end_time = #{endTime},</if>
|
||||||
|
<if test="matter != null">matter = #{matter},</if>
|
||||||
|
<if test="res != null">res = #{res},</if>
|
||||||
|
<if test="guid != null">guid = #{guid},</if>
|
||||||
|
<if test="faceGuid != null">face_guid = #{faceGuid},</if>
|
||||||
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
<if test="parentId != null">parent_id = #{parentId},</if>
|
||||||
|
<if test="inTime != null">in_time = #{inTime},</if>
|
||||||
|
<if test="outTime != null">out_time = #{outTime},</if>
|
||||||
|
<if test="type != null">type = #{type},</if>
|
||||||
|
<if test="idCardStartTime != null">id_card_start_time = #{idCardStartTime},</if>
|
||||||
|
<if test="idCardEndTime != null">id_card_end_time = #{idCardEndTime},</if>
|
||||||
|
<if test="idCardAddress != null">id_card_address = #{idCardAddress},</if>
|
||||||
|
<if test="visitingUnit != null">visiting_unit = #{visitingUnit},</if>
|
||||||
|
<if test="userName != null">user_name = #{userName},</if>
|
||||||
|
<if test="visitorPosition != null">position = #{visitorPosition},</if>
|
||||||
|
<if test="reviewer2 != null">reviewer2 = #{reviewer2},</if>
|
||||||
|
<if test="reviewer3 != null">reviewer3 = #{reviewer3},</if>
|
||||||
|
<if test="examineState != null">examine_state = #{examineState},</if>
|
||||||
|
<if test="currentNode != null">current_node = #{currentNode},</if>
|
||||||
|
</trim>
|
||||||
|
where parent_id = #{parentId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<delete id="deleteVisitorById" parameterType="Long">
|
<delete id="deleteVisitorById" parameterType="Long">
|
||||||
delete
|
delete
|
||||||
@@ -794,8 +865,18 @@
|
|||||||
order by vvar.created_time desc
|
order by vvar.created_time desc
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
<select id="queryReviewProcess" resultType="java.lang.String">
|
<select id="queryReviewProcess" resultType="com.dcsoft.system.visitor.domain.Visitor">
|
||||||
select reviewer from vis_visitor_review_process where visitor_id = #{id} and type = #{position}
|
select
|
||||||
|
reviewer,
|
||||||
|
state
|
||||||
|
from vis_visitor_review_process
|
||||||
|
where visitor_id = #{id}
|
||||||
|
<if test="position != null and position != ''">
|
||||||
|
and type = #{position}
|
||||||
|
</if>
|
||||||
|
<if test="reviewer != null and reviewer != ''">
|
||||||
|
and reviewer = #{reviewer}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
<select id="queryVisitorReviewProcessCount" resultType="java.lang.Integer">
|
<select id="queryVisitorReviewProcessCount" resultType="java.lang.Integer">
|
||||||
select sum(if(state is null, 1, 0)) state from vis_visitor_review_process where visitor_id = #{id} group by visitor_id
|
select sum(if(state is null, 1, 0)) state from vis_visitor_review_process where visitor_id = #{id} group by visitor_id
|
||||||
@@ -805,21 +886,11 @@
|
|||||||
select reviewer,
|
select reviewer,
|
||||||
state,
|
state,
|
||||||
sp.position type,
|
sp.position type,
|
||||||
date_format(updated_time, '%Y-%m-%d %H:%i:%s') createdTime,
|
date_format(created_time, '%Y-%m-%d %H:%i:%s') createdTime,
|
||||||
sp.name reviewerName
|
sp.name reviewerName
|
||||||
from vis_visitor_review_process vvrp
|
from vis_visitor_review_process vvrp
|
||||||
left join sys_people sp on vvrp.reviewer = sp.id and sp.del_flag = '0'
|
left join sys_people sp on vvrp.reviewer = sp.id and sp.del_flag = '0'
|
||||||
where visitor_id = #{id}
|
where visitor_id = #{id}
|
||||||
union all
|
|
||||||
select reviewer,
|
|
||||||
state,
|
|
||||||
sp.position type,
|
|
||||||
date_format(created_time, '%Y-%m-%d %H:%i:%s') createdTime,
|
|
||||||
sp.name reviewerName
|
|
||||||
from vis_visitor_audit_records vvar
|
|
||||||
left join sys_people sp on vvar.reviewer = sp.id and sp.del_flag = '0'
|
|
||||||
left join vis_visitor vv on vvar.visitor_id = vv.id
|
|
||||||
where visitor_id = #{id} and vvar.reviewer = vv.user_id
|
|
||||||
order by ifnull(createdTime, 'zzz')
|
order by ifnull(createdTime, 'zzz')
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -828,16 +899,13 @@
|
|||||||
vv.parent_id
|
vv.parent_id
|
||||||
from vis_visitor vv left join vis_visitor vv1 on vv.parent_id = vv1.id
|
from vis_visitor vv left join vis_visitor vv1 on vv.parent_id = vv1.id
|
||||||
where vv.parent_id is not null
|
where vv.parent_id is not null
|
||||||
<choose>
|
|
||||||
<when test="examineState != null and examineState == 3">
|
|
||||||
and vv1.examine_state = '0'
|
|
||||||
</when>
|
|
||||||
<when test="examineState != null and examineState != 3">
|
|
||||||
and vv1.examine_state = #{examineState}
|
|
||||||
</when>
|
|
||||||
</choose>
|
|
||||||
and vv.phone = #{createBy}
|
and vv.phone = #{createBy}
|
||||||
and vv1.park = #{park}
|
<if test="examineState != null and examineState != 3">
|
||||||
|
and vv1.examine_state = #{examineState}
|
||||||
|
</if>
|
||||||
|
<if test="park != null and park != ''">
|
||||||
|
and vv1.park = #{park}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
@@ -881,14 +949,9 @@
|
|||||||
vv.visiting_unit,
|
vv.visiting_unit,
|
||||||
vv.reviewer2,
|
vv.reviewer2,
|
||||||
vv.reviewer3,
|
vv.reviewer3,
|
||||||
vv.instance_id,
|
|
||||||
vv.examine_state,
|
vv.examine_state,
|
||||||
vv.visitor_type,
|
vv.visitor_type,
|
||||||
vv.park,
|
vv.park
|
||||||
vv.current_node,
|
|
||||||
vv.user_task_count,
|
|
||||||
vv.procdef_id,
|
|
||||||
vv.proc_id
|
|
||||||
from vis_visitor vv
|
from vis_visitor vv
|
||||||
left join vis_visitor_examine vve on vv.id = vve.visitor_id
|
left join vis_visitor_examine vve on vv.id = vve.visitor_id
|
||||||
left join sys_branch sb on vv.dept_id = sb.id
|
left join sys_branch sb on vv.dept_id = sb.id
|
||||||
@@ -924,4 +987,15 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
and vv.examine_state = 0
|
and vv.examine_state = 0
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectRecordsByPhone" resultType="java.lang.String">
|
||||||
|
SELECT
|
||||||
|
r.state
|
||||||
|
FROM
|
||||||
|
`vis_visitor_audit_records` r
|
||||||
|
LEFT JOIN sys_people p ON r.reviewer = p.id
|
||||||
|
WHERE
|
||||||
|
r.visitor_id = #{id}
|
||||||
|
AND p.phone = #{telephone}
|
||||||
|
ORDER BY r.created_time desc LIMIT 1
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user