From c30cfcc106111b8087691557ee8143f6be9c4e5d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 07 十二月 2023 15:21:35 +0800
Subject: [PATCH] 海康接口对接开发
---
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 186 insertions(+), 0 deletions(-)
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 8a2db93..041f876 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1,19 +1,35 @@
package com.doumee.service.business.impl;
+import cn.hutool.core.util.IdcardUtil;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.DeviceRoleMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.ProblemLogMapper;
import com.doumee.dao.business.VisitsMapper;
+import com.doumee.dao.business.model.DeviceRole;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.ProblemLog;
import com.doumee.dao.business.model.Visits;
import com.doumee.service.business.VisitsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.DigestUtils;
+import java.util.Arrays;
+import java.util.Date;
import java.util.List;
/**
@@ -26,13 +42,183 @@
@Autowired
private VisitsMapper visitsMapper;
+ @Autowired
+ private DeviceRoleMapper deviceRoleMapper;
+ @Autowired
+ private ProblemLogMapper problemLogMapper ;
+ @Autowired
+ private MemberMapper memberMapper ;
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
@Override
public Integer create(Visits visits) {
visitsMapper.insert(visits);
return visits.getId();
}
+ /**
+ * 鏅�氳瀹㈢敵璇�
+ * @param visits
+ * @return
+ */
+ @Override
+ public Integer createFk(Visits visits) {
+ if(visits.getStarttime() == null
+ || visits.getEndtime() == null
+ || StringUtils.isBlank(visits.getReason())
+ || StringUtils.isBlank( visits.getName())
+ || StringUtils.isBlank( visits.getPhone())
+ || visits.getIdcardType() == null
+ || StringUtils.isBlank( visits.getFaceImg() )
+ || StringUtils.isBlank( visits.getIdcardNo() )
+ || visits.getReceptMemberId() == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+ }
+ //妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰
+ ProblemLog problemLog = isValidProblemLog(visits);
+ //鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
+ String[] hkIds = getHkDeviceRoles(visits);
+ //妫�楠屾嫓璁夸汉鏄惁鍚堟硶
+ isValideVisitedUser(visits.getReceptMemberId());
+ //妫�鏌ラ殢璁夸汉鍛樻槸鍚﹀悎娉�,鐢熸垚闅忚浜哄憳鏂板闆嗗悎
+ List<Member> withUsers = isValideWithUsers(visits.getWithUserList());
+
+ if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
+ }
+ Date date = new Date();
+
+ visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo()));
+ //韬唤璇佸彿瀛樺偍瀵嗘枃
+ visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//韬唤璇佸彿鍔犲瘑
+ visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//鑴辨晱鎵嬫満鍙�
+ visits.setCreateDate(date);
+
+ //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�)
+ Member member = getMemberByIdcardno(visits);
+ visitsMapper.insert(visits);
+
+
+ updateProblemLog(visits,problemLog,member);
+
+ return visits.getId();
+ }
+
+ private Member getMemberByIdcardno(Visits idcardNo) {
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+// .eq(Member::getType,Constants.MEMBER_TYPE)
+ .eq(Member::getIdcardNo,idcardNo.getIdcardNo())
+ );
+ return null;
+ }
+
+ private List<Member> isValideWithUsers(List<Visits> withUserList) {
+ if(withUserList!= null && withUserList .size()>0){
+ for(Visits model:withUserList){
+
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * 濡傛灉鏈夌瓟棰樿褰曪紝鏇存柊绛旈璁板綍鍏宠仈鏁版嵁
+ * @param visits
+ * @param problemLog
+ * @param member
+ */
+
+ private void updateProblemLog(Visits visits, ProblemLog problemLog,Member member) {
+ if(problemLog!=null){
+ problemLog.setEditDate(visits.getCreateDate());
+ problemLog.setName(visits.getName());
+ problemLog.setUserId(member.getId());
+ problemLog.setPhone(member.getPhone());
+ problemLog.setLogId(visits.getId());
+ problemLogMapper.updateById(problemLog);
+ }
+ }
+
+ /**
+ * 妫�鏌ヨ浜烘槸鍚﹀悎娉�
+ * @param receptMemberId
+ */
+ private Member isValideVisitedUser(Integer receptMemberId) {
+ Member member = memberMapper.selectById(receptMemberId);
+ if(member == null || Constants.equalsInteger(Constants.ZERO,member.getIsdeleted())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠锛�");
+ }
+ if(!Constants.equalsInteger(member.getStatus(), Constants.ZERO)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠.");
+ }
+ if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠~");
+ }
+ return member;
+ }
+
+ private ProblemLog isValidProblemLog(Visits visits) {
+ String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
+ if(StringUtils.equals(required,Constants.ONE+"")){
+ //濡傛灉蹇呴』绛旈锛屾煡鎵剧瓟棰樿褰�
+ if(visits.getUserAnswerId() == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰橈紒");
+ }
+ ProblemLog log = problemLogMapper.selectById(visits.getUserAnswerId());
+ if(log == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰�.");
+ }
+ if(log.getLogId() !=null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰榽");
+ }
+ return log;
+ }
+ return null;
+ }
+
+ /**
+ * 鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
+ * @param visits
+ * @return
+ */
+ private String[] getHkDeviceRoles(Visits visits) {
+ String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode();
+ List<DeviceRole> roles = null;
+ if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){
+ //濡傛灉蹇呴』閫夋嫨闂ㄧ锛屼絾鏈�夋嫨
+ if(StringUtils.isBlank(visits.getDoors())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨璁块棶闂ㄧ锛�");
+ }
+ //鏍¢獙闂ㄧ缁勪俊鎭槸鍚︽纭�
+ String[] dIds = visits.getDoors().split(",");
+ roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+ .eq(DeviceRole::getIsdeleted,Constants.ZERO)
+ .eq(DeviceRole::getType,Constants.DeviceRoleType.fk)
+ .in(DeviceRole::getId, Arrays.asList(dIds)));
+ if(roles == null || roles.size()==0 || roles.size() != dIds.length){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥璁块棶闂ㄧ锛�");
+ }
+ }else{
+ //濡傛灉璁剧疆涓嶉�夋嫨闂ㄧ锛屽垯鎻愪緵榛樿闂ㄧ缁勪俊鎭�
+ String[] dIds = visits.getDoors().split(",");
+ roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+ .eq(DeviceRole::getIsdeleted,Constants.ZERO)
+ .eq(DeviceRole::getIsDefault,Constants.ZERO)
+ .eq(DeviceRole::getType,Constants.DeviceRoleType.fk));
+ if(roles.size() ==0){
+
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏆備笉瀛樺湪鍙闂殑璁垮闂ㄧ锛屾棤娉曡繘琛岀敵璇锋搷浣滐紒");
+ }
+ }
+ String[] ids =new String[roles.size()];
+ for (int i = 0; i < roles.size(); i++) {
+ ids[i] = roles.get(i).getHkId();
+ }
+ return ids;
+ }
+
@Override
public void deleteById(Integer id) {
visitsMapper.deleteById(id);
--
Gitblit v1.9.3