兴安优化访客人脸机交互
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
package com.dcsoft.system.uniubi.domain;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.dcsoft.common.core.annotation.Excel;
|
||||
import com.dcsoft.common.core.web.domain.BaseEntity;
|
||||
import com.dcsoft.system.domain.SysBranch;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 人员管理对象 person
|
||||
*
|
||||
@@ -58,6 +61,17 @@ public class Person extends BaseEntity
|
||||
/** 人员类型 0:长期人员(默认),1:临时员工 2:黑名单用户,*/
|
||||
private int role=0;
|
||||
|
||||
|
||||
private List<JSONObject> rule;
|
||||
|
||||
public List<JSONObject> getRule() {
|
||||
return rule;
|
||||
}
|
||||
|
||||
public void setRule(List<JSONObject> rule) {
|
||||
this.rule = rule;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.dcsoft.system.domain.SysRule;
|
||||
import com.dcsoft.system.uniubi.domain.Person;
|
||||
import com.dcsoft.system.visitor.domain.Visitor;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -24,6 +25,9 @@ public interface ISysSdkService {
|
||||
//人员接口-人员删除(若删除多个人员,id 用英文逗号拼接,传入-1 则删除所有人员)
|
||||
String personDelete(String id, String ip, String pass);
|
||||
|
||||
//创建规则
|
||||
String ruleCreate(String id, String ip, String pass, Date startDate, Date endDate);
|
||||
|
||||
//人员接口-人员更新
|
||||
String personUpdate(Person person, String ip, String pass);
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.dcsoft.system.uniubi.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.dcsoft.system.domain.*;
|
||||
@@ -67,6 +70,28 @@ public class SysSdkServiceImpl implements ISysSdkService {
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ruleCreate(String ruleId, String ip, String pass, Date startTime, Date endTime) {
|
||||
String url = "http://" + ip + ":8090/rule/create";
|
||||
JSONObject paramMap = new JSONObject();
|
||||
paramMap.put("pass", pass);
|
||||
paramMap.put("ruleId", ruleId);
|
||||
paramMap.put("type", 1);
|
||||
List<String> segment = Arrays.asList("00:00:00", "23:59:59");
|
||||
Map<String, Object> dayMap = new HashMap<>();
|
||||
dayMap.put("segment", segment);
|
||||
dayMap.put("endAt", endTime.getTime());
|
||||
dayMap.put("startAt", startTime.getTime());
|
||||
Map<String, Object> contentMap = new HashMap<>();
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
list.add(dayMap);
|
||||
contentMap.put("day", list);
|
||||
contentMap.put("endAt", endTime.getTime());
|
||||
contentMap.put("startAt", startTime.getTime());
|
||||
paramMap.put("content", contentMap);
|
||||
return HttpUtil.postDataJson(url, paramMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String personUpdate(Person person, String ip, String pass) {
|
||||
String url="http://"+ip+":8090/person/update";
|
||||
@@ -217,6 +242,7 @@ public class SysSdkServiceImpl implements ISysSdkService {
|
||||
}
|
||||
paramMap.put("imgUrl",imgUrl);
|
||||
String response= HttpUtil.sendxwwwform(url,paramMap);
|
||||
log.info("imageCreateUrl:{}", response);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@@ -258,6 +258,7 @@ public class VisCarryStuffController extends BaseController {
|
||||
|
||||
//查询放行记录,确认保安是否已放行
|
||||
VisExitOutRecordVo visExitOutRecordVo = new VisExitOutRecordVo();
|
||||
visExitOutRecordVo.setExitId(id);
|
||||
List<VisExitOutRecordVo> visExitOutRecordVos = visExitOutRecordService.selectList(visExitOutRecordVo);
|
||||
if (CollUtil.isNotEmpty(visExitOutRecordVos)) {
|
||||
stuffVo.setIsRelease(1);
|
||||
|
||||
@@ -350,7 +350,7 @@ public class VisitorController extends BaseController {
|
||||
|
||||
//审核链接进来
|
||||
if (StringUtils.isNotBlank(telephone)) {
|
||||
// if (StringUtils.equals(visitor.getExamineState(), ExamineEnum.IN_REVIEW.getCode())) {
|
||||
if (StringUtils.equals(visitor.getExamineState(), ExamineEnum.IN_REVIEW.getCode())) {
|
||||
//查询当前点击审核链接的人员信息
|
||||
SysPeople sysPeople = sysPeopleService.queryPeopleName(telephone, null);
|
||||
|
||||
@@ -364,7 +364,7 @@ public class VisitorController extends BaseController {
|
||||
visitor.setExamineState(visitor1.getState());
|
||||
visitor.setRejectReason(visitor1.getRejectReason());
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> map = dictDataService.queryDictData("sys_company_type");
|
||||
@@ -509,18 +509,12 @@ public class VisitorController extends BaseController {
|
||||
|
||||
//判断访客和随访人是否存在预约过的信息
|
||||
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("访客中存在已预约访客");
|
||||
if (visitorService.addVisitorCheck(phones, visitor.getStartTime()) > 0) {
|
||||
throw new ServiceException("该时间段已有申请,请更换预约时间");
|
||||
}
|
||||
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
@@ -571,7 +565,7 @@ public class VisitorController extends BaseController {
|
||||
|
||||
//发送企微信息
|
||||
try {
|
||||
sendWeCom(sysPeople.getPhone(), url + " --访客姓名:" + visitor.getName());
|
||||
// sendWeCom(sysPeople.getPhone(), url + " --访客姓名:" + visitor.getName());
|
||||
} catch (Exception e) {
|
||||
log.error("访客add-sendWeCom异常:", e);
|
||||
}
|
||||
@@ -1055,16 +1049,19 @@ public class VisitorController extends BaseController {
|
||||
visitor2.setReviewer(String.valueOf(sysPeople.getId()));
|
||||
visitor2.setRejectReason(visitor.getRejectReason());
|
||||
visitor2.setState(ExamineEnum.PASSED.getCode());
|
||||
visitor2.setApproveNode(1);
|
||||
list.add(visitor2);
|
||||
Visitor visitor3 = new Visitor();
|
||||
visitor3.setId(visitor.getId());
|
||||
visitor3.setState(ExamineEnum.IN_REVIEW.getCode());
|
||||
visitor3.setReviewer(visitor.getReviewer2());
|
||||
visitor3.setApproveNode(2);
|
||||
list.add(visitor3);
|
||||
Visitor visitor4 = new Visitor();
|
||||
visitor4.setId(visitor.getId());
|
||||
visitor4.setState(ExamineEnum.IN_REVIEW.getCode());
|
||||
visitor4.setReviewer(visitor.getReviewer3());
|
||||
visitor4.setApproveNode(3);
|
||||
list.add(visitor4);
|
||||
//保存审核环节表
|
||||
visitorService.saveVisitorReviewProcessList(list);
|
||||
@@ -1072,6 +1069,7 @@ public class VisitorController extends BaseController {
|
||||
//二级审核人审核
|
||||
else if (visitor1.getCurrentNode() == 2) {
|
||||
visitor.setNextStepReviewer(visitor.getReviewer3());
|
||||
visitor.setApproveNode(2);
|
||||
visitorService.updateVisitorReviewProcess(visitor);
|
||||
}
|
||||
//如果有下一级审核人员,发送钉钉,企微审核消息链接
|
||||
@@ -1086,7 +1084,7 @@ public class VisitorController extends BaseController {
|
||||
log.info("approve发送审核链接:{}", url);
|
||||
|
||||
try {
|
||||
sendWeCom(nextPeople.getPhone(), url + " --访客姓名:" + visitor.getName());
|
||||
// sendWeCom(nextPeople.getPhone(), url + " --访客姓名:" + visitor.getName());
|
||||
} catch (Exception e) {
|
||||
log.error("访客approve-sendWeCom异常:", e);
|
||||
}
|
||||
@@ -1100,8 +1098,39 @@ public class VisitorController extends BaseController {
|
||||
visVisitorExamineService.insertVisVisitorExamine(examine);
|
||||
|
||||
//修改环节状态
|
||||
visitor.setApproveNode(3);
|
||||
visitorService.updateVisitorReviewProcess(visitor);
|
||||
|
||||
// 园区人脸下发到设备
|
||||
if (StringUtils.isEmpty(visitor1.getGuid())) {
|
||||
List<Visitor> listVisitorId = new ArrayList<>();
|
||||
Visitor s = deviceDistribute(visitor1, 1);
|
||||
Visitor visitor3 = new Visitor();
|
||||
visitor3.setGuid(s.getGuid());
|
||||
visitor3.setFaceGuid(s.getFaceGuid());
|
||||
visitor3.setId(visitor1.getId());
|
||||
//查询随访人员
|
||||
Visitor visitor11 = new Visitor();
|
||||
visitor11.setParentId(visitor1.getId());
|
||||
List<Visitor> visitors = visitorService.selectVisitorItemList(visitor11);
|
||||
if (!CollectionUtils.isEmpty(visitors)) {
|
||||
for (Visitor visitor2 : visitors) {
|
||||
Visitor visitorInfo = new Visitor();
|
||||
visitor2.setUserId(visitor1.getUserId());
|
||||
Visitor visitorId = deviceDistribute(visitor2, 2);
|
||||
visitorInfo.setId(visitor2.getId());
|
||||
visitorInfo.setGuid(visitorId.getGuid());
|
||||
visitorInfo.setFaceGuid(visitorId.getFaceGuid());
|
||||
listVisitorId.add(visitorInfo);
|
||||
}
|
||||
}
|
||||
listVisitorId.add(visitor3);
|
||||
log.info("更新访客人员信息到设备:{}", listVisitorId);
|
||||
visitorService.updateVisitorInfoGuid(listVisitorId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 同意后,给被访人和访客们发送审核结束短信
|
||||
List<String> phoneList = new ArrayList<>();
|
||||
phoneList.add(visitor.getPhone());
|
||||
@@ -1115,7 +1144,7 @@ public class VisitorController extends BaseController {
|
||||
log.info("approve-发同意短信:{}", JSON.toJSONString(phoneList));
|
||||
for (String phone : phoneList) {
|
||||
try {
|
||||
sendMessage(phone, "1", parkName, smsProperties.getTemplate2());
|
||||
// sendMessage(phone, "1", parkName, smsProperties.getTemplate2());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
@@ -1133,7 +1162,7 @@ public class VisitorController extends BaseController {
|
||||
visitorService.updateVisitorReviewProcess(visitor);
|
||||
|
||||
try {
|
||||
sendWeCom(telephone, visitor.getName() + "的访客审核已驳回");
|
||||
// sendWeCom(telephone, visitor.getName() + "的访客审核已驳回");
|
||||
} catch (Exception e) {
|
||||
log.error("访客approve-sendWeCom驳回异常:", e);
|
||||
}
|
||||
@@ -1141,7 +1170,7 @@ public class VisitorController extends BaseController {
|
||||
|
||||
log.info("approve-发拒绝短信:{}", visitor.getPhone());
|
||||
try {
|
||||
sendMessage(visitor.getPhone(), "1", parkName, smsProperties.getTemplate3());
|
||||
// sendMessage(visitor.getPhone(), "1", parkName, smsProperties.getTemplate3());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
@@ -1466,6 +1495,80 @@ public class VisitorController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 园区人脸设备下发
|
||||
*/
|
||||
private Visitor deviceDistribute(Visitor visitor,Integer type) {
|
||||
// 查询被访人授权记录
|
||||
Visitor s = new Visitor();
|
||||
SysEquipment equipment = new SysEquipment();
|
||||
equipment.setFlag("0");
|
||||
equipment.setIsCj("0");
|
||||
equipment.setProductId(3L);
|
||||
List<SysEquipment> equipList = equipmentService.selectSysEquipmentList(equipment);
|
||||
String guid = IdUtils.simpleUUID();
|
||||
String faceId = IdUtils.simpleUUID();
|
||||
s.setGuid(guid);
|
||||
s.setFaceGuid(faceId);
|
||||
//通过规则获取绑定设备信息
|
||||
for (SysEquipment e : equipList) {
|
||||
//将人员信息下发到设备
|
||||
Person person = new Person();
|
||||
person.setName(visitor.getName());
|
||||
person.setPhone(visitor.getPhone());
|
||||
person.setId(guid);
|
||||
//添加人员规则
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("ruleId", type == 1 ? "vis_" + visitor.getId() : "vis_" + visitor.getParentId());
|
||||
JSONObject jsonObject2 = new JSONObject();
|
||||
jsonObject2.put("timezoneRule", jsonObject);
|
||||
List<JSONObject> objects = new ArrayList<>();
|
||||
objects.add(jsonObject2);
|
||||
person.setRule(objects);
|
||||
|
||||
String ip = e.getIp();
|
||||
String pass = e.getPassword();
|
||||
//添加临时规则
|
||||
if(type == 1) {
|
||||
String s1 = sdkService.ruleCreate(jsonObject.getString("ruleId"), ip, pass, visitor.getStartTime(), visitor.getEndTime());
|
||||
JSONObject jsonObject1 = JSONObject.parseObject(s1);
|
||||
if (!StringUtils.equals("LAN_SUS-0", jsonObject1.getString("code"))) {
|
||||
log.error("临时访客创建规则下发失败visitorId:{},ip:{}", visitor.getId(), e.getIp());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//创建人员
|
||||
String s2 = sdkService.personCreate(person, ip, pass);
|
||||
JSONObject jsonObject3 = JSONObject.parseObject(s2);
|
||||
if (!StringUtils.equals("LAN_SUS-0", jsonObject3.getString("code"))) {
|
||||
log.error("临时访客创建人员下发失败visitorId:{},ip:{}", visitor.getId(), e.getIp());
|
||||
continue;
|
||||
}
|
||||
//设置人员有效期
|
||||
String s3 = sdkService.permissionsCreate(guid, DateUtil.format(visitor.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), ip, pass);
|
||||
JSONObject jsonObject4 = JSONObject.parseObject(s3);
|
||||
if (!StringUtils.equals("LAN_SUS-0", jsonObject4.getString("code"))) {
|
||||
log.error("临时访客设置人员有效期下发失败visitorId:{},ip:{}", visitor.getId(), e.getIp());
|
||||
}
|
||||
//设置人脸图片
|
||||
if (StringUtils.isNotEmpty(visitor.getAvatar())) {
|
||||
String s4 = sdkService.imageCreateUrl(guid, faceId, visitor.getAvatar(), ip, pass);
|
||||
JSONObject jsonObject5 = JSONObject.parseObject(s4);
|
||||
if (!StringUtils.equals("LAN_SUS-0", jsonObject5.getString("code"))) {
|
||||
log.error("临时访客设置人员图片下发失败visitorId:{},ip:{}", visitor.getId(), e.getIp());
|
||||
}
|
||||
}
|
||||
//保存下发记录
|
||||
SysPeopleEquipment sysPeopleEquipment = new SysPeopleEquipment();
|
||||
sysPeopleEquipment.setVisitorId(visitor.getId());
|
||||
sysPeopleEquipment.setEquipmentId(e.getId());
|
||||
sysPeopleEquipment.setGuid(guid);
|
||||
sysPeopleEquipment.setFaceGuid(faceId);
|
||||
peopleEquipmentService.insertSysPeopleEquipment(sysPeopleEquipment);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* 园区人脸设备下发
|
||||
*/
|
||||
@@ -1476,7 +1579,6 @@ public class VisitorController extends BaseController {
|
||||
SysRule rule = sysRuleService.selectSysRuleById(sysManageRecord.getRuleId());
|
||||
String[] pointIds = rule.getPointId().split(",");
|
||||
List<SysEquipment> equipList = new ArrayList<>();
|
||||
if (pointIds != null) {
|
||||
for (String point : pointIds) {
|
||||
SysEquipment equipment = new SysEquipment();
|
||||
equipment.setPointId(Long.parseLong(point));
|
||||
@@ -1486,13 +1588,11 @@ public class VisitorController extends BaseController {
|
||||
List<SysEquipment> equipmentDtoList = equipmentService.selectSysEquipmentList(equipment);
|
||||
equipList.addAll(equipmentDtoList);
|
||||
}
|
||||
}
|
||||
String guid = IdUtils.simpleUUID();
|
||||
String faceId = IdUtils.simpleUUID();
|
||||
s.setGuid(guid);
|
||||
s.setFaceGuid(faceId);
|
||||
//通过规则获取绑定设备信息
|
||||
if (equipList != null) {
|
||||
for (SysEquipment e : equipList) {
|
||||
//将人员信息下发到设备
|
||||
Person person = new Person();
|
||||
@@ -1502,6 +1602,8 @@ public class VisitorController extends BaseController {
|
||||
String ip = e.getIp();
|
||||
String pass = e.getPassword();
|
||||
sdkService.personCreate(person, ip, pass);
|
||||
sdkService.permissionsCreate(guid, DateUtil.format(visitor.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), ip, pass);
|
||||
|
||||
if (StringUtils.isNotEmpty(visitor.getAvatar())) {
|
||||
sdkService.imageCreateUrl(guid, faceId, visitor.getAvatar(), ip, pass);
|
||||
}
|
||||
@@ -1514,7 +1616,6 @@ public class VisitorController extends BaseController {
|
||||
peopleEquipmentService.insertSysPeopleEquipment(sysPeopleEquipment);
|
||||
}
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
@@ -294,4 +294,9 @@ public class Visitor extends BaseEntity {
|
||||
*/
|
||||
private List<String> insurancePolicyList;
|
||||
|
||||
/**
|
||||
* vis_visitor_review_process表的审核节点
|
||||
*/
|
||||
private Integer approveNode;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.dcsoft.system.visitor.mapper;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.dcsoft.common.core.web.page.TableDataInfoPage;
|
||||
@@ -253,4 +254,6 @@ public interface VisitorMapper
|
||||
String queryReviewProcessOld(Visitor visitor);
|
||||
|
||||
void deleteVisitorReviewProcess(@Param("id") Long id);
|
||||
|
||||
int addVisitorCheck(@Param("phones") List<String> phones,@Param("startTime") Date startTime);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.dcsoft.system.visitor.service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.dcsoft.common.core.web.page.TableDataInfoPage;
|
||||
@@ -265,4 +266,6 @@ public interface IVisitorService
|
||||
String queryReviewProcessOld(Visitor visitor);
|
||||
|
||||
void cancel(Visitor visitor);
|
||||
|
||||
int addVisitorCheck(List<String> phones, Date startTime);
|
||||
}
|
||||
|
||||
@@ -818,4 +818,10 @@ public class VisitorServiceImpl implements IVisitorService {
|
||||
//删除流程环节信息
|
||||
visitorMapper.deleteVisitorReviewProcess(visitor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addVisitorCheck(List<String> phones, Date startTime) {
|
||||
return visitorMapper.addVisitorCheck(phones, startTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -380,13 +380,25 @@
|
||||
</if>)
|
||||
</insert>
|
||||
<insert id="saveVisitorReviewProcessList">
|
||||
insert into vis_visitor_review_process (id, visitor_id, reviewer, state, reject_reason)
|
||||
insert into vis_visitor_review_process (id, visitor_id, reviewer, state, reject_reason, approve_node)
|
||||
VALUES
|
||||
<foreach collection="list" item="i" index="index" separator=",">
|
||||
(REPLACE(uuid(), '-', ''), #{i.id}, #{i.reviewer}, #{i.state}, #{i.rejectReason})
|
||||
(REPLACE(uuid(), '-', ''), #{i.id}, #{i.reviewer}, #{i.state}, #{i.rejectReason}, #{i.approveNode})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="addVisitorCheck" resultType="java.lang.Integer">
|
||||
select
|
||||
count(*)
|
||||
from vis_visitor
|
||||
where
|
||||
end_time <![CDATA[ >= ]]> #{startTime}
|
||||
and phone in
|
||||
<foreach item="phone" collection="phones" open="(" separator="," close=")">
|
||||
#{phone}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<update id="updateVisitor" parameterType="Visitor">
|
||||
update vis_visitor
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
@@ -521,6 +533,9 @@
|
||||
<if test="reviewer != null and reviewer != ''">
|
||||
and reviewer = #{reviewer}
|
||||
</if>
|
||||
<if test="approveNode != null">
|
||||
and approve_node = #{approveNode}
|
||||
</if>
|
||||
</update>
|
||||
<update id="updateVisitorByParentId">
|
||||
update vis_visitor
|
||||
@@ -885,6 +900,8 @@
|
||||
<if test="reviewer != null and reviewer != ''">
|
||||
and reviewer = #{reviewer}
|
||||
</if>
|
||||
order by approve_node desc
|
||||
LIMIT 1
|
||||
</select>
|
||||
<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
|
||||
|
||||
Reference in New Issue
Block a user