兴安访客小程序访客改造

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.MatterEnum;
import com.dcsoft.common.core.enums.exception.CommonExceptionEnum; import com.dcsoft.common.core.enums.exception.CommonExceptionEnum;
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.SpringUtils; import com.dcsoft.common.core.utils.SpringUtils;
import com.dcsoft.common.core.utils.poi.ExcelUtil; import com.dcsoft.common.core.utils.poi.ExcelUtil;
import com.dcsoft.common.core.utils.uuid.IdUtils; import com.dcsoft.common.core.utils.uuid.IdUtils;
@@ -302,37 +303,46 @@ public class VisitorController extends BaseController {
throw new ServiceException("您输入的开始时间不能大于结束时间"); 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) { List<String> phones = visitors.stream().map(Visitor::getPhone).collect(Collectors.toList());
throw new ServiceException("您已预约"); 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()); // checkPhoto(visitor.getAvatar(), visitor.getName());
log.info("新增访客信息:{}", visitor); log.info("新增访客信息:{}", visitors);
int i = visitorService.insertVisitor(visitor); for (Visitor visitor1 : visitors) {
List<Visitor> itemList = visitor.getItemList(); visitorService.insertVisitor(visitor1);
// 随访人员
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);
}
} }
// 保存附件 // 保存附件
@@ -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()); SysPeople sysPeople = sysPeopleService.selectSysPeopleByUserId(visitor.getUserId());
log.info("审核通知链接:{}", appletLink); // log.info("审核通知链接:{}", appletLink);
sendWeCom(sysPeople.getPhone(), appletLink + " --访客姓名:" + visitor.getName()); // sendWeCom(sysPeople.getPhone(), appletLink + " --访客姓名:" + visitor.getName());
// 访客审核 // 访客审核
SysBranch sysBranch = sysBranchService.selectSysBranchById(visitor.getDeptId()); // SysBranch sysBranch = sysBranchService.selectSysBranchById(visitor.getDeptId());
if(sysBranch != null && Constants.ZERO.equals(sysBranch.getIsExamine())) { // if(sysBranch != null && Constants.ZERO.equals(sysBranch.getIsExamine())) {
VisVisitorExamine examine = new VisVisitorExamine(); // VisVisitorExamine examine = new VisVisitorExamine();
examine.setExamine(Constants.ZERO); // examine.setExamine(Constants.ZERO);
visitor.setExamine(examine); // visitor.setExamine(examine);
updateVisitorExamine(visitor); // updateVisitorExamine(visitor);
} // }
return toAjax(i); return toAjax(true);
} }
/** /**

View File

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

View File

@@ -255,4 +255,19 @@ public class Visitor extends BaseEntity {
* 来访事由名称 * 来访事由名称
*/ */
private String MatterName; 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.SysPeople;
import com.dcsoft.system.domain.vo.SysFileVo; import com.dcsoft.system.domain.vo.SysFileVo;
import com.dcsoft.system.visitor.domain.*; import com.dcsoft.system.visitor.domain.*;
import org.apache.ibatis.annotations.Param;
/** /**
* 访客信息Mapper接口 * 访客信息Mapper接口
@@ -83,7 +84,7 @@ public interface VisitorMapper
*/ */
void updateVisitorPushType(List<Visitor> list); 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); 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 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.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -320,8 +322,8 @@ public class VisitorServiceImpl implements IVisitorService {
* 查询访客预约数 * 查询访客预约数
*/ */
@Override @Override
public int queryVisitor(Visitor visitor) { public int queryVisitorByCardCount(List<String> idcards) {
return visitorMapper.queryVisitor(visitor); return visitorMapper.queryVisitorByCardCount(idcards);
} }
/** /**
@@ -509,8 +511,8 @@ public class VisitorServiceImpl implements IVisitorService {
} }
@Override @Override
public int queryVisitorByIdCount(String phone) { public int queryVisitorByIdCount(List<String> phones) {
return visitorMapper.queryVisitorByIdCount(phone); return visitorMapper.queryVisitorByIdCount(phones);
} }
/** /**
@@ -565,7 +567,7 @@ public class VisitorServiceImpl implements IVisitorService {
public void saveDisconnect(List<Visitor> visitor) { public void saveDisconnect(List<Visitor> visitor) {
for (Visitor visitor1 : visitor) { for (Visitor visitor1 : visitor) {
log.info("保存断线数据:" + visitor1); log.info("保存断线数据:" + visitor1);
if (visitorMapper.queryVisitor(visitor1) > 0) { if (visitorMapper.queryVisitorByCardCount(Collections.singletonList(visitor1.getIdcard())) > 0) {
MultipartFile file = PictureUtils.base64ToMultipartFiles(visitor1.getAvatar()); MultipartFile file = PictureUtils.base64ToMultipartFiles(visitor1.getAvatar());
R<SysFile> sysFileR = fileService.uploadMinio1(file, "true"); R<SysFile> sysFileR = fileService.uploadMinio1(file, "true");
visitor1.setAvatar(sysFileR.getData().getUrl()); visitor1.setAvatar(sysFileR.getData().getUrl());
@@ -586,7 +588,7 @@ public class VisitorServiceImpl implements IVisitorService {
if (!CollectionUtils.isEmpty(itemList)) { if (!CollectionUtils.isEmpty(itemList)) {
for (Visitor item : itemList) { for (Visitor item : itemList) {
log.info("保存断线随访人数据:" + item); log.info("保存断线随访人数据:" + item);
if (visitorMapper.queryVisitor(item) > 0) { if (visitorMapper.queryVisitorByCardCount(Collections.singletonList(item.getIdcard())) > 0) {
MultipartFile file = PictureUtils.base64ToMultipartFiles(item.getAvatar()); MultipartFile file = PictureUtils.base64ToMultipartFiles(item.getAvatar());
R<SysFile> sysFileR = fileService.uploadMinio1(file, "true"); R<SysFile> sysFileR = fileService.uploadMinio1(file, "true");
item.setAvatar(sysFileR.getData().getUrl()); item.setAvatar(sysFileR.getData().getUrl());

View File

@@ -287,6 +287,9 @@
<if test="idCardEndTime != null">id_card_end_time,</if> <if test="idCardEndTime != null">id_card_end_time,</if>
<if test="idCardAddress != null">id_card_address,</if> <if test="idCardAddress != null">id_card_address,</if>
<if test="visitingUnit != null">visiting_unit,</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> <if test="userName != null">user_name,</if>
</trim> </trim>
@@ -320,6 +323,9 @@
<if test="idCardEndTime != null">#{idCardEndTime},</if> <if test="idCardEndTime != null">#{idCardEndTime},</if>
<if test="idCardAddress != null">#{idCardAddress},</if> <if test="idCardAddress != null">#{idCardAddress},</if>
<if test="visitingUnit != null">#{visitingUnit},</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> <if test="userName != null">#{userName},</if>
</trim> </trim>
@@ -586,11 +592,15 @@
</if> </if>
order by vv.create_time desc, id desc order by vv.create_time desc, id desc
</select> </select>
<select id="queryVisitor" resultType="java.lang.Integer"> <select id="queryVisitorByCardCount" resultType="java.lang.Integer">
select count(1) select count(1)
from vis_visitor from vis_visitor
where idcard = #{idcard} where out_time is null
and 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>
<select id="queryVisitorInfoById" resultType="com.dcsoft.system.visitor.domain.PersonnelInfoVo"> <select id="queryVisitorInfoById" resultType="com.dcsoft.system.visitor.domain.PersonnelInfoVo">
select idcard select idcard
@@ -729,8 +739,12 @@
<select id="queryVisitorByIdCount" resultType="java.lang.Integer"> <select id="queryVisitorByIdCount" resultType="java.lang.Integer">
select count(1) select count(1)
from vis_visitor from vis_visitor
where phone = #{phone} where out_time is null
and 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>
<select id="queryExportVisitorInfo" resultType="com.dcsoft.system.visitor.domain.Visitor"> <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 select vv.name, vv.phone, vv.start_time startTime, vv.end_time endTime, sp.name userName, vv.matter