兴安访客小程序访客改造

This commit is contained in:
zc
2025-06-06 15:55:36 +08:00
parent 5761742c5a
commit 9ee1897546
6 changed files with 92 additions and 50 deletions

View File

@@ -10,6 +10,7 @@ import com.dcsoft.common.core.enums.ExamineEnum;
import com.dcsoft.common.core.enums.MatterEnum;
import com.dcsoft.common.core.enums.exception.CommonExceptionEnum;
import com.dcsoft.common.core.exception.ServiceException;
import com.dcsoft.common.core.utils.CollUtil;
import com.dcsoft.common.core.utils.SpringUtils;
import com.dcsoft.common.core.utils.poi.ExcelUtil;
import com.dcsoft.common.core.utils.uuid.IdUtils;
@@ -302,37 +303,46 @@ public class VisitorController extends BaseController {
throw new ServiceException("您输入的开始时间不能大于结束时间");
}
if (visitorService.queryVisitorByIdCount(visitor.getPhone()) > 0) {
throw new ServiceException("该手机号已存在访客预约信息");
//判断访客和随访人是否存在预约过的信息
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("您输入的随访人员手机号格式不正确");
}
item.setParentId(visitor.getId());
item.setSource(Constants.ONE);
item.setUserId(visitor.getUserId());
item.setDeptId(visitor.getDeptId());
item.setFlag(visitor.getFlag());
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);
}
}
if (visitorService.queryVisitor(visitor) > 0) {
throw new ServiceException("您已预约");
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("新增访客信息:{}", visitor);
int i = visitorService.insertVisitor(visitor);
List<Visitor> itemList = visitor.getItemList();
// 随访人员
if (!CollectionUtils.isEmpty(itemList)) {
for (Visitor item : itemList) {
if (!validatePhoneNumber(item.getPhone())) {
throw new ServiceException("您输入的随访人员手机号格式不正确");
}
// 校验图片
// checkPhoto(item.getAvatar(), item.getName());
item.setParentId(visitor.getId());
item.setSource(Constants.ONE);
item.setUserId(visitor.getUserId());
item.setDeptId(visitor.getDeptId());
item.setCreateTime(visitor.getCreateTime());
item.setStartTime(visitor.getStartTime());
item.setEndTime(visitor.getEndTime());
visitorService.insertVisitor(item);
}
log.info("新增访客信息:{}", visitors);
for (Visitor visitor1 : visitors) {
visitorService.insertVisitor(visitor1);
}
// 保存附件
@@ -341,20 +351,20 @@ public class VisitorController extends BaseController {
}
// 审核通知企微发送消息(小程序来源)
String appletLink = getAppletLink(String.valueOf(visitor.getId()), "pages/visitor/visitor/examineIndex");
// 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());
// log.info("审核通知链接:{}", appletLink);
// sendWeCom(sysPeople.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
// 访客审核
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(i);
// 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);
}
/**

View File

@@ -133,10 +133,10 @@ public class VisitorMachineController extends BaseController {
throw new ServiceException("姓名不能为空");
}
if (visitorService.queryVisitorByIdCount(visitor.getPhone()) > 0) {
if (visitorService.queryVisitorByIdCount(Collections.singletonList(visitor.getPhone())) > 0) {
throw new ServiceException("该手机号已存在访客预约信息");
}
if (visitorService.queryVisitor(visitor) > 0) {
if (visitorService.queryVisitorByCardCount(Collections.singletonList(visitor.getIdcard())) > 0) {
throw new ServiceException("您已预约");
}

View File

@@ -255,4 +255,19 @@ public class Visitor extends BaseEntity {
* 来访事由名称
*/
private String MatterName;
/**
* 审核状态 0通过1驳回2审核中4已取消5已失效
*/
private String examineState;
/**
* 申请类型 0:临时访客 1携物出门
*/
private String visitorType;
/**
* 园区
*/
private String park;
}

View File

@@ -8,6 +8,7 @@ import com.dcsoft.system.domain.SysManageRecord;
import com.dcsoft.system.domain.SysPeople;
import com.dcsoft.system.domain.vo.SysFileVo;
import com.dcsoft.system.visitor.domain.*;
import org.apache.ibatis.annotations.Param;
/**
* 访客信息Mapper接口
@@ -83,7 +84,7 @@ public interface VisitorMapper
*/
void updateVisitorPushType(List<Visitor> list);
int queryVisitor(Visitor visitor);
int queryVisitorByCardCount(@Param("idcards") List<String> idcards);
/**
*
@@ -187,7 +188,7 @@ public interface VisitorMapper
*/
VisitorRecordVo queryVisitorById(String phone);
int queryVisitorByIdCount(String phone);
int queryVisitorByIdCount(@Param("phones") List<String> phones);
/**
* 查询近七天的访客数据

View File

@@ -31,6 +31,8 @@ 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.stream.Collectors;
@@ -320,8 +322,8 @@ public class VisitorServiceImpl implements IVisitorService {
* 查询访客预约数
*/
@Override
public int queryVisitor(Visitor visitor) {
return visitorMapper.queryVisitor(visitor);
public int queryVisitorByCardCount(List<String> idcards) {
return visitorMapper.queryVisitorByCardCount(idcards);
}
/**
@@ -509,8 +511,8 @@ public class VisitorServiceImpl implements IVisitorService {
}
@Override
public int queryVisitorByIdCount(String phone) {
return visitorMapper.queryVisitorByIdCount(phone);
public int queryVisitorByIdCount(List<String> phones) {
return visitorMapper.queryVisitorByIdCount(phones);
}
/**
@@ -565,7 +567,7 @@ public class VisitorServiceImpl implements IVisitorService {
public void saveDisconnect(List<Visitor> visitor) {
for (Visitor visitor1 : visitor) {
log.info("保存断线数据:" + visitor1);
if (visitorMapper.queryVisitor(visitor1) > 0) {
if (visitorMapper.queryVisitorByCardCount(Collections.singletonList(visitor1.getIdcard())) > 0) {
MultipartFile file = PictureUtils.base64ToMultipartFiles(visitor1.getAvatar());
R<SysFile> sysFileR = fileService.uploadMinio1(file, "true");
visitor1.setAvatar(sysFileR.getData().getUrl());
@@ -586,7 +588,7 @@ public class VisitorServiceImpl implements IVisitorService {
if (!CollectionUtils.isEmpty(itemList)) {
for (Visitor item : itemList) {
log.info("保存断线随访人数据:" + item);
if (visitorMapper.queryVisitor(item) > 0) {
if (visitorMapper.queryVisitorByCardCount(Collections.singletonList(item.getIdcard())) > 0) {
MultipartFile file = PictureUtils.base64ToMultipartFiles(item.getAvatar());
R<SysFile> sysFileR = fileService.uploadMinio1(file, "true");
item.setAvatar(sysFileR.getData().getUrl());

View File

@@ -287,6 +287,9 @@
<if test="idCardEndTime != null">id_card_end_time,</if>
<if test="idCardAddress != null">id_card_address,</if>
<if test="visitingUnit != null">visiting_unit,</if>
<if test="examineState != null">examine_state,</if>
<if test="visitorType != null">visitor_type,</if>
<if test="park != null">park,</if>
<if test="userName != null">user_name,</if>
</trim>
@@ -320,6 +323,9 @@
<if test="idCardEndTime != null">#{idCardEndTime},</if>
<if test="idCardAddress != null">#{idCardAddress},</if>
<if test="visitingUnit != null">#{visitingUnit},</if>
<if test="examineState != null">#{examineState},</if>
<if test="visitorType != null">#{visitorType},</if>
<if test="park != null">#{park},</if>
<if test="userName != null">#{userName},</if>
</trim>
@@ -586,11 +592,15 @@
</if>
order by vv.create_time desc, id desc
</select>
<select id="queryVisitor" resultType="java.lang.Integer">
<select id="queryVisitorByCardCount" resultType="java.lang.Integer">
select count(1)
from vis_visitor
where idcard = #{idcard}
and out_time is null
where out_time is null
and examine_state in ('2','0')
and idcard in
<foreach item="idcard" collection="idcards" open="(" separator="," close=")">
#{idcard}
</foreach>
</select>
<select id="queryVisitorInfoById" resultType="com.dcsoft.system.visitor.domain.PersonnelInfoVo">
select idcard
@@ -729,8 +739,12 @@
<select id="queryVisitorByIdCount" resultType="java.lang.Integer">
select count(1)
from vis_visitor
where phone = #{phone}
and out_time is null
where out_time is null
and examine_state in ('2','0')
and phone in
<foreach item="phone" collection="phones" open="(" separator="," close=")">
#{phone}
</foreach>
</select>
<select id="queryExportVisitorInfo" resultType="com.dcsoft.system.visitor.domain.Visitor">
select vv.name, vv.phone, vv.start_time startTime, vv.end_time endTime, sp.name userName, vv.matter