From cc25879c0f5ce61e9185a8034ea9575921984c42 Mon Sep 17 00:00:00 2001
From: lishuai <260038442@qq.com>
Date: 星期四, 14 十二月 2023 17:48:39 +0800
Subject: [PATCH] 门禁设备列表
---
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 254 ++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 222 insertions(+), 32 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 041f876..c3f0a31 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
@@ -4,10 +4,18 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.HKTools;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.VisitAppointmentCancelRequest;
+import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
+import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
+import com.doumee.core.haikang.service.HKService;
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.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.MemberMapper;
@@ -25,9 +33,11 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.DigestUtils;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -63,7 +73,41 @@
* @return
*/
@Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
public Integer createFk(Visits visits) {
+ isValidBaseParam(visits);
+ //妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰
+ ProblemLog problemLog = isValidProblemLog(visits);
+ //鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
+ String[] hkIds = getHkDeviceRoles(visits);
+ //妫�楠屾嫓璁夸汉鏄惁鍚堟硶
+ isValideVisitedUser(visits.getReceptMemberId());
+ if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
+ }
+ Date date = new Date();
+ //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�),鍖呮嫭闅忚浜哄憳鏍¢獙鍜屽鐞�
+ Member member =dealMemberAndVisits(visits);
+ //鍒濆鍖栬瀹俊鎭�
+ initVisitInfo(visits,date);
+ //鍙戣捣ERP瀹℃壒鐢宠
+ String erpid = startSendErpCheck(visits);
+ if(StringUtils.isNotBlank(erpid)){
+ visits.setErpId(erpid);
+ }else{
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鍙戣捣鎷滆瀹℃壒鐢宠澶辫触锛�");
+ }
+ visitsMapper.insert(visits);
+ initWithVisitInfo(visits);
+ updateProblemLog(visits,problemLog,member);
+ return visits.getId();
+ }
+
+ /**
+ * 鏍¢獙蹇呭~椤规暟鎹槸鍚﹀悎娉�
+ * @param visits
+ */
+ private void isValidBaseParam(Visits visits) {
if(visits.getStarttime() == null
|| visits.getEndtime() == null
|| StringUtils.isBlank(visits.getReason())
@@ -75,44 +119,190 @@
|| 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(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
+ if(visits.getStarttime().getTime() < System.currentTimeMillis()){
+ 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();
+ if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂达紒");//
+ }
+ }
+ private void isValidWithVisitParam(Visits visits, List<Member> addList, List<Member> updateList) {
+ if( StringUtils.isBlank( visits.getName())
+ || StringUtils.isBlank( visits.getPhone())
+ || visits.getIdcardType() == null
+ || StringUtils.isBlank( visits.getFaceImg() )
+ || StringUtils.isBlank( visits.getIdcardNo() )
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+ }
+ if(visits.getStarttime().getTime() < System.currentTimeMillis()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害寮�濮嬫椂闂村繀椤诲ぇ浜庡綋鍓嶆椂闂达紒");//
+ }
+ if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂达紒");//
+ }
+ if(isRepeatedMember(visits,addList,updateList)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鎵嬫満鍙锋垨韬唤璇佸彿鍑虹幇閲嶅鏁版嵁锛岃淇敼鍚庨噸鏂版彁浜わ紒");//
+ }
}
- private Member getMemberByIdcardno(Visits idcardNo) {
- Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
-// .eq(Member::getType,Constants.MEMBER_TYPE)
- .eq(Member::getIdcardNo,idcardNo.getIdcardNo())
- );
+ private boolean isRepeatedMember(Visits visits, List<Member> addList, List<Member> updateList) {
+ if(addList.size()>0){
+ for(Member m :addList){
+ if(StringUtils.equals(visits.getPhone(), m.getPhone()) || StringUtils.equals(visits.getIdcardNo(), m.getIdcardDecode())){
+ return true;
+ }
+ }
+ }
+ if(updateList.size()>0){
+ for(Member m :updateList){
+ if(StringUtils.equals(visits.getPhone(), m.getPhone()) || StringUtils.equals(visits.getIdcardNo(), m.getIdcardDecode())){
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private void initWithVisitInfo(Visits visits) {
+ if(visits.getWithUserList()!=null && visits.getLwWithUserList().size()>0){
+ for(Visits v :visits.getWithUserList()){
+ v.setParentId(visits.getId());
+ v.setStarttime(visits.getStarttime());
+ v.setEndtime(visits.getEndtime());
+ v.setIsdeleted(Constants.ZERO);
+ v.setCreateDate(visits.getCreateDate());
+ v.setErpId(visits.getErpId());
+ v.setHkStatus(Constants.ZERO);
+ v.setStatus(Constants.ZERO);
+ }
+ //鎵归噺鎻掑叆鏁版嵁
+ visitsMapper.insertBatchSomeColumn(visits.getWithUserList());
+ }
+ }
+
+ private void initVisitInfo(Visits visits,Date date) {
+ visits.setHkStatus(Constants.ZERO);//鏈悓姝�
+ visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo()));
+ visits.setStatus(Constants.ZERO);//寰呭鎵�
+ visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//韬唤璇佸彿鍔犲瘑
+ //韬唤璇佸彿瀛樺偍瀵嗘枃
+ visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//鑴辨晱鎵嬫満鍙�
+ visits.setCreateDate(date);
+ }
+
+ private String startSendErpCheck(Visits visits) {
return null;
}
+ private String visitAppiontment(Visits visits) {
+ VisitAppointmentRequest param = new VisitAppointmentRequest();
+ param.setVisitStartTime(DateUtil.getISO8601Timestamp(visits.getStarttime()));
+ param.setVisitEndTime(DateUtil.getISO8601Timestamp(visits.getStarttime()));
+ BaseResponse<VisitAppointmentResponse> res = HKService.visitAppiontment(param);
+ if(res==null || !StringUtils.equals(res.getCode(), HKConstants.RESPONSE_SUCCEE) || res.getData()==null){
+ //濡傛灉鍙戣捣棰勭害澶辫触
+ visits.setStatus(Constants.VisitStatus.xfFail);
+ }else{
+ visits.setStatus(Constants.VisitStatus.xfSuccess);
+ visits.setHkStatus(Constants.ONE);
+ visits.setHkId(res.getData().getAppointRecordId());
+ }
+ visits.setHkDate(visits.getCheckDate());
+ return res.getData().getAppointRecordId();
+ }
+
+ /**
+ * 璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�),鍖呮嫭闅忚浜哄憳鏍¢獙鍜屽鐞�
+ * @param visits
+ * @return
+ */
+ private Member dealMemberAndVisits(Visits visits ) {
+ if(StringUtils.isNotBlank(visits.getOpenid())){
+ //鍏堟竻绌哄師鏈夎瀹㈢殑openid缁戝畾鍏崇郴
+ memberMapper.update(null, new UpdateWrapper<Member>().lambda()
+ .eq(Member::getType,Constants.memberType.visitor)
+ .eq(Member::getOpenid,visits.getOpenid())
+ .set(Member::getOpenid,null)
+ );
+ }
+ List<Member> addList = new ArrayList<>();
+ List<Member> editList = new ArrayList<>();
+ //鐢宠浜轰俊鎭�
+ Member m = getMemberListParam(visits.getIdcardNo(),visits,addList,editList);
+ //闅忚浜哄憳淇℃伅澶勭悊
+ if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){
+ for(Visits model:visits.getWithUserList()){
+ //鏍¢獙闅忚浜哄憳濉姤鏁版嵁鍚堟硶鎬�
+ isValidWithVisitParam(model,addList,editList);
+ model.setCreateDate(visits.getCreateDate());
+ getMemberListParam(model.getIdcardNo(),visits,addList,editList);
+ }
+ }
+ return m;
+ }
+
+ private Member getMemberListParam(String cardno, Visits visits, List<Member> addList, List<Member> editList) {
+ if(!Constants.checkCarNo(visits.getCarNos())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝杞︾墝鍙枫��"+visits.getCarNos()+"銆戜笉鍚堟硶锛岃鏍稿疄鍚庨噸璇晘");
+ }
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+ .eq(Member::getType,Constants.memberType.visitor)
+ .eq(Member::getIdcardType,visits.getIdcardType())
+ .eq(Member::getIdcardNo,visits.getIdcardNo()).last("limit 1" )
+ );
+ if(member == null){
+ //濡傛灉鐢ㄦ埛涓嶅瓨鍦紝鍒欐柊澧�
+ member.setCreateDate(visits.getCreateDate());
+ member.setIsdeleted(Constants.ZERO);
+ member.setIdcardNo(visits.getIdcardNo());
+ member.setIdcardDecode(visits.getIdcardDecode());
+ member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//韬唤璇佸彿鍔犲瘑
+ member.setIdcardDecode(Constants.getTuominStr(cardno));//鑴辨晱鎵嬫満鍙�
+ member.setName(visits.getName());
+ member.setPhone(visits.getPhone());
+ member.setOpenid(visits.getOpenid());
+ member.setType(Constants.memberType.visitor);
+ member.setStatus(Constants.ZERO);
+ member.setSex(visits.getSex());
+ // 鏂板璁垮璁板綍
+ addList.add(member);
+ }else{
+ if(!Constants.equalsInteger(Constants.ZERO,member.getStatus() )){
+ //濡傛灉鐢ㄦ埛鐘舵�佸紓甯革紝鍒欐彁绀�
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ヨ韩浠借瘉鍙疯绂佹璁块棶鐢宠锛屽鏈夌枒闂紝璇疯仈绯绘偍鐨勬嫓璁夸汉杩涜鏍稿疄");
+ }
+ //鏍告煡棰勭害鐢ㄦ埛鏄惁瀛樺湪鏈绂荤殑棰勭害璁板綍
+ isExsitNoOutVisisRecord(member);
+ member.setEditDate(visits.getCreateDate());
+ member.setIsdeleted(Constants.ZERO);
+ member.setIdcardNo(visits.getIdcardNo());
+ member.setIdcardDecode(visits.getIdcardDecode());
+ member.setName(visits.getName());
+ member.setPhone(visits.getPhone());
+ member.setOpenid(visits.getOpenid());
+ member.setSex(visits.getSex());
+ // 鏇存柊璁垮淇℃伅,
+ editList.add(member);
+ }
+ return member;
+ }
+
+ /**
+ * 鏍告煡棰勭害鐢ㄦ埛鏄惁瀛樺湪鏈绂荤殑棰勭害璁板綍
+ * @param member
+ */
+ private void isExsitNoOutVisisRecord(Member member) {
+ Visits v = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
+ .eq(Visits::getPhone, member.getPhone())
+ .eq(Visits::getStatus,Constants.VisitStatus.xfSuccess)
+ .last(" limit 1" )
+ );
+ if(v !=null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎵嬫満鍙枫��"+member.getPhone()+"銆戝瓨鍦ㄦ湭绛剧棰勭害鐢宠锛屼笉鑳介噸澶嶇敵璇峰摝锛�");
+ }
+ }
+
private List<Member> isValideWithUsers(List<Visits> withUserList) {
if(withUserList!= null && withUserList .size()>0){
for(Visits model:withUserList){
--
Gitblit v1.9.3