兴安访客小程序访客改造
This commit is contained in:
@@ -224,6 +224,18 @@ public class SysRoleController extends BaseController
|
||||
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;
|
||||
|
||||
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.HttpUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.dcsoft.common.core.constant.CacheConstants;
|
||||
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.MatterEnum;
|
||||
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.ISysSdkService;
|
||||
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.VisVisitorExamine;
|
||||
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 String APPROVE_KEY = "APPROVE_KEY:APPROVE";
|
||||
|
||||
/**
|
||||
* 查询访客信息列表
|
||||
*/
|
||||
@@ -292,6 +300,52 @@ public class VisitorController extends BaseController {
|
||||
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<>();
|
||||
visitors.add(visitor);
|
||||
if (!CollUtil.isEmpty(visitor.getItemList())) {
|
||||
for (Visitor item : visitor.getItemList()) {
|
||||
if (!validatePhoneNumber(item.getPhone())) {
|
||||
throw new ServiceException("您输入的随访人员手机号格式不正确");
|
||||
}
|
||||
List<String> phones = new ArrayList<>();
|
||||
List<String> idcards = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(visitor.getItemList())) {
|
||||
phones = visitor.getItemList().stream().map(Visitor::getPhone).collect(Collectors.toList());
|
||||
idcards = visitor.getItemList().stream().map(Visitor::getIdcard).collect(Collectors.toList());
|
||||
}
|
||||
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.setSource(Constants.ONE);
|
||||
item.setUserId(visitor.getUserId());
|
||||
@@ -319,52 +390,38 @@ public class VisitorController extends BaseController {
|
||||
item.setStartTime(visitor.getStartTime());
|
||||
item.setEndTime(visitor.getEndTime());
|
||||
item.setMatter(visitor.getMatter());
|
||||
item.setExamineState(ExamineEnum.IN_REVIEW.getCode());
|
||||
item.setCreateTime(visitor.getCreateTime());
|
||||
item.setStartTime(visitor.getStartTime());
|
||||
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())) {
|
||||
saveSysFile(visitor.getFileList(), String.valueOf(visitor.getId()));
|
||||
}
|
||||
|
||||
// 审核通知企微发送消息(小程序来源)
|
||||
// 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());
|
||||
String content = getContent(visitor, itemList);
|
||||
|
||||
// 访客审核
|
||||
// SysBranch sysBranch = sysBranchService.selectSysBranchById(visitor.getDeptId());
|
||||
// if(sysBranch != null && Constants.ZERO.equals(sysBranch.getIsExamine())) {
|
||||
// VisVisitorExamine examine = new VisVisitorExamine();
|
||||
// examine.setExamine(Constants.ZERO);
|
||||
// visitor.setExamine(examine);
|
||||
// updateVisitorExamine(visitor);
|
||||
// }
|
||||
return toAjax(true);
|
||||
// 审核通知企微发送消息(小程序来源)
|
||||
SysPeople sysPeople = sysPeopleService.selectSysPeopleByUserId(visitor.getUserId());
|
||||
String url = getExamineUrl(String.valueOf(visitor.getId()), sysPeople.getPhone());
|
||||
log.info("add发送审核链接:{}", url);
|
||||
//发送钉钉信息
|
||||
// asyncsendV2(sysPeople.getPhone(), "text", content + url);
|
||||
|
||||
//发送企微信息
|
||||
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
|
||||
*/
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 流程审核
|
||||
*/
|
||||
@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())) {
|
||||
visitor.setPosition("8121");
|
||||
}
|
||||
String string = visitorService.queryReviewProcess(visitor);
|
||||
Visitor visitor5 = visitorService.queryReviewProcess(visitor);
|
||||
visitor.setNextStepReviewer(StringUtils.isNotEmpty(visitor.getReviewer2()) ? visitor.getReviewer2() : visitor.getReviewer3());
|
||||
if(StringUtils.isNotEmpty(string)) {
|
||||
visitor.setNextStepReviewer(string);
|
||||
if(StringUtils.isNotEmpty(visitor5.getReviewer())) {
|
||||
visitor.setNextStepReviewer(visitor5.getReviewer());
|
||||
}
|
||||
if(StringUtils.isEmpty(visitor.getNextStepReviewer())) {
|
||||
visitor.setNextStepReviewer(String.valueOf(visitor.getUserId()));
|
||||
@@ -890,7 +1128,7 @@ public class VisitorController extends BaseController {
|
||||
visitor.setState(examine.getExamine());
|
||||
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");
|
||||
sendWeCom(officialAccountVo.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
|
||||
|
||||
@@ -61,8 +61,15 @@ passwordPermission 密码权限 */
|
||||
|
||||
private Long ruleId;
|
||||
|
||||
private String rejectReason;
|
||||
|
||||
public String getRejectReason() {
|
||||
return rejectReason;
|
||||
}
|
||||
|
||||
public void setRejectReason(String rejectReason) {
|
||||
this.rejectReason = rejectReason;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
|
||||
@@ -201,6 +201,11 @@ public class Visitor extends BaseEntity {
|
||||
|
||||
private List<Visitor> visitor;
|
||||
|
||||
/**
|
||||
* 小程序审核链接的手机号
|
||||
**/
|
||||
private String telephone;
|
||||
|
||||
/**
|
||||
* 离开时间
|
||||
*/
|
||||
@@ -270,4 +275,13 @@ public class Visitor extends BaseEntity {
|
||||
* 园区
|
||||
*/
|
||||
private String park;
|
||||
|
||||
/** 当前审批节点 */
|
||||
private Integer currentNode;
|
||||
|
||||
/**
|
||||
* 审核理由
|
||||
*/
|
||||
private String rejectReason;
|
||||
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ public interface VisitorMapper
|
||||
|
||||
void updateVisitorReviewProcess(Visitor visitor);
|
||||
|
||||
String queryReviewProcess(Visitor visitor);
|
||||
Visitor queryReviewProcess(Visitor visitor);
|
||||
|
||||
int queryVisitorReviewProcessCount(Long id);
|
||||
|
||||
@@ -239,4 +239,10 @@ public interface VisitorMapper
|
||||
List<Visitor> selectAppVisitorList(Visitor visitor);
|
||||
|
||||
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);
|
||||
|
||||
String queryReviewProcess(Visitor visitor);
|
||||
Visitor queryReviewProcess(Visitor visitor);
|
||||
|
||||
int queryVisitorReviewProcessCount(Long id);
|
||||
|
||||
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;
|
||||
|
||||
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.enums.ExamineEnum;
|
||||
import com.dcsoft.common.core.exception.ServiceException;
|
||||
import com.dcsoft.common.core.utils.CollUtil;
|
||||
import com.dcsoft.common.core.web.page.TableDataInfoPage;
|
||||
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.domain.SysFile;
|
||||
import com.dcsoft.system.api.model.LoginUser;
|
||||
import com.dcsoft.system.domain.SysBlackList;
|
||||
import com.dcsoft.system.domain.SysBranch;
|
||||
import com.dcsoft.system.domain.SysManageRecord;
|
||||
@@ -31,10 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
import javax.annotation.Resource;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.dcsoft.common.core.utils.PageUtils.startPage;
|
||||
@@ -63,6 +64,8 @@ public class VisitorServiceImpl implements IVisitorService {
|
||||
@Value("${system.type}")
|
||||
public String systemType;
|
||||
|
||||
@Value("${qd.url:http://}")
|
||||
public String qdUrl;
|
||||
/**
|
||||
* 卡权限创建接口
|
||||
*/
|
||||
@@ -138,6 +141,8 @@ public class VisitorServiceImpl implements IVisitorService {
|
||||
*/
|
||||
@Override
|
||||
public int insertVisitor(Visitor visitor) {
|
||||
visitor.setExamineState(ExamineEnum.IN_REVIEW.getCode());
|
||||
visitor.setCurrentNode(1);
|
||||
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
|
||||
public String queryReviewProcess(Visitor visitor) {
|
||||
public Visitor queryReviewProcess(Visitor 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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user