From eb49564ab17c6695d8928d5a63a57c58b3cfd79c Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 11 十二月 2024 18:21:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java |  199 +++++++++++++++++++++++++++++++------------------
 1 files changed, 127 insertions(+), 72 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 6ed3d47..f8ec745 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
@@ -12,12 +12,10 @@
 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.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest;
 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.AscDeviceStatusInfoResponse;
 import com.doumee.core.haikang.model.param.respose.FacePictureCheckResponse;
 import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
 import com.doumee.core.haikang.service.HKService;
@@ -25,17 +23,21 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.*;
+import com.doumee.core.wx.WXConstant;
+import com.doumee.core.wx.wxPlat.WxPlatConstants;
 import com.doumee.core.wx.wxPlat.WxPlatNotice;
 import com.doumee.dao.admin.response.InterestedListVO;
 import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsConfigMapper;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ResetPasswordDTO;
 import com.doumee.dao.business.join.DeviceJoinMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
+
 import com.doumee.dao.system.SystemUserMapper;
-import com.doumee.dao.system.dto.NoticesDTO;
 import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
 import com.doumee.dao.system.join.NoticesJoinMapper;
 import com.doumee.dao.system.model.Notices;
@@ -58,23 +60,13 @@
 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 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 sun.misc.BASE64Encoder;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.*;
 import java.util.Date;
 import java.util.stream.Collectors;
@@ -131,6 +123,8 @@
     private NoticesJoinMapper noticesJoinMapper;
     @Autowired
     private InoutDayCountMapper inoutDayCountMapper;
+    @Autowired
+    private CarEventMapper carEventMapper;
 
     @Autowired
     private SmsConfigMapper smsConfigMapper;
@@ -139,7 +133,12 @@
     private SmsEmailMapper smsEmailMapper;
 
     @Autowired
+    private WxNoticeConfigMapper wxNoticeConfigMapper;
+
+    @Autowired
     private EmayService emayService;
+
+
 
     @Override
     public Integer create(Visits visits) {
@@ -254,25 +253,25 @@
         //鍒濆鍖栬瀹俊鎭�
         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_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());
-            }
-        }
-
+//        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瀹℃壒鐢宠
@@ -285,10 +284,6 @@
             }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 if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
             visits.setStatus(Constants.VisitStatus.waitCheck);
             visitsMapper.updateById(visits);
@@ -298,6 +293,17 @@
         }
         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,
+                    systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                    Arrays.asList(visits.getOpenid().split(","))
+            );
+        }
         //鍒涘缓瀹℃壒璁板綍
         createApprove(visits,visitMember);
 
@@ -1270,10 +1276,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<>();
@@ -1285,9 +1288,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);
@@ -1314,6 +1315,11 @@
         }
 
         return PageData.from(result);
+    }
+
+    @Override
+    public PageData<Visits> retentionPage(PageWrap<Visits> pageWrap) {
+        return  retentionPageBiz(pageWrap,visitsJoinMapper,systemDictDataBiz);
     }
 
 
@@ -1492,11 +1498,6 @@
       if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)){
           //濡傛灉涓嬪彂鎴愬姛锛�
           visitsMapper.updateById(visits);
-          if(Objects.isNull(visits.getParentId())){
-              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{
           throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"閲嶆柊涓嬪彂浼氬け璐ワ紒");
       }
@@ -1549,7 +1550,7 @@
 
             //浠婃棩鍦ㄥ洯浜烘暟
             pcWorkPlatformDataVO.setTodayInParkUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).count()
+                    retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count()
             );
 
             pcWorkPlatformDataVO.setTodayInUserNum(Constants.ZERO);
@@ -1557,7 +1558,8 @@
 
             //鍦ㄥ洯闀挎湡鐩稿叧鏂逛汉鏁�
             pcWorkPlatformDataVO.setInParkLwUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
+                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)
+                            && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
             );
             pcWorkPlatformDataVO.setLwUserInNum(Constants.ZERO);
             pcWorkPlatformDataVO.setLwUserOutNum(Constants.ZERO);
@@ -1565,7 +1567,7 @@
 
             //鍦ㄥ洯璁垮鏁伴噺
             pcWorkPlatformDataVO.setInParkVisitUserNum(
-                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)&&Objects.isNull(i.getCompanyType())).count()
+                    retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count()
             );
             pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO);
             pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO);
@@ -1596,23 +1598,48 @@
             List<InterestedListVO> weekVisitList = new ArrayList<>();
             List<InterestedListVO> weekCarList = new ArrayList<>();
             List<InterestedListVO> lwList = 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<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) {
-                InoutDayCount inoutDayCount = inoutDayCountMapper.selectOne(new QueryWrapper<InoutDayCount>()
-                        .lambda()
-                        .apply(" DATE(TIME_INFO) = '"+days+"' ")
-                        .last("  limit 1  ")
-                );
                 InterestedListVO visitVO = new InterestedListVO();
+                visitVO.setName(days);
+                if(CollectionUtils.isNotEmpty(visitsList)){
+                    //澶勭悊璁垮浜哄憳鏁伴噺
+                    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());
+                    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.setName(days);
-                if(Objects.isNull(inoutDayCount)){
+
+
+                if(CollectionUtils.isNotEmpty(carEventList)){
+                    //澶勭悊璁垮浜哄憳鏁伴噺
+                    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());
+                    if(CollectionUtils.isNotEmpty(carCodeList)){
+                        carVO.setNum(new HashSet<String>(carCodeList).size());
+                    }
+                }
+                if(Objects.isNull(carVO.getNum())){
                     visitVO.setNum(Constants.ZERO);
-                    carVO.setNum(Constants.ZERO);
-                }else{
-                    visitVO.setNum(inoutDayCount.getInVisitorNum());
-                    carVO.setNum(inoutDayCount.getInCarNum());
                 }
                 weekVisitList.add(visitVO);
                 weekCarList.add(carVO);
@@ -1629,6 +1656,7 @@
                 List<Integer> companyIds = companyList.stream().map(i->i.getId()).collect(Collectors.toList());
                 List<Retention> retentionList = retentionMapper.selectList(
                         new QueryWrapper<Retention>().lambda()
+                                .eq(Retention::getType,Constants.TWO)
                                 .in(Retention::getCompanyId,companyIds)
                 );
                 for (Company company:companyList) {
@@ -1642,32 +1670,34 @@
 
             pcWorkPlatformDataVO.setLwList(lwList   );
         }else if(Constants.equalsInteger(queryType,Constants.THREE)) {
-            MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
-            queryWrapper.selectAll(Notices.class);
             if (Objects.isNull(loginUserInfo.getMemberId())) {
-                queryWrapper.eq("1", "2");
+                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{
+                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(Member::getType,Visits::getMemberType);
             queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
             queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
             queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
@@ -1710,6 +1740,8 @@
                 .eq(Visits::getSendTimeOutNotice,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,
@@ -1717,17 +1749,40 @@
                         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,
+                        visitReportTimeCount.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(","))
+                );
+            }
+        }
 
 
 

--
Gitblit v1.9.3