From 8ead63412bbda132ba9404583c1704121dfbcbaf Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 10 十二月 2024 20:16:13 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java |  148 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 136 insertions(+), 12 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index 993262d..4203b81 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -17,7 +17,10 @@
 import com.doumee.core.tms.model.response.TmsBaseResponse;
 import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
 import com.doumee.core.utils.*;
+import com.doumee.core.wx.wxPlat.WxPlatConstants;
+import com.doumee.core.wx.wxPlat.WxPlatNotice;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
@@ -46,14 +49,17 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.net.URLEncoder;
 import java.util.*;
 import java.util.Date;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -114,9 +120,15 @@
     private EmayService emayService;
 
     @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+    @Autowired
     private PlatformBroadcastLogMapper platformBroadcastLogMapper;
     @Autowired
     private PlatformWarnEventServiceImpl platformWarnEventService;
+    @Autowired
+    private MemberMapper memberMapper;
+    @Autowired
+    private WxNoticeConfigMapper wxNoticeConfigMapper;
 
     @Override
     public Integer create(PlatformJob platformJob) {
@@ -644,11 +656,11 @@
     }
 
     public void sceneSignIn(SignInDTO signInDTO){
-
         if( StringUtils.isNotBlank(signInDTO.getQrCodeKey())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if(!signInDTO.getQrCodeKey().equals(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){
+        if(!signInDTO.getQrCodeKey().equals(
+                systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE_PREFIX).getCode() +  systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"浜岀淮鐮佸凡杩囨湡,璇峰埛鏂伴噸璇�");
         }
     }
@@ -693,7 +705,7 @@
             }
         }
         platformJob.dealTime();
-        this.getWorkTime(platformJob);
+        this.getWorkTime(platformJob,platformLogMapper);
         this.getWmsJobData(platformJob);
         return platformJob;
     }
@@ -775,7 +787,7 @@
      * 鑾峰彇宸蹭綔涓氭椂闂�
      * @param platformJob
      */
-    public Long getWorkTime(PlatformJob platformJob){
+    public static Long getWorkTime(PlatformJob platformJob,PlatformLogMapper platformLogMapper){
         List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
                 .lambda().eq(PlatformLog::getIsdeleted,Constants.ZERO)
                 .eq(PlatformLog::getJobId,platformJob.getId())
@@ -798,7 +810,7 @@
                     .last(" limit 1 ")
             );
             if(Objects.nonNull(lastBeginPlatform)){
-                String v = Long.toString(System.currentTimeMillis() - lastBeginPlatform.getCreateDate().getTime() / 1000) ;
+                String v = Long.toString((System.currentTimeMillis() - lastBeginPlatform.getCreateDate().getTime() )/ 1000) ;
                 optTime = optTime + Long.valueOf(v);
             }
         }
@@ -859,6 +871,20 @@
                 emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                 SmsConstants.platformJobContent.platformJobCallIn,null,null
         );
+        
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())) {
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if (Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())) {
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper, platformJob,
+                        WxPlatConstants.platformJobContent.platformJobCallIn,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
 
         return platformJob;
     }
@@ -1057,6 +1083,21 @@
                 SmsConstants.platformJobContent.platformJobSingIn,platform.getName(),null
         );
 
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())){
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper,platformJob,
+                        WxPlatConstants.platformJobContent.platformJobSingIn,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
+
+
         //骞挎挱 led閫氱煡
         platformJob.setPlatformName(platform.getName());
         this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.CALLING.getInfo(),
@@ -1187,6 +1228,20 @@
                 SmsConstants.platformJobContent.platformJobMove,oldPlatform.getName(),platform.getName()
         );
 
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())) {
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if (Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())) {
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper, platformJob,
+                        WxPlatConstants.platformJobContent.platformJobMove,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
+
         platformJob.setPlatformName(oldPlatform.getName());
         platformJob.setPlatformId(oldPlatform.getId());
         this.broadcastAndLEed(platformJob, StringUtils.isBlank(oldPlatform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():oldPlatform.getLedContent(),
@@ -1215,7 +1270,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
         }
 
-        Platform platform = platformJoinMapper.selectById(jobOperateDTO.getPlatformId());
+        Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
         if(Objects.isNull(platform)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
         }
@@ -1234,6 +1289,21 @@
                 emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                 SmsConstants.platformJobContent.platformJobOverNum,null,null
         );
+
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())){
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper,platformJob,
+                        WxPlatConstants.platformJobContent.platformJobOverNum,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
+
         platformJob.setPlatformName(platform.getName());
         this.broadcastAndLEed(platformJob, StringUtils.isBlank(platform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():platform.getLedContent(),
                 null
@@ -1280,6 +1350,20 @@
                 emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                 SmsConstants.platformJobContent.platformJobError,platform.getName(),null
         );
+
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())) {
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if (Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())) {
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper, platformJob,
+                        WxPlatConstants.platformJobContent.platformJobError,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
 
         platformJob.setPlatformName(platform.getName());
         this.broadcastAndLEed(platformJob, StringUtils.isBlank(platform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():platform.getLedContent(),
@@ -1330,7 +1414,19 @@
                 emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                 SmsConstants.platformJobContent.platformJobWorking,platform.getName(),null
         );
-
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())) {
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if (Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())) {
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper, platformJob,
+                        WxPlatConstants.platformJobContent.platformJobWorking,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
         //骞挎挱 led閫氱煡
         platformJob.setPlatformName(platform.getName());
         this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.WORKING.getInfo(),
@@ -1340,10 +1436,19 @@
         return platformJob;
     }
 
-
-    /**
-     * 瀹屾垚浣滀笟
-     */
+    public PlatformJob getLastWaitJob(String uuid, LoginUserInfo loginUser){
+        String u = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.BIGSCREEN_UUID);
+        if(!StringUtils.equals(u,uuid)){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜岀淮鐮佸凡澶辨晥锛�");
+        }
+        PlatformJob platformJob =  platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
+                .eq(PlatformJob::getDrivierPhone,loginUser.getMobile())
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WART_SIGN_IN.getKey())
+                .orderByDesc(PlatformJob::getCreateDate)
+                .last(" limit 1 ") );
+            return platformJob;
+    }
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public PlatformJob finishWork(JobOperateDTO jobOperateDTO){
@@ -1415,6 +1520,21 @@
                 emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                 SmsConstants.platformJobContent.platformJobFinish,platform.getName(),null
         );
+
+        //鍏紬鍙锋ā鏉挎秷鎭�
+        if(Objects.nonNull(platformJob.getDriverId())) {
+            Member member = memberMapper.selectById(platformJob.getDriverId());
+            if (Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())) {
+                WxPlatNotice wxPlatNotice = new WxPlatNotice();
+                wxPlatNotice.sendPlatformJobTemplateNotice(
+                        wxNoticeConfigMapper, platformJob,
+                        WxPlatConstants.platformJobContent.platformJobFinish,
+                        systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                        Arrays.asList(member.getOpenid().split(","))
+                );
+            }
+        }
+
         //骞挎挱 led閫氱煡
         platformJob.setPlatformName(platform.getName());
         this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.DONE.getInfo(),
@@ -2002,7 +2122,11 @@
             List<PlatformJob> calledList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList());
             largeScreenDataVO.setWaitWorkList(calledList);
         }
-        largeScreenDataVO.setQrCode(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode());
+        String u =  UUID.randomUUID().toString();
+        redisTemplate.opsForValue().set(Constants.RedisKeys.BIGSCREEN_UUID,u,3, TimeUnit.MINUTES);
+        String url = Constants.getWxUrl(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.WX_REDIRECT_URL).getCode(),Constants.WxUrlParams.BISCREEN_CODE,u);
+        largeScreenDataVO.setQrCode(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE_PREFIX).getCode().replace( "${param}", url));
+        largeScreenDataVO.setAttention(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_ATTENTION).getCode());
         return largeScreenDataVO;
 
     }

--
Gitblit v1.9.3