From 797abb8e167b5277cede1533a1cc400572d10eb5 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 23 七月 2025 15:40:38 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 1192 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 1,053 insertions(+), 139 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 9b1818f..f4b8bb7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1,66 +1,73 @@
package com.doumee.service.business.impl;
-import cn.hutool.core.date.DateUnit;
-import cn.hutool.core.util.IdcardUtil;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.biz.system.SystemUserBiz;
+import com.doumee.config.DataSyncConfig;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.erp.ErpConstants;
import com.doumee.core.erp.ErpTool;
-import com.doumee.core.erp.model.openapi.request.VisitListRequest;
import com.doumee.core.erp.model.openapi.request.erp.ApproveAddRequest;
import com.doumee.core.erp.model.openapi.request.erp.UserInfoRequest;
-import com.doumee.core.erp.model.openapi.response.VisitEventListResponse;
import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse;
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.ParkReservationDelRequest;
import com.doumee.core.haikang.model.param.request.VisitAppointmentCancelRequest;
import com.doumee.core.haikang.model.param.request.VisitAppointmentOutRequest;
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.dao.*;
+import com.doumee.service.business.third.model.LoginUserInfo;
+import com.doumee.service.business.third.model.PageData;
+import com.doumee.service.business.third.model.PageWrap;
+import com.doumee.core.utils.*;
+import com.doumee.core.wx.wxPlat.WxPlatConstants;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
-import com.doumee.dao.admin.response.MemberInfoDTO;
+import com.doumee.dao.admin.response.InterestedListVO;
+import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
import com.doumee.dao.business.*;
+import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.join.DeviceJoinMapper;
-import com.doumee.dao.business.join.VisitEventJoinMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
+
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
+import com.doumee.dao.system.join.NoticesJoinMapper;
+import com.doumee.dao.system.model.Notices;
+import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.AuditApproveDTO;
import com.doumee.dao.web.reqeust.ErpVisitDTO;
import com.doumee.dao.web.reqeust.ErpWithVisitDTO;
import com.doumee.dao.web.reqeust.VisitRecordDTO;
-import com.doumee.dao.web.response.InternalHomeVO;
import com.doumee.dao.web.response.VisitDetailVO;
import com.doumee.dao.web.response.VisitRecordVO;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.InterfaceLogService;
+import com.doumee.service.business.SmsEmailService;
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 com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
+import com.doumee.service.business.third.EmayService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.DigestUtils;
-import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.Date;
import java.util.stream.Collectors;
/**
@@ -69,14 +76,19 @@
* @date 2023/11/30 15:33
*/
@Service
+@Slf4j
public class VisitsServiceImpl implements VisitsService {
@Autowired
private RetentionMapper retentionMapper;
@Autowired
- private VisitsMapper visitsMapper;
+ private VisitsJoinMapper visitsMapper;
+ @Autowired
+ private UserActionMapper userActionMapper;
@Autowired
private ApproveMapper approveMapper;
+ @Autowired
+ private NoticesJoinMapper noticesJoinMapper;
@Autowired
private ApproveParamMapper approveParamMapper;
@Autowired
@@ -92,15 +104,46 @@
@Autowired
private SystemDictDataBiz systemDictDataBiz;
@Autowired
+ private SystemUserBiz systemUserBiz;
+ @Autowired
private DeviceJoinMapper deviceJoinMapper;
@Autowired
private ErpTool erpTool;
@Autowired
+ private VisitParkMapper visitParkMapper;
+ @Autowired
private WxPlatNotice wxPlatNotice;
@Autowired
private InterfaceLogService interfaceLogService;
+ @Autowired
+ private DataSyncConfig dataSyncConfig;
+ @Autowired
+ private SmsEmailService smsEmailService;
+ @Autowired
+ private SystemUserMapper systemUserMapper;
+ @Autowired
+ private ApproveService approveService;
+ @Autowired
+ private InoutDayCountMapper inoutDayCountMapper;
+ @Autowired
+ private InoutRecordMapper inoutRecordMapper;
+ @Autowired
+ private CarEventMapper carEventMapper;
+
+ @Autowired
+ private SmsConfigMapper smsConfigMapper;
+
+ @Autowired
+ private SmsEmailMapper smsEmailMapper;
+
+ @Autowired
+ private WxNoticeConfigMapper wxNoticeConfigMapper;
+
+ @Autowired
+ private EmayService emayService;
+
@Override
@@ -131,12 +174,11 @@
if (erpVisitDTO.getEndtime().getTime() <= erpVisitDTO.getStarttime().getTime()) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂达紒");
}
- if (Constants.equalsInteger(Constants.ZERO, erpVisitDTO.getIdcardType()) && erpVisitDTO.getIdcardNo().length() != 18
+ if (StringUtils.isNotBlank(erpVisitDTO.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, erpVisitDTO.getIdcardType()) && erpVisitDTO.getIdcardNo().length() != 18
//&&!IdcardUtil.isValidCard(visits.getIdcardNo())
- ) {
+ ){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
}
-
Visits visits = new Visits();
//鏍规嵁琚闂汉ERP涓婚敭鏌ヨ绯荤粺鍐呬汉鍛樹富閿俊鎭�
Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
@@ -164,7 +206,7 @@
}
visits.setWithUserList(visitsList);
}
- this.createFk(visits,true);
+ this.createFk(visits,true,Constants.ONE);
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@@ -191,35 +233,54 @@
*/
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
- public Integer createFk(Visits visits,Boolean isERP) {
+ public Integer createFk(Visits visits,Boolean isERP,Integer source) {
+ visits.setId(null);
isValidBaseParam(visits);
//妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰
- ProblemLog problemLog = isValidProblemLog(visits);
+ ProblemLog problemLog = isValidProblemLog(visits,source);
//鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
getHkDeviceRoles(visits,isERP);
//妫�楠屾嫓璁夸汉鏄惁鍚堟硶
Member visitMember = isValideVisitedUser(visits.getReceptMemberId());
- if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&visits.getIdcardNo().length()!=18
- //&&!IdcardUtil.isValidCard(visits.getIdcardNo())
- ){
+ if(StringUtils.isNotBlank(visits.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())
+ &&visits.getIdcardNo().length()!=18 ){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
}
Date date = new Date();
//鍒涘缓鏃堕棿
visits.setCreateDate(date);
- //鏅�氳瀹�
- visits.setType(Constants.ONE);
//闅忚浜哄憳鏁伴噺
- visits.setMemberNum(CollectionUtils.isNotEmpty(visits.getWithUserList())?visits.getWithUserList().size():0);
- //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�),鍖呮嫭闅忚浜哄憳鏍¢獙鍜屽鐞�
- Member member =dealMemberAndVisits(visits);
+ visits.setMemberNum(Constants.ZERO);
+ //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄨ鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�),鍖呮嫭闅忚浜哄憳鏍¢獙鍜屽鐞�
+ Member member = dealMemberAndVisits(visits);
visits.setMemberId(member.getId());
visits.setVisitType(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode()));
//鍒濆鍖栬瀹俊鎭�
initVisitInfo(visits,date);
+
+// if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){
+// //浜鸿劯璇勫垎
+// FacePictureCheckRequest param = new FacePictureCheckRequest();
+// String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() +
+// systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+// param.setFacePicUrl(prefixUrl + visits.getFaceImg());
+// BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param);
+// if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+// }
+// FacePictureCheckResponse facePictureCheckResponse = response.getData();
+// if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
+// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+// }
+// if(!facePictureCheckResponse.getCheckResult()){
+// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
+// }
+// }
+ visits.setSendTimeOutNotice(Constants.ZERO);
visitsMapper.insert(visits);
+
//鍙戣捣ERP瀹℃壒鐢宠
- if(visits.getSourceType().equals(Constants.ZERO)){
+ if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ONE)){
String erpId = startSendErpCheck(visits,visitMember);
if(StringUtils.isNotBlank(erpId)){
visits.setErpId(erpId);
@@ -228,21 +289,69 @@
}else{
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鍙戣捣鎷滆瀹℃壒鐢宠澶辫触锛�");
}
- //鍙戦�佸井淇″叕浼楀彿閫氱煡
- wxPlatNotice.sendVisitAuditTemplateNotice(visits,
- systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(),
- systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode());
- }else{
- visits.setStatus(Constants.VisitStatus.pass);
+ }else if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
+ visits.setStatus(Constants.VisitStatus.waitCheck);
visitsMapper.updateById(visits);
+ approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId(),member);
+ }else{
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鍙戣捣鎷滆瀹℃壒鐢宠澶辫触锛�");
}
initWithVisitInfo(visits);
updateProblemLog(visits,problemLog,member);
+
+ //鍙戦�佸井淇″叕浼楀彿閫氱煡 - 鐢宠鎻愪氦鎴愬姛寰呭鏍�
+ if(StringUtils.isNotBlank(visits.getOpenid())){
+ WxPlatNotice wxPlatNotice = new WxPlatNotice();
+ wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz,
+ wxNoticeConfigMapper,visits,
+ Constants.equalsInteger(visits.getType(),Constants.TWO)?WxPlatConstants.visitReportContent.visitReportUpload:WxPlatConstants.visitContent.visitUpload,
+ Arrays.asList(visits.getOpenid().split(","))
+ );
+ }
//鍒涘缓瀹℃壒璁板綍
-// createApprove(visits,visitMember);
+ createApprove(visits,visitMember);
return visits.getId();
}
+
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public Integer visitReporting(Visits visits) {
+ visits.setSourceType(Constants.ZERO);
+ isValidBaseParam(visits);
+ //妫�楠岃鎷滆浜烘槸鍚﹀悎娉�
+ Member visitMember = isValideVisitedUser(visits.getMemberId());
+ Date date = new Date();
+ //鍒涘缓鏃堕棿
+ visits.setCreateDate(date);
+ //璁垮鎶ュ
+ visits.setIsdeleted(Constants.ZERO);
+ visits.setType(Constants.TWO);
+ visits.setReceptMemberId(visitMember.getId());
+ visits.setStatus(Constants.VisitStatus.waitCheck);
+ visits.setVisitType(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode()));
+ visits.setIdcardNo(DESUtil.decrypt(Constants.EDS_PWD, visitMember.getIdcardNo()));
+ //鍒濆鍖栬瀹俊鎭�
+// initVisitInfo(visits,date);
+ visitsMapper.insert(visits);
+ if(Objects.nonNull(visits.getLoginUserInfo())){
+ SystemUser systemUser = systemUserMapper.selectById(visits.getLoginUserInfo().getId());
+ if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getOpenid())){
+ WxPlatNotice wxPlatNotice = new WxPlatNotice();
+ wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz,
+ wxNoticeConfigMapper,visits,
+ Constants.equalsInteger(visits.getType(),Constants.TWO)?WxPlatConstants.visitReportContent.visitReportUpload:WxPlatConstants.visitContent.visitUpload,
+ Arrays.asList(systemUser.getOpenid().split(","))
+ );
+ }
+ }
+
+ approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId(),null);
+ return visits.getId();
+ }
+
+
+
/**
@@ -270,7 +379,7 @@
approve.setIsEndCheck(Constants.ZERO);
approve.setType(Constants.ZERO);
approve.setLevel(Constants.ONE);
- approve.setVisitId(visits.getId());
+ approve.setObjId(visits.getId());
approveMapper.insert(approve);
if(!CollectionUtils.isNotEmpty(approveIds)){
approve.setIsEndCheck(Constants.ONE);
@@ -305,8 +414,8 @@
if(approve.getStatus().equals(Constants.approveStatus.wait)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒璁板綍宸插鐞�!");
}
- Visits visits = visitsMapper.selectById(approve.getVisitId());
- if(Objects.isNull(visits)){
+ Visits visits = visitsMapper.selectById(approve.getObjId());
+ if(Objects.isNull(visits)||Constants.equalsInteger(visits.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!auditApproveDTO.getMemberId().equals(approve.getChekorId())){
@@ -327,7 +436,7 @@
if(approve.getApproveType().equals(Constants.ONE)){
//浼氱 鏌ヨ鏄惁鏄渶鍚庝竴鏉¤褰� 濡傛灉鏄渶鍚庝竴鏉¤褰� 鍒欑敓鎴愪笅绾у鎵硅褰� 濡傛灉鏄渶鍚庝竴绾э紝鍒欒繘琛屽鎵圭‘璁�
if(approveMapper.selectCount(new QueryWrapper<Approve>().lambda()
- .eq(Approve::getVisitId,visits.getId())
+ .eq(Approve::getObjId,visits.getId())
.eq(Approve::getLevel,approve.getLevel())
.ne(Approve::getId,approve.getId())
)<=Constants.ZERO){
@@ -348,7 +457,7 @@
.set(Approve::getStatus,Constants.approveStatus.otherDeal)
.set(Approve::getEditDate,new Date())
.set(Approve::getCheorId,auditApproveDTO.getMemberId())
- .eq(Approve::getVisitId,visits.getId())
+ .eq(Approve::getObjId,visits.getId())
.eq(Approve::getStatus,Constants.approveStatus.wait)
.ne(Approve::getId,approve.getId())
.eq(Approve::getLevel,approve.getLevel())
@@ -375,7 +484,7 @@
.set(Approve::getStatus,Constants.approveStatus.otherDeal)
.set(Approve::getEditDate,new Date())
.set(Approve::getCheorId,auditApproveDTO.getMemberId())
- .eq(Approve::getVisitId,visits.getId())
+ .eq(Approve::getObjId,visits.getId())
.eq(Approve::getStatus,Constants.approveStatus.wait)
.ne(Approve::getId,approve.getId())
.eq(Approve::getLevel,approve.getLevel())
@@ -413,10 +522,10 @@
approve.setTemplatId(approveParam.getId());
approve.setChekorId(Integer.valueOf(id));
approve.setType(Constants.ONE);
- approve.setVisitId(visitId);
+ approve.setObjId(visitId);
approveList.add(approve);
}
- approveMapper.insertBatchSomeColumn(approveList);
+ approveMapper.insert(approveList);
}
}
@@ -440,10 +549,10 @@
approve.setApproveType(approveParam.getApproveType());
approve.setChekorId(id);
approve.setType(Constants.ONE);
- approve.setVisitId(visitId);
+ approve.setObjId(visitId);
approveList.add(approve);
}
- approveMapper.insertBatchSomeColumn(approveList);
+ approveMapper.insert(approveList);
}
}
@@ -458,8 +567,7 @@
.eq(ApproveParam::getLevel,Constants.ONE)
.eq(ApproveParam::getMemberType,Constants.ZERO)
.last("limit 1"));
- return Objects.isNull(approveParam)?null:approveParam.getId();
-
+ return Objects.isNull(approveParam)?null:approveParam.getId();
}
@@ -573,18 +681,40 @@
|| StringUtils.isBlank( visits.getName())
|| StringUtils.isBlank( visits.getPhone())
|| StringUtils.isBlank( visits.getCompanyName())
- || visits.getIdcardType() == null
+ || Objects.isNull(visits.getType())
// || StringUtils.isBlank( visits.getFaceImg() )
- || StringUtils.isBlank( visits.getIdcardNo() )
|| visits.getReceptMemberId() == null){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
}
- if(visits.getEndtime().getTime() < System.currentTimeMillis()){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬褰撳墠鏃堕棿锛�");//
+ if(Constants.equalsInteger(visits.getType(),Constants.ZERO)
+ || Constants.equalsInteger(visits.getType(),Constants.ONE)){
+ if( visits.getIdcardType() == null
+ || StringUtils.isBlank(visits.getFaceImg()) ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+ }
+ }
+ //璁垮鎶ュ
+ if(Constants.equalsInteger(visits.getType(),Constants.TWO)
+ && (StringUtils.isBlank( visits.getName())
+ || StringUtils.isBlank( visits.getPhone())
+ || StringUtils.isBlank( visits.getCompanyName())
+ || StringUtils.isBlank( visits.getCarNos())
+ || Objects.isNull(visits.getReceptMemberId()))
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+ }else if(visits.getType().equals(Constants.ONE) && StringUtils.isBlank(visits.getConstructionReason())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈~鍐欐柦宸ヤ簨鐢憋紒");
}
if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂达紒");//
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绂诲巶鏃堕棿蹇呴』澶т簬鍏ュ巶鏃堕棿锛�");//
}
+ if(visits.getEndtime().getTime() <= System.currentTimeMillis()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍏ュ巶鏃堕棿蹇呴』澶т簬褰撳墠鏃堕棿锛�");//
+ }
+ if(!DateUtil.getDateLong(visits.getEndtime()).equals(DateUtil.getDateLong(visits.getStarttime()))){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害鏃ユ湡涓嶅彲浠ヨ法澶╋紒");
+ };
+
if(visits.getSourceType().equals(Constants.ZERO)){
String code = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VALIDATE_VISIT).getCode();
int codenum =0;
@@ -594,7 +724,6 @@
}
if(StringUtils.isNotBlank(code)&&!StringUtils.equals(code,"0")){
-// Integer betweenDays = Math.toIntExact(cn.hutool.core.date.DateUtil.between(visits.getEndtime(), visits.getStarttime(), DateUnit.DAY));
int betweenDays = DateUtil.daysBetweenDates11(visits.getEndtime(), visits.getStarttime())+1;
if( betweenDays > codenum){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害鎬诲ぉ鏁颁笉鑳借秴杩嘯"+code+"澶锛�");
@@ -664,7 +793,7 @@
v.setSourceType(visits.getSourceType());
}
//鎵归噺鎻掑叆鏁版嵁
- visitsMapper.insertBatchSomeColumn(visits.getWithUserList());
+ visitsMapper.insert(visits.getWithUserList());
}
}
@@ -767,49 +896,41 @@
List<Member> addList = new ArrayList<>();
List<Member> editList = new ArrayList<>();
//鐢宠浜轰俊鎭�
- Member m = getMemberListParam(visits.getIdcardNo(),visits,addList,editList);
+ Member m = getMemberListParam(visits.getPhone(),visits.getIdcardNo(),visits,addList,editList);
//闅忚浜哄憳淇℃伅澶勭悊
- if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){
- for(Visits model:visits.getWithUserList()){
- model.setBirthday(Constants.getBirthdyByCardNo(model.getIdcardNo()));
- model.setStarttime(visits.getStarttime());
- model.setEndtime(visits.getEndtime());
- //鏍¢獙闅忚浜哄憳濉姤鏁版嵁鍚堟硶鎬�
- isValidWithVisitParam(model,addList,editList);
- model.setCreateDate(visits.getCreateDate());
- Member visitsMember = getMemberListParam(model.getIdcardNo(),model,addList,editList);
- model.setMemberId(visitsMember.getId());
- }
- }
-
-// if(CollectionUtils.isNotEmpty(addList)){
-// memberMapper.insertBatchSomeColumn(addList);
+// if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){
+// for(Visits model:visits.getWithUserList()){
+// model.setBirthday(Constants.getBirthdyByCardNo(model.getIdcardNo()));
+// model.setStarttime(visits.getStarttime());
+// model.setEndtime(visits.getEndtime());
+// //鏍¢獙闅忚浜哄憳濉姤鏁版嵁鍚堟硶鎬�
+// isValidWithVisitParam(model,addList,editList);
+// model.setCreateDate(visits.getCreateDate());
+// Member visitsMember = getMemberListParam(model.getIdcardNo(),model,addList,editList);
+// model.setMemberId(visitsMember.getId());
+// }
// }
-// if(CollectionUtils.isNotEmpty(editList)){
-// editList.forEach(i->{
-// memberMapper.updateById(i);
-// });
-//
-// }
-
return m;
}
- private Member getMemberListParam(String cardno, Visits visits, List<Member> addList, List<Member> editList) {
+ private Member getMemberListParam(String phone,String cardno, Visits visits, List<Member> addList, List<Member> editList) {
if(StringUtils.isNotBlank(visits.getCarNos())
&&Objects.isNull(Constants.getVehiclePlateNo(visits.getCarNos()))
){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝杞︾墝鍙枫��"+visits.getCarNos()+"銆戜笉鍚堟硶锛岃鏍稿疄鍚庨噸璇晘");
}
- if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&cardno.length()!=18
- //&&!IdcardUtil.isValidCard(cardno)
- ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇併��"+cardno+"銆戝彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
- }
+
+// if(StringUtils.isNotBlank(cardno)&&Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&cardno.length()!=18
+// //&&!IdcardUtil.isValidCard(cardno)
+// ){
+// throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇併��"+cardno+"銆戝彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
+// }
Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
.eq(Member::getType,Constants.memberType.visitor)
.eq(Member::getIdcardType,visits.getIdcardType())
- .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, cardno)).last("limit 1" )
+ .eq(Member::getPhone,phone)
+// .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, cardno))
+ .last("limit 1" )
);
if(member == null){
member = new Member();
@@ -817,12 +938,14 @@
member.setCreateDate(visits.getCreateDate());
member.setIsdeleted(Constants.ZERO);
member.setIdcardNo(visits.getIdcardNo());
- member.setBirthday(Constants.getBirthdyByCardNo(cardno));
member.setIdcardDecode(visits.getIdcardDecode());
- member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//韬唤璇佸彿鍔犲瘑
- member.setIdcardDecode(Constants.getTuominStr(cardno));//鑴辨晱鎵嬫満鍙�
+ if(StringUtils.isNotBlank(cardno)){
+ member.setBirthday(Constants.getBirthdyByCardNo(cardno));
+ member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//韬唤璇佸彿鍔犲瘑
+ member.setIdcardDecode(Constants.getTuominStr(cardno));//鑴辨晱鎵嬫満鍙�
+ member.setSex(Constants.getSexByCardNo(cardno));
+ }
member.setFaceImg(visits.getFaceImg());
- member.setSex(Constants.getSexByCardNo(cardno));
member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null);
member.setIdcardType(visits.getIdcardType());
member.setName(visits.getName());
@@ -830,7 +953,6 @@
member.setOpenid(visits.getOpenid());
member.setType(Constants.memberType.visitor);
member.setStatus(Constants.ZERO);
- member.setSex(Constants.getSexByCardNo(cardno));
member.setHkStatus(Constants.ZERO);
member.setErpStatus(Constants.ZERO);
member.setVisitCompanyName(visits.getCompanyName());
@@ -840,22 +962,23 @@
}else{
if(!Constants.equalsInteger(Constants.ZERO,member.getStatus() )){
//濡傛灉鐢ㄦ埛鐘舵�佸紓甯革紝鍒欐彁绀�
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿銆�"+cardno+"銆戣绂佹璁块棶鐢宠锛屽鏈夌枒闂紝璇疯仈绯绘偍鐨勬嫓璁夸汉杩涜鏍稿疄");
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝銆�"+member.getName()+"銆戝湪榛戝悕鍗曞唴锛屾棤娉曠敵璇疯繘鍏ュ洯鍖�");
}
//鏍告煡棰勭害鐢ㄦ埛鏄惁瀛樺湪鏈绂荤殑棰勭害璁板綍
// isExsitNoOutVisisRecord(member);
-
member.setFaceImg(visits.getFaceImg());
member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null);
member.setEditDate(visits.getCreateDate());
member.setIsdeleted(Constants.ZERO);
- member.setSex(Constants.getSexByCardNo(cardno));
- member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//韬唤璇佸彿鍔犲瘑
- member.setIdcardDecode(Constants.getTuominStr(cardno));//鑴辨晱韬唤璇佸彿
+ if(StringUtils.isNotBlank(cardno)){
+ member.setBirthday(Constants.getBirthdyByCardNo(cardno));
+ member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//韬唤璇佸彿鍔犲瘑
+ member.setIdcardDecode(Constants.getTuominStr(cardno));//鑴辨晱鎵嬫満鍙�
+ member.setSex(Constants.getSexByCardNo(cardno));
+ }
member.setName(visits.getName());
member.setPhone(visits.getPhone());
member.setOpenid(visits.getOpenid());
- member.setSex(Constants.getSexByCardNo(cardno));
member.setHkStatus(Constants.ZERO);
member.setErpStatus(Constants.ZERO);
member.setVisitCompanyName(visits.getCompanyName());
@@ -863,18 +986,20 @@
}
//鏍规嵁鎵嬫満鍙峰拰韬唤璇佸彿鐮佹煡璇� 褰撳墠棰勭害鐨勬椂闂存槸鍚︿笌鍏朵粬棰勭害璁板綍鏈夊啿绐�
if (visitsMapper.selectCount(new QueryWrapper<Visits>().lambda()
+ .eq(Visits::getIsdeleted,Constants.ZERO)
.notIn(Visits::getStatus,Constants.VisitStatus.cancel
,Constants.VisitStatus.noPass
,Constants.VisitStatus.xfFail
,Constants.VisitStatus.signout
,Constants.VisitStatus.invalid)
- .eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno))
- .and(ms -> ms.eq(Visits::getPhone, visits.getPhone())
- .or().eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno)))
+ .and(ms -> ms.eq(Visits::getPhone, visits.getPhone()))
.and(ms -> ms.apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' ")
.or().apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ")
- )) > Constants.ZERO) {
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎵嬫満鍙枫��"+member.getPhone()+"銆戞垨韬唤璇併��"+ member.getIdcardDecode() +"銆戝瓨鍦ㄩ绾︽椂闂村啿绐侊紝鏃犳硶鐢宠鍝︼紒");
+ .or().apply(" visits.STARTTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ")
+ .or().apply(" visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ")
+ )
+ ) > Constants.ZERO) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎵嬫満鍙枫��"+member.getPhone()+"銆戝瓨鍦ㄩ绾︽椂闂村啿绐侊紝鏃犳硶鐢宠鍝︼紒");
}
return member;
}
@@ -885,6 +1010,7 @@
*/
private void isExsitNoOutVisisRecord(Member member) {
Visits v = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
+ .eq(Visits::getIsdeleted,Constants.ZERO)
.eq(Visits::getPhone, member.getPhone())
.eq(Visits::getStatus,Constants.VisitStatus.xfSuccess)
.last(" limit 1" )
@@ -922,6 +1048,7 @@
problemLog.setUserId(member.getId());
problemLog.setPhone(member.getPhone());
problemLog.setLogId(visits.getId());
+ problemLog.setCompanyName(visits.getCompanyName());
problemLogMapper.updateById(problemLog);
}
}
@@ -947,9 +1074,18 @@
return member;
}
- private ProblemLog isValidProblemLog(Visits visits) {
+ /**
+ * 鏄惁闇�瑕佺瓟棰�
+ * @param visits
+ * @param source
+ * @return
+ */
+ private ProblemLog isValidProblemLog(Visits visits,Integer source) {
+ if(!Constants.equalsInteger(source,Constants.ZERO)){
+ return null;
+ }
String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
- if(StringUtils.equals(required,Constants.ONE+"")&&visits.getSourceType()==Constants.ZERO){
+ if(StringUtils.equals(required,Constants.ONE+"")&&visits.getSourceType()==Constants.ZERO&&!visits.getType().equals(Constants.TWO)){
//濡傛灉蹇呴』绛旈锛屾煡鎵剧瓟棰樿褰�
if(visits.getUserAnswerId() == null){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰橈紒");
@@ -1010,6 +1146,32 @@
public void deleteById(Integer id) {
visitsMapper.deleteById(id);
}
+ @Override
+ @Transactional(rollbackFor ={BusinessException.class,Exception.class})
+ public void deleteById(Integer id,LoginUserInfo user) {
+ Visits model = visitsMapper.selectById(id);
+ if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ Date date = new Date();
+ visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
+ .set(Visits::getIsdeleted,Constants.ONE)
+ .set(Visits::getEditDate,new Date())
+ .set(Visits::getEditor,user.getId())
+ .eq(Visits::getId,id));
+ String[] params = new String[3];
+ params[0] = user.getRealname();
+ params[1]=DateUtil.getPlusTime2(date);
+ if(Constants.equalsInteger(model.getType(),Constants.TWO)){
+ params[2]="銆愯溅鐗屽彿锛�"+model.getCarNos()+"銆�-銆愬崟浣嶏細"+model.getCompanyName()+" "+model.getName()+" "+model.getPhone()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"銆�";
+ //璁板綍鍒犻櫎璁垮鎶ュ鏃ュ織
+ UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_CAR_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+ }else{
+ params[2]="銆愬崟浣嶏細"+model.getCompanyName()+"銆�-銆愯瀹細"+model.getName()+" "+model.getPhone()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"銆�";
+ //璁板綍鍒犻櫎璁垮鐢宠鏃ュ織
+ UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+ }
+ }
@Override
public void delete(Visits visits) {
@@ -1041,16 +1203,19 @@
}
@Override
- public Visits findById(Integer id) {
+ public Visits findById(Integer id,Integer memberId) {
MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(Visits.class);
queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
+ queryWrapper.select("t3.name",Visits::getCreateMemberName);
queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
queryWrapper.leftJoin(Company.class,Company::getErpId,Member::getErpOrgId);
+ queryWrapper.leftJoin("Member t3 on t.CREATE_MEMBER_ID=t3.id");
queryWrapper.eq(Visits::getId,id);
+ queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
Visits result = visitsJoinMapper.selectJoinOne(Visits.class,queryWrapper);
if(result!=null){
@@ -1061,6 +1226,8 @@
List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(deviceQuery);
result.setDeviceRoleList(deviceRoleList);
}
+ }else{
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
MPJLambdaWrapper<Visits> visitQuery = new MPJLambdaWrapper<>();
@@ -1075,6 +1242,38 @@
result.setWithUserList(visitsList);
result.setPrefixUrl(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
+
+ result.setApproveDateVO(
+ approveService.arrangeApprovedData(id,
+ result.getType(),
+ memberId)
+ );
+ if(Constants.equalsInteger(result.getStatus(),Constants.VisitStatus.xfSuccess)
+ || Constants.equalsInteger(result.getStatus(),Constants.VisitStatus.xfFail)
+ || Constants.equalsInteger(result.getStatus(),Constants.VisitStatus.signin)
+ || Constants.equalsInteger(result.getStatus(),Constants.VisitStatus.signout)
+ || Constants.equalsInteger(result.getStatus(),Constants.VisitStatus.invalid)){
+ result.setBusinessStatus(Constants.VisitStatus.pass);
+ }else{
+ result.setBusinessStatus(result.getStatus());
+ }
+
+
+ Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda()
+ .eq(Notices::getObjId,id)
+ .eq(Notices::getType,Constants.equalsInteger(result.getType(),Constants.TWO)?Constants.noticesObjectType.visitReporting:Constants.noticesObjectType.visit)
+ .eq(Notices::getUserId,memberId)
+ .eq(Notices::getSendacopy,Constants.ZERO)
+ .orderByDesc(Notices::getId).last(" limit 1 "));
+ if(Objects.nonNull(notices)){
+ if(Constants.equalsInteger(notices.getStatus(),Constants.ZERO)){
+ result.setInfo("寰呮垜澶勭悊");
+ }else{
+ result.setInfo(notices.getInfo());
+ }
+ }
+
+
return result;
}
@@ -1092,24 +1291,63 @@
@Override
public PageData<Visits> findPage(PageWrap<Visits> pageWrap) {
- IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(Visits.class);
queryWrapper.select(" ( select count(distinct(v.CAR_NOS)) from visits v where v.PARENT_ID = t.ID and v.CAR_NOS is not null and v.CAR_NOS != '' and v.CAR_NOS != t.CAR_NOS ) as carNum ");
+ queryWrapper.select(" ( select count(distinct(v.id)) from retention v where v.member_id = t.member_id and v.type=1 )",Visits::getRetentionNum);
queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
+ //鏁版嵁鏉冮檺寮�濮�--------------------start----------------
+ LoginUserInfo userInfo =pageWrap.getModel().getLoginUserInfo();
+ if(userInfo!=null && userInfo.getCompanyIdList()!=null){
+ if( userInfo.getCompanyIdList().size() ==0){
+ //鍙兘鐪嬭嚜宸�(鎷滆浜猴級
+ queryWrapper.eq(Member::getId,userInfo.getMemberId());
+ }else{
+ queryWrapper.in(Company::getId ,userInfo.getCompanyIdList());
+ }
+ }
+ //鏁版嵁鏉冮檺寮�濮�--------------------end----------------
+
queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
- queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
+ queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType())&&Constants.equalsInteger(pageWrap.getModel().getType(),Constants.TWO),Visits::getType,pageWrap.getModel().getType());
+ queryWrapper.ne(Objects.nonNull(pageWrap.getModel().getType())&&!Constants.equalsInteger(pageWrap.getModel().getType(),Constants.TWO),Visits::getType,Constants.TWO);
+ queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
+ queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCarNos()),Visits::getCarNos,pageWrap.getModel().getCarNos());
+// queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
.or().like(Visits::getPhone,pageWrap.getModel().getName()))
.eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Visits::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo()))
.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Visits::getCompanyName,pageWrap.getModel().getCompanyName())
.eq(Objects.nonNull(pageWrap.getModel().getStatus()),Visits::getStatus,pageWrap.getModel().getStatus());
queryWrapper.isNull(Visits::getParentId);
+ queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberId()),Visits::getMemberId,pageWrap.getModel().getMemberId());
+ queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getReceptMemberId()),Visits::getReceptMemberId,pageWrap.getModel().getReceptMemberId());
+ queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getQueryStarttime()),Visits::getStarttime,Utils.Date.getStart(pageWrap.getModel().getQueryStarttime()));
+ queryWrapper.le(Objects.nonNull(pageWrap.getModel().getQueryEndtime()),Visits::getStarttime,Utils.Date.getEnd(pageWrap.getModel().getQueryEndtime()));
+
+
+ if(Objects.nonNull(pageWrap.getModel().getBusinessStatus())){
+ if(Constants.equalsInteger(pageWrap.getModel().getBusinessStatus(),Constants.TWO)){
+ queryWrapper.in(Visits::getStatus,
+ Constants.VisitStatus.xfSuccess,
+ Constants.VisitStatus.xfFail,
+ Constants.VisitStatus.signin,
+ Constants.VisitStatus.signout,
+ Constants.VisitStatus.invalid,
+ Constants.VisitStatus.pass
+ );
+ }else{
+ queryWrapper.eq(Visits::getStatus,pageWrap.getModel().getBusinessStatus());
+ }
+
+ }
+
queryWrapper.orderByDesc(Visits::getCreateDate);
IPage<Visits> result = visitsJoinMapper.selectJoinPage(page, Visits.class,queryWrapper);
@@ -1126,10 +1364,7 @@
QueryWrapper<Visits> wrapper = new QueryWrapper<>(visits);
return visitsMapper.selectCount(wrapper);
}
-
-
- @Override
- public PageData<Visits> retentionPage(PageWrap<Visits> pageWrap) {
+ public static PageData<Visits> retentionPageBiz(PageWrap<Visits> pageWrap, VisitsJoinMapper visitsJoinMapper,SystemDictDataBiz systemDictDataBiz) {
String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode();
IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
@@ -1141,9 +1376,7 @@
queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
queryWrapper.leftJoin(" member m on m.id= t.MEMBER_ID");
-
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getLevelStatus()),Visits::getStatus,Constants.VisitStatus.signin);
-
queryWrapper.apply(Objects.nonNull(pageWrap.getModel().getLevelStatus())," TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) <= "+code+" ");
queryWrapper.ne("m.type ",Constants.TWO);
@@ -1172,12 +1405,17 @@
return PageData.from(result);
}
+ @Override
+ public PageData<Visits> retentionPage(PageWrap<Visits> pageWrap) {
+ return retentionPageBiz(pageWrap,visitsJoinMapper,systemDictDataBiz);
+ }
+
@Override
- public VisitDetailVO getVisitDetail(Integer id){
+ public VisitDetailVO getVisitDetail(Integer id,Integer memberId){
Visits visits = visitsMapper.selectById(id);
- if(Objects.isNull(visits)){
+ if(Objects.isNull(visits) || Constants.equalsInteger(visits.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
Member member = memberMapper.selectById(visits.getReceptMemberId());
@@ -1185,12 +1423,23 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌琚鍛樺伐淇℃伅");
}
VisitDetailVO visitDetailVO = new VisitDetailVO();
+ visitDetailVO.setCreateTime(visits.getCreateDate());
visitDetailVO.setStatus(visits.getStatus());
+ if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfFail)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.signin)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.signout)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.invalid)){
+ visitDetailVO.setBusinessStatus(Constants.VisitStatus.pass);
+ }else{
+ visitDetailVO.setBusinessStatus(visits.getStatus());
+ }
visitDetailVO.setCarNos(visits.getCarNos());
visitDetailVO.setPhone(visits.getPhone());
visitDetailVO.setVisitUserName(member.getName());
visitDetailVO.setVisitReason(visits.getReason());
visitDetailVO.setQrcode(visits.getQrcode());
+ visitDetailVO.setIdcardType(visits.getIdcardType());
visitDetailVO.setVisitTime(DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm") + " 鑷� " + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm") );
//琚浜哄憳閮ㄩ棬
Company company = companyMapper.selectById(member.getCompanyId());
@@ -1198,12 +1447,15 @@
visitDetailVO.setVisitUserCompany(company.getName());
}
visitDetailVO.setName(visits.getName());
- visitDetailVO.setCompanyName(visits.getCompanyName());
- visitDetailVO.setFaceImg(visits.getFaceImg());
- visitDetailVO.setImgUrl(visits.getImgurl());
- visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
- visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
- systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
+ visitDetailVO.setCompanyName(visits.getCompanyName());
+ visitDetailVO.setFaceImg(visits.getFaceImg());
+ visitDetailVO.setType(visits.getType());
+ visitDetailVO.setConstructionReason(visits.getConstructionReason());
+ visitDetailVO.setImgUrl(visits.getImgurl());
+ visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
+ visitDetailVO.setFaceImg(visits.getFaceImg());
+ visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+ systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
if(StringUtils.isNotBlank(visits.getDoors())){
List<DeviceRole> deviceRoleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
.select(DeviceRole::getName)
@@ -1219,6 +1471,30 @@
visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
.select(Visits::getName,Visits::getPhone,Visits::getQrcode,Visits::getFaceImg,Visits::getImgurl,Visits::getIdcardDecode,Visits::getStatus)
.eq(Visits::getParentId,id)));
+
+
+// if(Objects.nonNull(memberId)){
+ visitDetailVO.setApproveDateVO(
+ approveService.arrangeApprovedData(id,
+ visits.getType(),
+ memberId)
+ );
+// }
+
+ Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda()
+ .eq(Notices::getObjId,id)
+ .eq(Notices::getType,Constants.equalsInteger(visits.getType(),Constants.TWO)?Constants.noticesObjectType.visitReporting:Constants.noticesObjectType.visit)
+ .eq(Notices::getUserId,memberId)
+ .eq(Notices::getSendacopy,Constants.ZERO)
+ .orderByDesc(Notices::getId).last(" limit 1 "));
+ if(Objects.nonNull(notices)){
+ if(Constants.equalsInteger(notices.getStatus(),Constants.ZERO)){
+ visitDetailVO.setInfo("寰呮垜澶勭悊");
+ }else{
+ visitDetailVO.setInfo(notices.getInfo());
+ }
+ }
+
return visitDetailVO;
}
@@ -1261,25 +1537,44 @@
@Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void visitLevelForCarOut(Visits visits){
+ visits.setRemark("璺熼殢璁垮杞﹁締绂诲洯鑷姩绛剧");
+ visitLevelBiz(visits);
+ }
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
public void visitLevel(Integer visitId){
Visits visits = visitsMapper.selectById(visitId);
- if(Objects.isNull(visits)){
- throw new BusinessException(ResponseStatus.DATA_EMPTY);
- }
- if(!visits.getStatus().equals(Constants.VisitStatus.signin)){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝璇峰埛鏂伴噸璇�");
- }
- VisitAppointmentOutRequest request = new VisitAppointmentOutRequest();
- request.setOrderId(visits.getHkId());
- //璋冪敤娴峰悍寮哄埗绛剧
- BaseResponse response = HKService.outVisitAppiontment(request);
- visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.VisitStatus.signout)
- .eq(Visits::getId,visitId));
+ visits.setRemark("骞冲彴绠$悊鍛樻墜鍔ㄧ绂绘垚鍔�");
+ visitLevelBiz(visits);
//浜у嚭鍦ㄥ満浜哄憳淇℃伅
retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
.eq(Retention::getType,Constants.memberType.visitor)
.eq(Retention::getMemberId,visits.getMemberId()));
}
+
+ private void visitLevelBiz(Visits visits) {
+ if(Objects.isNull(visits)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!visits.getStatus().equals(Constants.VisitStatus.signin)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呮敮鎸併�愭嫓璁夸腑銆戠姸鎬佽繘琛岃绂诲満鎿嶄綔锛岃鍒锋柊閲嶈瘯");
+ }
+ VisitAppointmentOutRequest request = new VisitAppointmentOutRequest();
+ request.setOrderId(visits.getHkId());
+ //璋冪敤娴峰悍寮哄埗绛剧
+ BaseResponse response = HKService.iccmSignoff(request);
+ if(response!=null &&StringUtils.isNotBlank(response.getCode()) && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+ visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
+ .set(Visits::getStatus,Constants.VisitStatus.signout)
+ .set(Visits::getRemark,visits.getRemark())
+ .eq(Visits::getId,visits.getId()));
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮绛剧澶辫触锛岃鍒锋柊閲嶈瘯");
+ }
+ }
+
@Override
public void visitCancel(Integer visitId){
Visits visits = visitsMapper.selectById(visitId);
@@ -1289,10 +1584,11 @@
if(!visits.getStatus().equals(Constants.VisitStatus.xfSuccess)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝璇峰埛鏂伴噸璇�");
}
- VisitAppointmentOutRequest request = new VisitAppointmentOutRequest();
- request.setOrderId(visits.getHkId());
+ VisitAppointmentCancelRequest request = new VisitAppointmentCancelRequest();
+ request.setAppointRecordIds(new String[]{visits.getHkId()});
//璋冪敤娴峰悍寮哄埗绛剧
- BaseResponse response = HKService.outVisitAppiontment(request);
+// BaseResponse response = HKService.outVisitAppiontment(request);
+ BaseResponse response = HKService.iccmCancelAppointment(request);
visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.VisitStatus.signout)
.eq(Visits::getId,visitId));
//浜у嚭鍦ㄥ満浜哄憳淇℃伅
@@ -1301,4 +1597,622 @@
.eq(Retention::getMemberId,visits.getMemberId()));
}
+
+ @Override
+ public void visitsSelfCancel(Integer visitId,Integer memberId,String openid){
+ Visits visits = visitsMapper.selectById(visitId);
+ if(Objects.isNull(visits)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+/* if(!(Constants.equalsInteger(memberId,visits.getMemberId()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳鎿嶄綔鏉冮檺");
+ }*/
+ if(!StringUtils.equals(openid,visits.getOpenid())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳鎿嶄綔鏉冮檺");
+ }
+ this.visitsCancelBiz(visits);
+ }
+
+ @Override
+ public void visitsCancel(Integer visitId,LoginUserInfo loginUserInfo) {
+ Visits visits = visitsMapper.selectById(visitId);
+ if (Objects.isNull(visits)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!(
+ CollectionUtils.isNotEmpty(loginUserInfo.getPermissions()) &&
+ loginUserInfo.getPermissions().stream().filter(i->i.equals("business:visits:cancel"))
+ .collect(Collectors.toList()).size()>0)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳鎿嶄綔鏉冮檺");
+ }
+ this.visitsCancelBiz(visits);
+ }
+ /**
+ * 澶勭悊寰呭鏍搞�佸鏍镐腑銆佸凡瀹℃牳鐨勬暟鎹彇娑堜笟鍔�
+ * 2025骞�3鏈�25鏃�14:10:10
+ */
+ public void visitsCancelBiz(Visits visits){
+ UpdateWrapper<Visits> updateWrapper = new UpdateWrapper();
+ updateWrapper.lambda().set(Visits::getStatus,Constants.VisitStatus.cancel)
+ .set(Visits::getEditDate,DateUtil.getCurrDateTime())
+ .set(Visits::getEditor,visits.getEditor())
+ .eq(Visits::getId,visits.getId());
+ //璁垮鎶ュ
+ if(Constants.equalsInteger(visits.getType(),Constants.TWO)){
+ if(!(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.waitCheck)
+ ||Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.submitCheck)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.pass))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝鏃犳硶杩涜璇ユ搷浣�");
+ }
+ if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.pass)
+ && Constants.equalsInteger(visits.getHkStatus(),Constants.ONE)
+ &&StringUtils.isNotBlank(visits.getCarNos())){
+ //鍙栨秷鍋滆溅鍦洪绾�
+ List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
+ .eq(VisitPark::getCarCode,visits.getCarNos())
+ .eq(VisitPark::getObjType,Constants.ONE)
+ .eq(VisitPark::getHkStatus,Constants.ONE)
+ .isNotNull(VisitPark::getHkId)
+ .apply(" END_TIME > now() ")
+ .orderByDesc(VisitPark::getCreateDate)
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(visitParkList)){
+ for (VisitPark visitPark:visitParkList) {
+ ParkReservationDelRequest param = new ParkReservationDelRequest();
+ param.setReserveOrderNo(visitPark.getHkId());
+ BaseResponse response = HKService.parkReservationDeletion(param);
+ if(response!=null
+ && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+ visitPark.setHkStatus(Constants.THREE);
+ visitPark.setIsdeleted(Constants.ONE);
+ visitPark.setEditDate(new Date());
+ visitParkMapper.updateById(visitPark);
+ }else{
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
+ }
+ }
+ updateWrapper.lambda().set(Visits::getHkStatus,Constants.ZERO).set(Visits::getHkDate,DateUtil.getCurrDateTime());
+ }
+ }
+ }else{
+ //璁垮鐢宠
+ if(!(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.waitCheck)||Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.submitCheck)
+ || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.pass)|| Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝璇峰埛鏂伴噸璇�");
+ }
+ if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)
+ && Constants.equalsInteger(visits.getHkStatus(),Constants.ONE)
+ &&StringUtils.isNotBlank(visits.getHkRecordId())){
+ VisitAppointmentCancelRequest request = new VisitAppointmentCancelRequest();
+ request.setAppointRecordIds(new String[]{visits.getHkRecordId()});
+ BaseResponse response = HKService.iccmCancelAppointment(request);
+ if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
+ }
+ updateWrapper.lambda().set(Visits::getHkStatus,Constants.ZERO).set(Visits::getHkDate,DateUtil.getCurrDateTime());
+ }
+ }
+
+ if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)||Constants.equalsInteger(visits.getStatus(),Constants.ONE)){
+ //鏇存柊瀹℃壒涓殑璁板綍涓哄彇娑�
+ approveMapper.update(null,
+ new UpdateWrapper<Approve>().lambda()
+ .set(Approve::getEditDate,new Date())
+ .set(Approve::getStatus,Constants.approveStatus.cancel)
+ .set(Approve::getStatusInfo,"鎵嬪姩鍙栨秷")
+ .set(Approve::getCheckInfo,"鎵嬪姩鍙栨秷")
+ .eq(Approve::getIsdeleted,Constants.ZERO)
+ .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait)
+ .eq(Approve::getObjId,visits.getId())
+ .eq(Approve::getObjType,visits.getType()));
+ //鏇存柊寰呭姙娑堟伅鐘舵��
+ noticesJoinMapper.update(null,
+ new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getInfo,"鎵嬪姩鍙栨秷")
+ .setSql(" param4 = user_id ")
+ .set(Notices::getStatus,Constants.ONE)
+ .set(Notices::getParam2,Constants.ONE)//鏍囪宸插鐞�
+ .eq(Notices::getStatus,Constants.ZERO)
+ .eq(Notices::getParam2,Constants.ZERO)//寰呭鐞�
+ .eq(Notices::getObjId,visits.getId())
+ .eq(Notices::getObjType,!Constants.equalsInteger(visits.getType(),Constants.TWO)?
+ Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting)
+ );
+
+ Approve approve = new Approve();
+ approve.setCreateDate(new Date());
+ approve.setIsdeleted(Constants.ZERO);
+ approve.setRemark("鎵嬪姩鍙栨秷");
+ approve.setChekorId(visits.getEditor());
+ approve.setTitle("鍙栨秷棰勭害");
+ approve.setStatus(Constants.THREE);
+ approve.setStatusInfo("鎵嬪姩鍙栨秷");
+ approve.setObjId(visits.getId());
+ approve.setLevel(9999);
+ approve.setApproveType(2);
+ approve.setDriverParam(Constants.ZERO);
+ approve.setAddrParam(Constants.ZERO);
+ approve.setObjType(visits.getType());
+ approve.setType(Constants.ZERO);
+ approve.setCheckDate(new Date());
+ approveMapper.insert(approve);
+ }
+
+ visitsMapper.update(null,updateWrapper);
+ }
+
+
+
+
+ @Override
+ public void visitResend(Integer visitId) {
+ MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Visits.class);
+ queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName)
+ .selectAs(Member::getHkId,Visits::getReceptMemberHkId)
+ .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId)
+ .eq(Visits::getId,visitId)//鏈悓姝ュ埌娴峰悍
+ .last("limit 1");
+ Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
+ if(Objects.isNull(visits)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!visits.getStatus().equals(Constants.VisitStatus.xfFail)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝璇峰埛鏂伴噸璇�");
+ }
+ List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+ .eq(DeviceRole::getType, Constants.ONE));
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+
+ HkSyncVisitServiceImpl.getUpdateModelByResponseIccm(visits,new Date(),roleList,path);
+ if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)){
+ //濡傛灉涓嬪彂鎴愬姛锛�
+ visitsMapper.updateById(visits);
+ }else{
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"閲嶆柊涓嬪彂浼氬け璐ワ紒");
+ }
+ }
+
+
+ @Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+ public void resetPassword(ResetPasswordDTO resetPasswordDTO){
+ if(Objects.isNull(resetPasswordDTO)
+ || StringUtils.isBlank(resetPasswordDTO.getPassword())
+ || StringUtils.isBlank(resetPasswordDTO.getValidCode())
+ || StringUtils.isBlank(resetPasswordDTO.getPhone())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda().eq(SystemUser::getMobile,resetPasswordDTO.getPhone()).eq(SystemUser::getDeleted,Constants.ZERO).last(" limit 1"));
+ if(Objects.isNull(systemUser)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鎵嬫満鍙锋墍灞炶处鎴�");
+ }
+ smsEmailService.validateCode(resetPasswordDTO.getValidCode(),resetPasswordDTO.getPhone());
+ ResetSystemUserPwdDTO dto = new ResetSystemUserPwdDTO();
+ dto.setPassword(resetPasswordDTO.getPassword());
+ dto.setId(systemUser.getId());
+ dto.setOperaUserId(systemUser.getId());
+ dto.setNeedChangePwd(Constants.ONE);
+ systemUserBiz.resetPwd(dto);
+ }
+
+ /**
+ *
+ * @param queryType 鏌ヨ绫诲瀷锛�1=鍦ㄥ洯浜烘暟锛�2=鎶ヨ〃鏁版嵁锛�3=寰呭姙浜嬮」锛�4=瓒呮椂棰勮
+ * @param loginUserInfo
+ * @return
+ */
+ @Override
+ public PCWorkPlatformDataVO getPcWorkPlatformData(Integer queryType ,LoginUserInfo loginUserInfo){
+ PCWorkPlatformDataVO pcWorkPlatformDataVO = new PCWorkPlatformDataVO();
+ if(Constants.equalsInteger(queryType,Constants.ONE)){
+ List<Retention> retentionList = retentionMapper.selectJoinList(Retention.class,
+ new MPJLambdaWrapper<Retention>()
+ .selectAll(Retention.class)
+ .selectAs(Company::getType,Retention::getCompanyType)
+ .leftJoin(Company.class,Company::getId,Retention::getCompanyId)
+ .eq(Retention::getIsdeleted,Constants.ZERO)
+ );
+
+ InoutDayCount inoutDayCount = inoutDayCountMapper.selectOne(new QueryWrapper<InoutDayCount>()
+ .lambda()
+ .apply(" DATE(TIME_INFO) = CURDATE() ")
+ .last(" limit 1 ")
+ );
+
+ //浠婃棩鍦ㄥ洯浜烘暟
+ pcWorkPlatformDataVO.setTodayInParkUserNum(
+ retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+ );
+
+ pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO);
+ pcWorkPlatformDataVO.setTodayOutUserNum(Constants.ZERO);
+
+ //鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�
+ pcWorkPlatformDataVO.setInParkLwUserNum(
+ retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR)).count()
+ );
+ pcWorkPlatformDataVO.setLwUserInNum(Constants.ZERO);
+ pcWorkPlatformDataVO.setLwUserOutNum(Constants.ZERO);
+
+
+ //鍦ㄥ洯璁垮鏁伴噺
+ pcWorkPlatformDataVO.setInParkVisitUserNum(
+ retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
+ );
+ pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO);
+ pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO);
+
+ //鍦ㄥ洯璐ц繍杞﹁締鍙告満
+ pcWorkPlatformDataVO.setInParkDriverUserNum(
+ retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)&&Objects.isNull(i.getCompanyType())).count());
+
+ //鍦ㄥ洯杞﹁締
+ pcWorkPlatformDataVO.setTodayInParkCarNum(
+ retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
+ );
+ pcWorkPlatformDataVO.setTodayInCarNum(Constants.ZERO);
+ pcWorkPlatformDataVO.setTodayOutCarNum(Constants.ZERO);
+ if(Objects.nonNull(inoutDayCount)){
+ //鐩稿叧鏂�
+ pcWorkPlatformDataVO.setLwUserInNum(inoutDayCount.getInOtherMemberNum());
+ pcWorkPlatformDataVO.setLwUserOutNum(inoutDayCount.getOutOtherMemberNum());
+ //璁垮
+ pcWorkPlatformDataVO.setVisitUserNum(inoutDayCount.getInVisitorNum());
+ pcWorkPlatformDataVO.setSignLevelNum(inoutDayCount.getOutVisitorNum());
+ //杞﹁締
+ pcWorkPlatformDataVO.setTodayInCarNum(inoutDayCount.getInCarNum());
+ pcWorkPlatformDataVO.setTodayOutCarNum(inoutDayCount.getOutCarNum());
+ //鎬讳汉鏁�
+ pcWorkPlatformDataVO.setTodayInUserNum(pcWorkPlatformDataVO.getLwUserInNum() + pcWorkPlatformDataVO.getVisitUserNum() + inoutDayCount.getInSelfMemberNum() );
+ pcWorkPlatformDataVO.setTodayOutUserNum(pcWorkPlatformDataVO.getLwUserOutNum() + pcWorkPlatformDataVO.getSignLevelNum() + inoutDayCount.getOutSelfMemberNum() );
+ }
+
+ }else if(Constants.equalsInteger(queryType,Constants.TWO)){
+ List<String> weekDays = DateUtil.getBeforDays(new Date(),7);
+ List<InterestedListVO> weekVisitList = new ArrayList<>();
+ List<InterestedListVO> weekCarList = new ArrayList<>();
+ List<InterestedListVO> lwList = new ArrayList<>();
+ List<InterestedListVO> internalList = new ArrayList<>();
+ //鏌ヨ涓冨ぉ鍓嶇殑璁垮璁板綍鏁伴噺
+// List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda().in(Visits::getStatus,
+// Constants.VisitStatus.signin,Constants.VisitStatus.signout)
+// .apply(" STARTTIME > CURDATE() - INTERVAL 7 DAY " )
+// );
+
+ List<InoutRecord> inoutRecordList = inoutRecordMapper.selectList(new QueryWrapper<InoutRecord>().lambda()
+ .eq(InoutRecord::getInOrOut,Constants.ZERO).eq(InoutRecord::getIsdeleted,Constants.ZERO)
+ .apply(" TIME_INFO > CURDATE() - INTERVAL 7 DAY " )
+ );
+
+// List<CarEvent> carEventList = carEventMapper.selectList(new QueryWrapper<CarEvent>().lambda()
+// .in(CarEvent::getEventType,"771760131","771760130")
+// .apply(" STR_TO_DATE(happen_time, '%Y-%m-%dT%H:%i:%s') > CURDATE() - INTERVAL 7 DAY " )
+// );
+
+ for (String days:weekDays) {
+ InterestedListVO visitVO = new InterestedListVO();
+ visitVO.setName(days);
+ if(CollectionUtils.isNotEmpty(inoutRecordList)){
+ //澶勭悊璁垮浜哄憳鏁伴噺
+// List<Visits> daysList = visitsList.stream().filter(i->Objects.nonNull(i.getStarttime())&&DateUtil.dateToString(i.getStarttime(),"yyyy-MM-dd").equals(days)).collect(Collectors.toList());
+// List<String> memberIds = daysList.stream().map(i->i.getMemberId().toString()).collect(Collectors.toList());
+
+ List<String> memberIds = inoutRecordList.stream().filter(i->
+ Objects.isNull(i.getCarCode())
+ && Constants.equalsInteger(i.getInOrOut(),Constants.ZERO)
+ && Objects.nonNull(i.getMemberPhone())&&DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM-dd").equals(days)
+ )
+ .map(i->i.getMemberPhone())
+ .collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(memberIds)){
+ visitVO.setNum(new HashSet<String>(memberIds).size());
+ }
+ }
+ if(Objects.isNull(visitVO.getNum())){
+ visitVO.setNum(Constants.ZERO);
+ }
+
+
+ visitVO.setName(days);
+ InterestedListVO carVO = new InterestedListVO();
+ carVO.setNum(Constants.ZERO);
+ carVO.setName(days);
+
+ if(CollectionUtils.isNotEmpty(inoutRecordList)){
+ //澶勭悊璁垮浜哄憳鏁伴噺
+// List<CarEvent> daysList = carEventList.stream().filter(i->StringUtils.isNotBlank(i.getHappenTime()) && i.getHappenTime().substring(0,10).equals(days)).collect(Collectors.toList());
+// List<String> carCodeList = daysList.stream().map(i->i.getPlateNos()).collect(Collectors.toList());
+ List<String> carCodeList = inoutRecordList.stream().filter(i->
+ Objects.nonNull(i.getCarCode())
+ && Constants.equalsInteger(i.getInOrOut(),Constants.ZERO)
+ && Objects.isNull(i.getMemberPhone())&&DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM-dd").equals(days)
+ )
+ .map(i->i.getCarCode())
+ .collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(carCodeList)){
+ carVO.setNum(new HashSet<String>(carCodeList).size());
+ }
+ }
+ if(Objects.isNull(carVO.getNum())){
+ visitVO.setNum(Constants.ZERO);
+ }
+ weekVisitList.add(visitVO);
+ weekCarList.add(carVO);
+ }
+ pcWorkPlatformDataVO.setWeekVisitList(weekVisitList );
+ pcWorkPlatformDataVO.setWeekCarList(weekCarList);
+
+ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
+ .eq(Company::getIsdeleted,Constants.ZERO)
+ .orderByAsc(Company::getSortnum)
+ );
+
+ if(CollectionUtils.isNotEmpty(companyList)){
+ List<Company> lwCompanyList = companyList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(lwCompanyList)){
+ List<Integer> lwCompanyIds = lwCompanyList.stream().map(i->i.getId()).collect(Collectors.toList());
+ List<Retention> retentionList = retentionMapper.selectList(
+ new QueryWrapper<Retention>().lambda()
+ .eq(Retention::getIsdeleted,Constants.ZERO)
+ .eq(Retention::getType,Constants.FOUR)
+ .in(Retention::getCompanyId,lwCompanyIds)
+ );
+ for (Company company:lwCompanyList) {
+ Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size();
+ if(count>0){
+ InterestedListVO lw = new InterestedListVO();
+ lw.setNum(count);
+ lw.setName(company.getName());
+ lwList.add(lw);
+ }
+ }
+ }
+
+ List<Company> internalCompanyList = companyList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(internalCompanyList)){
+ List<Integer> internalCompanyIds = internalCompanyList.stream().map(i->i.getId()).collect(Collectors.toList());
+ List<Retention> retentionList = retentionMapper.selectList(
+ new QueryWrapper<Retention>().lambda()
+ .eq(Retention::getIsdeleted,Constants.ZERO)
+ .eq(Retention::getType,Constants.TWO)
+ .in(Retention::getCompanyId,internalCompanyIds)
+ );
+ for (Company company:internalCompanyList) {
+ Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size();
+ if(count>0){
+ InterestedListVO lw = new InterestedListVO();
+ lw.setNum(count);
+ lw.setName(company.getName());
+ internalList.add(lw);
+ }
+ }
+ }
+ }
+ pcWorkPlatformDataVO.setInternalList(internalList);
+ pcWorkPlatformDataVO.setLwList(lwList);
+ }else if(Constants.equalsInteger(queryType,Constants.THREE)) {
+ if (Objects.isNull(loginUserInfo.getMemberId())) {
+ pcWorkPlatformDataVO.setNoticesList(new ArrayList<>());
+ pcWorkPlatformDataVO.setNoticesNum(0);
+// queryWrapper.eq("1", "2");
+ } else {
+ MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Notices.class);
+ queryWrapper.eq(Notices::getStatus, Constants.ZERO);
+ queryWrapper.eq(Notices::getSendacopy, Constants.ZERO);
+ queryWrapper.eq(Notices::getParam2, Constants.ZERO);
+ queryWrapper.eq(Notices::getUserId, loginUserInfo.getMemberId());
+ queryWrapper.orderByDesc(Notices::getCreateDate);
+ List<Notices> noticesList = noticesJoinMapper.selectList(queryWrapper);
+ pcWorkPlatformDataVO.setNoticesList(noticesList);
+ pcWorkPlatformDataVO.setNoticesNum(noticesList.size());
+ if(noticesList.size() > 5 ){
+ pcWorkPlatformDataVO.setNoticesList(noticesList.subList(0,5));
+ }else{
+ pcWorkPlatformDataVO.setNoticesList(noticesList);
+ }
+ }
+
+ }else{
+ String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode();
+ MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Visits.class);
+ queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
+ queryWrapper.select("TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) AS timeOut");
+ queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
+ queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
+ queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
+ queryWrapper.leftJoin(" member m on m.id= t.MEMBER_ID");
+ queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.signin);
+ queryWrapper.apply(" TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) <= "+code+" ");
+ queryWrapper.ne("m.type ",Constants.TWO);
+ queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
+ queryWrapper.orderByDesc(Visits::getEditDate);
+ List<Visits> result = visitsJoinMapper.selectList(queryWrapper);
+ if(result!=null&&result!=null){
+ result.stream().forEach(s ->{
+ if(s.getStatus().equals(Constants.VisitStatus.signin)){
+ if(s.getTimeOut()<=Integer.valueOf(code)&&s.getTimeOut()>=0){
+ s.setOutStatus(Constants.TWO);
+ }else if(s.getTimeOut()>Constants.ZERO){
+ s.setOutStatus(Constants.ZERO);
+ }else{
+ s.setOutStatus(Constants.ONE);
+ }
+ }
+ });
+ }
+ pcWorkPlatformDataVO.setTimeOutVisitNum(result.size());
+ if(result.size() > 3 ){
+ pcWorkPlatformDataVO.setTimeOutVisitList(result.subList(0,3));
+ }else{
+ pcWorkPlatformDataVO.setTimeOutVisitList(result);
+ }
+ }
+ return pcWorkPlatformDataVO;
+ }
+
+
+ @Override
+ public void syncTimeOutData(){
+ String times = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.TIME_OUT_CONFIG).getCode();
+ List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
+ .eq(Visits::getStatus,Constants.VisitStatus.signin)
+ .eq(Visits::getSendTimeOutNotice,Constants.ZERO)
+ .eq(Visits::getIsdeleted,Constants.ZERO)
+ .apply(" now() >= DATE_ADD(ENDTIME,INTERVAL -"+times+" MINUTE) ")
+ );
+ Integer visitTimeCount = 0;
+ Integer visitReportTimeCount = 0;
+ for (Visits visits:visitsList) {
+ if(Constants.equalsInteger(visits.getType(),Constants.TWO)){
+ SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(),
+ SmsConstants.visitReportingContent.visitReportingTimeOutSignOut,
+ null,Arrays.asList(visits.getPhone().split(","))
+ );
+ visitReportTimeCount = visitReportTimeCount + 1;
+ }else{
+ SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(),
+ SmsConstants.visitContent.visitTimeOutSignOut,
+ null,Arrays.asList(visits.getPhone().split(","))
+ );
+ visitTimeCount = visitTimeCount + 1 ;
+ }
+ visits.setSendTimeOutNotice(Constants.ONE);
+ visitsMapper.updateById(visits);
+ }
+
+ if(visitTimeCount > 0 ){
+ String mobile = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VISIT_TIME_OUT_MOBILE).getCode();
+ if(StringUtils.isNotBlank(mobile)){
+ SmsEmailServiceImpl.sendVisitTimeOutSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,
+ SmsConstants.visitContent.visitTimeOutSignOutNum,
+ visitTimeCount.toString(),Arrays.asList(mobile.split(","))
+ );
+ }
+ }
+
+ if(visitReportTimeCount > 0 ){
+ String mobile = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VISIT_REPORT_TIME_OUT_MOBILE).getCode();
+ if(StringUtils.isNotBlank(mobile)){
+ SmsEmailServiceImpl.sendVisitReportTimeOutSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,
+ SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum,
+ visitReportTimeCount.toString(),Arrays.asList(mobile.split(","))
+ );
+ }
+ }
+ }
+ @Override
+ public void visitNoCheckCancel(){
+ log.info("===============寰呭鎵硅褰曡秴鏃惰嚜鍔ㄥ彇娑堥绾�===========start=======");
+ List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
+ .eq(Visits::getIsdeleted,Constants.ZERO)
+ .eq(Visits::getStatus,Constants.VisitStatus.waitCheck)
+ .apply(" now() >= ENDTIME ")
+ );
+ if(visitsList!=null){
+ Date date =new Date();
+ for(Visits s :visitsList){
+ dealAutoCancelBiz(s,date);
+ }
+ }
+ log.info("===============寰呭鎵硅褰曡秴鏃惰嚜鍔ㄥ彇娑堥绾�===========end=======");
+ }
+
+ @Transactional
+ private void dealAutoCancelBiz(Visits s, Date date) {
+ visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
+ .set(Visits::getStatus,Constants.VisitStatus.cancel)
+ .set(Visits::getEditDate,date)
+ .set(Visits::getRemark,"棰勭害鎴鏃堕棿宸茶繃鏈鎵癸紝绯荤粺鑷姩鍙栨秷")
+ .eq(Visits::getId,s.getId()));
+
+ VisitsServiceImpl.dealCancelNoticesData(noticesJoinMapper,approveMapper,"绯荤粺鍙栨秷",s.getId(),
+ s.getType(),
+ !Constants.equalsInteger(s.getType(),Constants.TWO)?Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting
+ );
+
+ Approve approve = new Approve();
+ approve.setCreateDate(new Date());
+ approve.setIsdeleted(Constants.ZERO);
+ approve.setRemark("绯荤粺鑷姩鍙栨秷");
+ approve.setTitle("鍙栨秷棰勭害");
+ approve.setStatus(Constants.THREE);
+ approve.setStatusInfo("瓒呮椂鑷姩鍙栨秷");
+ approve.setObjId(s.getId());
+ approve.setLevel(9999);
+ approve.setApproveType(2);
+ approve.setDriverParam(Constants.ZERO);
+ approve.setAddrParam(Constants.ZERO);
+ approve.setObjType(s.getType());
+ approve.setType(Constants.ZERO);
+ approve.setCheckDate(new Date());
+ approveMapper.insert(approve);
+
+// //鏇存柊瀹℃壒涓殑璁板綍涓哄彇娑�
+// approveMapper.update(null,
+// new UpdateWrapper<Approve>().lambda()
+// .set(Approve::getEditDate,date)
+// .set(Approve::getStatus,Constants.approveStatus.cancel)
+// .set(Approve::getStatusInfo,"绯荤粺宸插彇娑�")
+// .set(Approve::getCheckInfo,"璁块棶鏃堕棿宸茶繃锛岀郴缁熻嚜鍔ㄥ彇娑�")
+// .eq(Approve::getIsdeleted,Constants.ZERO)
+// .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait)
+// .eq(Approve::getObjId,s.getId())
+// .eq(Approve::getObjType,s.getType()));
+// //鏇存柊寰呭姙娑堟伅鐘舵��
+// noticesJoinMapper.update(null,
+// new UpdateWrapper<Notices>().lambda()
+// .set(Notices::getEditDate,date)
+// .set(Notices::getInfo,"宸插彇娑�")
+//// .set(Notices::getStatus,Constants.ONE)
+// .set(Notices::getParam2,Constants.FOUR)//宸插彇娑�
+// .eq(Notices::getIsdeleted,Constants.ZERO)
+// .eq(Notices::getStatus,Constants.ZERO)
+// .eq(Notices::getParam2,Constants.ZERO)//寰呭鐞�
+// .eq(Notices::getObjId,s.getId())
+// .eq(Notices::getObjType,Constants.equalsInteger(s.getType(),Constants.ZERO)?Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting)
+// );
+ }
+
+
+ public static void dealCancelNoticesData(NoticesJoinMapper noticesJoinMapper,ApproveMapper approveMapper,String info,Integer objId,Integer approveObjectType,Integer noticesType){
+ if(Objects.nonNull(approveObjectType)){
+ approveMapper.update(null,
+ new UpdateWrapper<Approve>().lambda()
+ .set(Approve::getEditDate,new Date())
+ .set(Approve::getStatus,Constants.approveStatus.cancel)
+ .set(Approve::getStatusInfo,info)
+ .set(Approve::getCheckInfo,info)
+ .eq(Approve::getIsdeleted,Constants.ZERO)
+ .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait)
+ .eq(Approve::getObjId,objId)
+ .eq(Approve::getObjType,approveObjectType));
+ }
+ if(Objects.nonNull(noticesType)){
+ //鏇存柊寰呭姙娑堟伅鐘舵��
+ noticesJoinMapper.update(null,
+ new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getInfo,"鑷姩鍙栨秷")
+ .setSql(" param4 = user_id ")
+ .set(Notices::getStatus,Constants.ONE)
+ .set(Notices::getParam2,Constants.ONE)//宸插彇娑�
+ .eq(Notices::getStatus,Constants.ZERO)
+ .eq(Notices::getParam2,Constants.ZERO)//寰呭鐞�
+ .eq(Notices::getObjId,objId)
+ .eq(Notices::getObjType,noticesType)
+ );
+ }
+ }
+
+
+
}
--
Gitblit v1.9.3