lwhhszx 1 год назад
Родитель
Сommit
d4e463b834

+ 94 - 0
src/main/java/cn/cslg/pas/common/utils/DateUtils2.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.utils;
 
 
+import cn.cslg.pas.common.utils.utilVO.CheckDateConditionVO;
 import cn.cslg.pas.common.utils.utilVO.NowDateFirstMessVO;
 import cn.hutool.core.date.DateUtil;
 import org.joda.time.DateTime;
@@ -243,5 +244,98 @@ public class DateUtils2 {
 
     }
 
+    public static CheckDateConditionVO checkDateCycleCondition(LocalDate today) {
+        if (today == null) {
+            today = LocalDate.now();
+        }
+        // 假设我们以周一为一周的第一天
+        DayOfWeek firstDayOfWeek = DayOfWeek.SUNDAY;
+        // 判断是否是这周的第一天
+
+        // 判断是否是这个月的第一天
+        boolean  ifMeetMonth = today.getDayOfMonth() >=7;
+
+        // 找到当前月份的第一天
+        // 检查这个第一天是否也是季度的第一天
+        // 季度月份是1月、4月、7月、10月
+        boolean ifQuarter = (today.getMonthValue() % 3 == 1);
+        boolean ifMeetQuarterDay = today.getDayOfMonth() <7;
+        // 判断是否是季度的第一天
+        Boolean ifMeetQuarter = !(ifQuarter&&ifMeetQuarterDay);
+        // 判断是否是这年的第一天
+        boolean ifMeetYear = today.getDayOfYear() >=7;
+        CheckDateConditionVO checkDateConditionVO = new CheckDateConditionVO();
+        checkDateConditionVO.setIfMeetMonth(ifMeetMonth);
+        checkDateConditionVO.setIfMeetYear(ifMeetYear);
+        checkDateConditionVO.setIfMeetQuarter(ifMeetQuarter);
+        return checkDateConditionVO;
+    }
+
+
+    public static List<String> getWeekRange(LocalDate localDate){
+        List<String> ranges =new ArrayList<>();
+        LocalDate firstDayOfWeek = localDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+        LocalDate lastDayOfWeek = firstDayOfWeek.plusDays(6);
+        java.time.format.DateTimeFormatter formatter =java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd");
+        // 使用formatter将LocalDate转换为字符串
+        String formattedDate1 = firstDayOfWeek.format(formatter);
+        String formattedDate2 =lastDayOfWeek.format(formatter);
+        ranges.add(formattedDate1);
+        ranges.add(formattedDate2);
+        return ranges;
+    }
+
+    public static List<String> getMonthRange(LocalDate localDate){
+        List<String> ranges =new ArrayList<>();
+        LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
+        LocalDate lastDayOfMonth= localDate.with(TemporalAdjusters.lastDayOfMonth());
+        java.time.format.DateTimeFormatter formatter =java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd");
+        // 使用formatter将LocalDate转换为字符串
+        String formattedDate1 = firstDayOfMonth.format(formatter);
+        String formattedDate2 =lastDayOfMonth.format(formatter);
+        ranges.add(formattedDate1);
+        ranges.add(formattedDate2);
+        return ranges;
+    }
+
+    public static List<String> getQuartzRange(LocalDate localDate){
+
+        List<String> ranges =new ArrayList<>();
+        // 计算当前季度的起始月份
+        int startMonth = (localDate.getMonthValue() - 1) / 3 * 3 + 1;
+
+        // 获取当前季度的第一天
+        LocalDate firstDayOfQuarter = LocalDate.of(localDate.getYear(), startMonth, 1);
+
+        // 计算当前季度的结束月份
+        int endMonth = startMonth + 3;
+
+        // 获取当前季度的最后一天
+        LocalDate lastDayOfQuarter = LocalDate.of(localDate.getYear(), endMonth, 1).minusDays(1);
+        java.time.format.DateTimeFormatter formatter =java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd");
+        // 使用formatter将LocalDate转换为字符串
+        String formattedDate1 = firstDayOfQuarter.format(formatter);
+        String formattedDate2 =lastDayOfQuarter.format(formatter);
+        ranges.add(formattedDate1);
+        ranges.add(formattedDate2);
+        return ranges;
+    }
+
+    public static List<String> getYearRange(LocalDate localDate){
+        List<String> ranges =new ArrayList<>();
+
+        // 获取当前年的第一天(1月1日)
+        LocalDate firstDayOfYear = LocalDate.of(localDate.getYear(), 1, 1);
+
+        // 获取当前年的最后一天(12月31日)
+        LocalDate lastDayOfYear = LocalDate.of(localDate.getYear(), 12, 31);
+        java.time.format.DateTimeFormatter formatter =java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd");
+        String formattedDate1 = firstDayOfYear.format(formatter);
+        String formattedDate2 =lastDayOfYear.format(formatter);
+        ranges.add(formattedDate1);
+        ranges.add(formattedDate2);
+        return ranges;
+    }
+
 
 }

+ 11 - 0
src/main/java/cn/cslg/pas/common/utils/utilVO/CheckDateConditionVO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.utils.utilVO;
+
+import lombok.Data;
+
+@Data
+public class CheckDateConditionVO {
+    private Boolean ifMeetWeek;
+    private Boolean ifMeetMonth;
+    private Boolean ifMeetQuarter;
+    private Boolean ifMeetYear;
+}

+ 1 - 0
src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -158,6 +158,7 @@ public class CommonController {
         qrtzTaskDTO.setQuartzVO(quartzVO);
         qrtzTaskDTO.setJobClass("cn.cslg.pas.service.quartzService.SysImportPatentJobService");
         qrtzTaskDTO.setCron("0 0 0 * * ? *");
+        //qrtzTaskDTO.setCron("0/10 * * * * ?");
         jobService.addJob(qrtzTaskDTO);
         return Response.success("");
     }

+ 52 - 30
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.core.base.Cycle;
 import cn.cslg.pas.common.dto.ExportTaskDTO;
 import cn.cslg.pas.common.dto.ImportTaskDTO;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
@@ -42,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -84,7 +86,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
     private ImportTaskConditionService importTaskConditionService;
     @Autowired
     private MailSendService mailSendService;
-
+    @Autowired
+    private PatentProjectService patentProjectService;
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         List<String> sqls = formatQueryService.reSqls(queryRequest, "importTask");
@@ -493,7 +496,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             if (exportTaskDTO.getDefaultNum() != null) {
                 importTask.setDefaultNum(exportTaskDTO.getDefaultNum());
             }
-            if(exportTaskDTO.getDoneNum()!=null){
+            if (exportTaskDTO.getDoneNum() != null) {
                 importTask.setDoneNum(exportTaskDTO.getDoneNum());
 
             }
@@ -553,36 +556,55 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         return importTask.getId();
     }
 
-    public void addImportTaskByCondition(ImportTaskCondition importTaskCondition) {
-
-        ImportTask importTask = new ImportTask();
-        //根据id查询最近更新的任务
+    public void addImportTaskByCondition(ImportTaskCondition importTaskCondition,PatentProject project) {
+        String condition = importTaskCondition.getSearchCondition();
+        String updateCycle = project.getUpdateCycle();
+
+        if (updateCycle == null) {
+            return;
+        }
+        LocalDate localDate = LocalDate.now();
+        List<String> dateRange = new ArrayList<>();
+        switch (updateCycle) {
+            case Cycle.WEEK:
+                LocalDate localDateWeek = localDate.minusWeeks(2);
+                dateRange = DateUtils2.getWeekRange(localDateWeek);
+                break;
+            case Cycle.MONTH:
+                LocalDate localDateMonth = localDate.minusMonths(1);
+                dateRange = DateUtils2.getMonthRange(localDateMonth);
+                break;
+            case Cycle.QUARTER:
+                LocalDate localDateQuartz = localDate.minusMonths(4);
+                dateRange = DateUtils2.getQuartzRange(localDateQuartz);
+                break;
+            case Cycle.YEAR:
+                LocalDate localYear = localDate.minusYears(1);
+                dateRange = DateUtils2.getYearRange(localYear);
+                break;
+        }
+        if (dateRange.size() < 2) {
+            return;
+        }
+        Date start = DateUtils.strToDate(dateRange.get(0));
+        Date end = DateUtils.strToDate((dateRange.get(1)));
         LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ImportTask::getImportTaskConditionId, importTaskCondition.getId())
-                .orderByDesc(ImportTask::getUpdateToDate);
+                .eq(ImportTask::getUpdateToDate, end)
+                .eq(ImportTask::getLastUpdateToDate, start);
         ImportTask lastImportTask = this.getOne(queryWrapper, false);
-        String condition = importTaskCondition.getSearchCondition();
-        Date date = new Date();
-        Date toDate = DateUtils.getDate(date, -7);
-        if (lastImportTask == null) {
-            String toDateStr = DateUtils2.dateTimeToPatentStr(toDate);
-            condition = condition + " and ( PD<" + toDateStr + " or GD<" + toDateStr+")";
-            importTask.setUpdateToDate(toDate);
-        } else if (lastImportTask != null && lastImportTask.getUpdateToDate() != null) {
-            Date fromDate = DateUtils.getDate(lastImportTask.getUpdateToDate(), 1);
-            String fromDateStr = DateUtils2.dateTimeToPatentStr(fromDate);
-            String todateStr = DateUtils2.dateTimeToPatentStr(toDate);
-            importTask.setLastUpdateToDate(fromDate);
-            importTask.setUpdateToDate(toDate);
-            condition = condition + " and (PD=" + fromDateStr + "~" + todateStr + " or GD=" + fromDateStr + "~" + todateStr + ")";
-        } else if (lastImportTask != null && lastImportTask.getUpdateToDate() == null) {
-            Date fromDate = DateUtils.getDate(lastImportTask.getCreateTime(), -7);
-            String fromDateStr = DateUtils2.dateTimeToPatentStr(fromDate);
-            String todateStr = DateUtils2.dateTimeToPatentStr(toDate);
-            importTask.setLastUpdateToDate(fromDate);
-            importTask.setUpdateToDate(toDate);
-            condition = condition + " and (PD=" + fromDateStr + "~" + todateStr + " or GD=" + fromDateStr + "~" + todateStr + ")";
+        if (lastImportTask != null) {
+            return;
         }
+        ImportTask importTask = new ImportTask();
+
+
+            String fromDateStr = DateUtils2.dateTimeToPatentStr(start);
+            String todateStr = DateUtils2.dateTimeToPatentStr(end);
+            importTask.setLastUpdateToDate(start);
+            importTask.setUpdateToDate(end);
+            condition = condition + " and (PD=" + fromDateStr + "~" + todateStr + " or GD=" + fromDateStr + "~" + todateStr + ")";
+
         PatentStarListDTO patentStarListDto = new PatentStarListDTO()
                 .setCurrentQuery(condition)
                 .setPageNum(1)
@@ -593,7 +615,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         try {
             Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
             if (resultMap == null) {
-                    importTask.setAllNum(-1);
+                importTask.setAllNum(-1);
             } else {
 
                 importTask.setAllNum((Integer) resultMap.get("total"));
@@ -609,7 +631,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         importTask.setSearchCondition(condition);
         importTask.setCreateId(importTaskCondition.getCreateId());
         importTask.setIfCreateBySys(true);
-        if (importTask.getAllNum() !=null&&importTask.getAllNum() <= 0) {
+        if (importTask.getAllNum() != null && importTask.getAllNum() <= 0) {
             importTask.setState(2);
             mailSendService.sendCycleImportTaskDoneEmail(importTask);
             importTask.insert();

+ 10 - 10
src/main/java/cn/cslg/pas/service/business/PatentExportService.java

@@ -258,15 +258,7 @@ public class PatentExportService {
             }
             hssfWorkbook.write(out);
             log.info("导出excel结束,总数据量={},耗时={}ms", total, System.currentTimeMillis() - startTime);
-            WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
-            webSocketMessageVO.setProjectId(EsVO.getProjectId());
-            webSocketMessageVO.setCreateId(exportTask.getCreateId());
-            webSocketMessageVO.setCode(603);
-            webSocketMessageVO.setAllNum(total);
-            webSocketMessageVO.setCurrentNum(total);
-            webSocketMessageVO.setTaskId(exportTask.getTaskId());
-            webSocketMessageVO.setState(2);
-            messageService.sendPatentExportMessage(webSocketMessageVO);
+
             String fileGuid = "";
             if (out.toByteArray() != null && out.toByteArray().length != 0) {
                 fileGuid = parseByteToFileUtils.uploadFile(out.toByteArray(), 1);
@@ -280,7 +272,15 @@ public class PatentExportService {
             if (taskId == null) {
                 throw new XiaoShiException("导出记录失败");
             }
-
+            WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
+            webSocketMessageVO.setProjectId(EsVO.getProjectId());
+            webSocketMessageVO.setCreateId(exportTask.getCreateId());
+            webSocketMessageVO.setCode(603);
+            webSocketMessageVO.setAllNum(total);
+            webSocketMessageVO.setCurrentNum(total);
+            webSocketMessageVO.setTaskId(exportTask.getTaskId());
+            webSocketMessageVO.setState(2);
+            messageService.sendPatentExportMessage(webSocketMessageVO);
         } catch (FileNotFoundException e) {
             throw new FileNotFoundException();
         } catch (Exception e) {

+ 0 - 1
src/main/java/cn/cslg/pas/service/quartzService/ImportPatentJobService.java

@@ -31,7 +31,6 @@ private final ImportTaskService importTaskService;
                     .eq(ImportTaskCondition::getIfUpdate,true);
         List<ImportTaskCondition> importTaskConditions =importTaskConditionService.list(queryWrapper);
             importTaskConditions.forEach(item->{
-                importTaskService.addImportTaskByCondition(item);
             });
 
     }

+ 12 - 27
src/main/java/cn/cslg/pas/service/quartzService/SysImportPatentJobService.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service.quartzService;
 
 import cn.cslg.pas.common.core.base.Cycle;
 import cn.cslg.pas.common.utils.DateUtils2;
+import cn.cslg.pas.common.utils.utilVO.CheckDateConditionVO;
 import cn.cslg.pas.common.utils.utilVO.NowDateFirstMessVO;
 import cn.cslg.pas.domain.business.ImportTaskCondition;
 import cn.cslg.pas.domain.business.PatentProject;
@@ -33,23 +34,21 @@ public class SysImportPatentJobService extends QuartzJobBean {
 
     @Override
     public void executeInternal(JobExecutionContext context) throws JobExecutionException {
-        mailSendService.sendSysCycleStartEmail();
-        NowDateFirstMessVO messVO = DateUtils2.getNowDateFirstMessage(null);
-        Boolean isFirstDayOfWeek = messVO.getIsFirstDayOfWeek();
-        Boolean isFirstDayOfMonth = messVO.getIsFirstDayOfMonth();
-        Boolean isFirstDayOfQuarter = messVO.getIsFirstDayOfQuarter();
-        Boolean isFirstDayOfYear = messVO.getIsFirstDayOfYear();
+       // mailSendService.sendSysCycleStartEmail();
+        CheckDateConditionVO checkDateConditionVO = DateUtils2.checkDateCycleCondition(null);
+        Boolean ifMeetMonth = checkDateConditionVO.getIfMeetMonth();
+        Boolean ifMeetQuarter = checkDateConditionVO.getIfMeetQuarter();
+        Boolean ifMeetYear = checkDateConditionVO.getIfMeetYear();
         List<String> cycles = new ArrayList<>();
-        if (isFirstDayOfWeek != null && isFirstDayOfWeek) {
             cycles.add(Cycle.WEEK);
-        }
-        if (isFirstDayOfMonth != null && isFirstDayOfMonth) {
+
+        if (ifMeetMonth != null && ifMeetMonth) {
             cycles.add(Cycle.MONTH);
         }
-        if (isFirstDayOfQuarter != null && isFirstDayOfQuarter) {
+        if (ifMeetQuarter != null && ifMeetQuarter) {
             cycles.add(Cycle.QUARTER);
         }
-        if (isFirstDayOfYear != null && isFirstDayOfYear) {
+        if (ifMeetYear != null && ifMeetYear) {
             cycles.add(Cycle.YEAR);
         }
 
@@ -70,27 +69,13 @@ public class SysImportPatentJobService extends QuartzJobBean {
             List<ImportTaskCondition> importTaskConditions = importTaskConditionService.list(queryWrapper1);
 
             importTaskConditions.forEach(item -> {
-                importTaskService.addImportTaskByCondition(item);
+            PatentProject project=    patentProjects.stream().filter(t->t.getProjectId().equals(item.getProjectId())).findFirst().orElse(null);
+                importTaskService.addImportTaskByCondition(item,project);
             });
         }
 
 
     }
 
-    private void addProjectCycleTask(Integer projectId) {
-        LambdaQueryWrapper<PatentProject> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PatentProject::getIfUpdate, true)
-                .eq(PatentProject::getUpdateCycle, "");
-        //根据id查询检索条件
-        LambdaQueryWrapper<ImportTaskCondition> queryWrapper2 = new LambdaQueryWrapper<>();
-        queryWrapper2.eq(ImportTaskCondition::getProjectId, projectId);
-        queryWrapper2.eq(ImportTaskCondition::getIfCycle, true)
-                .eq(ImportTaskCondition::getIfUpdate, true);
-        List<ImportTaskCondition> importTaskConditions = importTaskConditionService.list(queryWrapper2);
-        importTaskConditions.forEach(item -> {
-            importTaskService.addImportTaskByCondition(item);
-        });
-
 
-    }
 }

+ 69 - 0
src/test/java/cn/cslg/pas/service/DateUtil2Tests.java

@@ -0,0 +1,69 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.DomainFieldDTO;
+import cn.cslg.pas.common.utils.DateUtils2;
+import cn.cslg.pas.common.utils.GenerateObjectUtil;
+import cn.cslg.pas.controller.AvoidDesignController;
+import cn.cslg.pas.domain.business.FollowUp;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+public class DateUtil2Tests {
+    @Autowired
+    private AvoidDesignService avoidDesignService;
+
+    @Autowired
+    private AvoidDesignController avoidDesignController;
+
+    @Autowired
+    private GenerateObjectUtil generateObjectUtil;
+
+    @Test
+    public void test() throws Exception {
+
+    }
+
+    @Test
+    public void testUpdate() {
+        LocalDate date =LocalDate.of(2023,9,13);
+     List<String>a=   DateUtils2.getMonthRange(date);
+System.out.println(a);
+    }
+
+    @Test
+    public void testUpdate1() {
+        LocalDate date =LocalDate.of(2023,9,13);
+        List<String>a=   DateUtils2.getYearRange(date);
+        System.out.println(a);
+    }
+
+    @Test
+    public void testUpdate2() {
+        LocalDate date =LocalDate.of(2023,9,13);
+        List<String>a=   DateUtils2.getQuartzRange(date);
+        System.out.println(a);
+    }
+
+    @Test
+    public void testUpdate3() {
+        LocalDate date =LocalDate.of(2023,9,13);
+        List<String>a=   DateUtils2.getMonthRange(date);
+        System.out.println(a);
+    }
+
+    @Test
+    public void testGet() throws Exception {
+
+    }
+}