From 363208403f2076fef350a7feaf236e6153f982be Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 10 一月 2025 09:19:28 +0800
Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/funingyunwei into 2.0.1

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java |   94 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 76 insertions(+), 18 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
index d85a2fe..96a4593 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
@@ -15,6 +15,7 @@
 import com.doumee.dao.business.YwPatrolTaskMapper;
 import com.doumee.dao.business.YwPatrolTaskRecordMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.YwPatrolSchemeService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -26,6 +27,7 @@
 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.util.*;
@@ -48,9 +50,12 @@
     @Autowired
     private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper;
     @Autowired
+    private SystemUserMapper systemUserMapper;
+    @Autowired
     private RedisTemplate<String, Object> redisTemplate;
 
     @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer create(YwPatrolScheme ywPatrolScheme) {
         if(Objects.isNull(ywPatrolScheme)
         || StringUtils.isBlank(ywPatrolScheme.getTitle())
@@ -59,11 +64,15 @@
                 ||Objects.isNull(ywPatrolScheme.getStartDate())
                 ||Objects.isNull(ywPatrolScheme.getEndDate())
                 ||Objects.isNull(ywPatrolScheme.getCircleType())
-                ||StringUtils.isBlank(ywPatrolScheme.getStartTime())
-                ||StringUtils.isBlank(ywPatrolScheme.getEndTime())
                 || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays()))
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(StringUtils.isBlank(ywPatrolScheme.getStartTime())){
+            ywPatrolScheme.setStartTime("00:00:00");
+        }
+        if(StringUtils.isBlank(ywPatrolScheme.getEndTime())){
+            ywPatrolScheme.setEndTime("23:59:59");
         }
         LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo();
         ywPatrolScheme.setCreateDate(new Date());
@@ -92,10 +101,29 @@
     public void createThreeDaysData(YwPatrolScheme ywPatrolScheme){
         //寰幆鐢熸垚涓夊ぉ鍐呯殑鏁版嵁
         for (int i = 0; i < 3; i++) {
-            Date schemeDate = DateUtil.getXDayAfterDate(new Date(),i);
+            Date schemeDate = DateUtil.getXDayAfterDate(
+                    DateUtil.StringToDate(
+                    DateUtil.getDate(new Date(),"yyyy-MM-dd"),"yyyy-MM-dd"),i);
             this.createTask(schemeDate,ywPatrolScheme);
         }
     }
+
+
+    @Override
+    public void timerAuto(){
+        List<YwPatrolScheme> ywPatrolSchemeList = ywPatrolSchemeMapper.selectList(new QueryWrapper<YwPatrolScheme>().lambda()
+                .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO)
+                .eq(YwPatrolScheme::getStatus,Constants.ZERO)
+                .apply(" START_DATE <= now() and END_DATE>= now()   ")
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolSchemeList)){
+            for (YwPatrolScheme ywPatrolScheme:ywPatrolSchemeList) {
+                this.createTask(new Date(),ywPatrolScheme);
+            }
+        }
+    }
+
+
 
     /**
      * 鏍规嵁鏃ユ湡鐢熸垚浠诲姟
@@ -103,8 +131,8 @@
      * @param ywPatrolScheme
      */
     public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme){
-        if(ywPatrolScheme.getStartDate().getTime() > schemeDate.getTime()
-            || ywPatrolScheme.getEndDate().getTime() < schemeDate.getTime() ){
+        if(!(ywPatrolScheme.getStartDate().getTime() <= schemeDate.getTime()
+            && ywPatrolScheme.getEndDate().getTime() >= schemeDate.getTime()) ){
             return;
         }
         if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){
@@ -114,17 +142,17 @@
                 return;
             }
             List<String> weeks = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
-            String weekStr = weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).findFirst().get();
-            if(StringUtils.isBlank(weekStr)){
+            if(weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).collect(Collectors.toList()).size()<=Constants.ZERO){
                 return;
             }
-        }else{
+
+        }else if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.TWO)){
             //姣忔湀鏍规嵁鏃ユ湡鐢熸垚 鏍规嵁鏃ユ湡鑾峰彇鏄摢澶�
             List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
-            String dayStr = DateUtil.getFomartDate(schemeDate,"dd");
-            if(Objects.isNull(days.stream().filter(i->StringUtils.equals(i,dayStr)).findFirst().get())){
+            Integer dayStr = Integer.valueOf(DateUtil.getFomartDate(schemeDate,"dd"));
+            if(days.stream().filter(i->i.equals(dayStr.toString())).collect(Collectors.toList()).size()<=Constants.ZERO){
                 return;
-            };
+            }
         }
         String schemeDateStr = DateUtil.getDate(schemeDate,"yyyy-MM-dd");
         //鏌ヨ褰撳ぉ鏄惁鐢熸垚杩囨暟鎹�
@@ -184,6 +212,20 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        //鍒ゆ柇鏄惁鏈夎繘琛屼腑鎴栧凡瓒呮湡鐨勪换鍔�
+        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda()
+                .eq(YwPatrolTask::getSchemeId,id)
+                .in(YwPatrolTask::getStatus,Constants.ONE,Constants.THREE,Constants.TWO)
+        )>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪杩涜涓�/宸插畬鎴愮殑浠诲姟锛屾棤娉曡繘琛屽垹闄�");
+        }
+        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda()
+                        .eq(YwPatrolTask::getSchemeId,id)
+                        .eq(YwPatrolTask::getStatus,Constants.ZERO)
+                        .le(YwPatrolTask::getEndDate,"now()")
+        )>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪宸茶秴鏈熺殑浠诲姟锛屾棤娉曡繘琛屽垹闄�");
+        }
         ywPatrolSchemeMapper.deleteById(id);
     }
 
@@ -276,26 +318,42 @@
         YwPatrolScheme model = pageWrap.getModel();
         queryWrapper.selectAll(YwPatrolScheme.class)
                 .select(" t2.realName as createUserName ")
-                .select(" t1.realName as userName ")
-                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolScheme::getUserIds)
+//                .select(" t1.realName as userName ")
+//                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolScheme::getUserIds)
                 .leftJoin(" system_user t2 on t.creator =  t2.id  ")
                 .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO)
                 .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle())
                 //鏌ヨ鏈夋椂娈典氦闆嗙殑鏁版嵁
-                .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()),
-                        " t.START_DATE <= '"+Utils.Date.getStart(pageWrap.getModel().getEndDate())+"' and t.END_DATE >= '"+Utils.Date.getStart(pageWrap.getModel().getStartDate())+"' "
-                )
-//                .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
-//                .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
+              /*  .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()),
+                        " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' or t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' "
+                )*/
+                .ge( model.getStartDate()!=null,YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
+                .le(Objects.nonNull(model.getEndDate()),YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
+                .ge(Objects.nonNull(model.getStartDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getStartDateSec()))
+                .le(Objects.nonNull(model.getEndDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDateSec()))
                 .orderByDesc(YwPatrolScheme::getCreateDate)
         ;
         IPage<YwPatrolScheme> iPage = ywPatrolSchemeMapper.selectJoinPage(page,YwPatrolScheme.class,queryWrapper);
         for (YwPatrolScheme ywPatrolScheme:iPage.getRecords()) {
             this.getSchemeStatus(ywPatrolScheme);
+            //宸℃浜哄憳
+            this.getUserNames(ywPatrolScheme);
         }
         return PageData.from(iPage);
     }
 
+
+    public void getUserNames(YwPatrolScheme ywPatrolScheme){
+        if(Objects.nonNull(ywPatrolScheme)&&StringUtils.isNotBlank(ywPatrolScheme.getUserIds())){
+            List<SystemUser>  systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda()
+                    .apply(" find_in_set(id,'"+ywPatrolScheme.getUserIds()+"') ")
+            );
+            String userName = String.join(",",systemUserList.stream().map(i->i.getRealname()).collect(Collectors.toList()));
+            ywPatrolScheme.setUserName(userName);
+        }
+    }
+
+
     //鑾峰彇鐘舵��
     public void getSchemeStatus(YwPatrolScheme ywPatrolScheme){
         List<YwPatrolTask> ywPatrolTaskList = ywPatrolTaskMapper.selectList(new QueryWrapper<YwPatrolTask>().lambda()

--
Gitblit v1.9.3