Przeglądaj źródła

20240904 导出任务修改

lwhhszx 1 rok temu
rodzic
commit
db56336ebb

+ 8 - 0
src/main/java/cn/cslg/pas/common/core/base/Cycle.java

@@ -0,0 +1,8 @@
+package cn.cslg.pas.common.core.base;
+
+public class Cycle {
+    public static final String YEAR = "year";
+    public static final String QUARTER = "quarter";
+    public static final String MONTH = "month";
+    public static final String WEEK="week";
+}

+ 54 - 14
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.NowDateFirstMessVO;
 import cn.hutool.core.date.DateUtil;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
@@ -11,6 +12,9 @@ import org.slf4j.LoggerFactory;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.regex.Pattern;
 
@@ -45,17 +49,17 @@ public class DateUtils2 {
         List<DateTime> dateTimes = new ArrayList<>();
         dateTimes.add(dateStart);
         DateTime minDate1 = new DateTime();
-        DateTime minDate2= new DateTime();
+        DateTime minDate2 = new DateTime();
         Integer startYear = dateStart.getYear();
         Integer startMonth = dateStart.getMonthOfYear();
         Integer startDay = dateStart.getDayOfYear();
         Integer endYear = dateEnd.getYear();
         Integer endMonth = dateEnd.getMonthOfYear();
         Integer endDay = dateEnd.getDayOfYear();
-        if (startYear.equals(endYear) ) {
+        if (startYear.equals(endYear)) {
             if (startMonth.equals(endMonth)) {
-                if (startDay .equals(endDay) ) {
-                    minDate1=dateStart;
+                if (startDay.equals(endDay)) {
+                    minDate1 = dateStart;
                 } else {
                     int diffDay = endDay - startDay;
                     int minDay = diffDay / 2;
@@ -64,21 +68,21 @@ public class DateUtils2 {
             } else {
                 int diffMonth = endYear - startYear;
                 int minMonth = diffMonth / 2;
-                if(minMonth==0){
-                    minMonth=1;
+                if (minMonth == 0) {
+                    minMonth = 1;
                 }
                 minDate1 = dateStart.plusMonths(minMonth).minusDays(1);
-                minDate2 =dateStart.plusMonths(minMonth);
+                minDate2 = dateStart.plusMonths(minMonth);
             }
         } else {
             int diffYear = endYear - startYear;
             int minYear = diffYear / 2;
-            if(minYear==0){
-                minYear=1;
+            if (minYear == 0) {
+                minYear = 1;
             }
             minDate1 = dateStart.plusYears(minYear).minusDays(1);
-            minDate2 =dateStart.plusYears(minYear);
-            if(minDate1.isAfter(minDate2)){
+            minDate2 = dateStart.plusYears(minYear);
+            if (minDate1.isAfter(minDate2)) {
                 System.out.println("aa");
             }
         }
@@ -96,7 +100,7 @@ public class DateUtils2 {
 
     public static Date formStrToDate(String dateString) {
         try {
-            if(dateString==null||dateString.trim().equals("")){
+            if (dateString == null || dateString.trim().equals("")) {
                 return null;
             }
             SimpleDateFormat formatter;
@@ -185,7 +189,7 @@ public class DateUtils2 {
     public static String getDateIndexStr(Date date, String type) {
         StringBuilder dateStr = new StringBuilder();
         int year = DateUtils2.getDateYear(date);
-        dateStr.append(year+"年");
+        dateStr.append(year + "年");
         switch (type) {
             case "week":
                 int week = DateUtils2.getDateWeekIndex(date);
@@ -193,7 +197,7 @@ public class DateUtils2 {
                 break;
             case "month":
                 int month = DateUtils2.getDateMonthIndex(date);
-                dateStr.append( month + "月");
+                dateStr.append(month + "月");
                 break;
             case "quarter":
                 int quarter = DateUtils2.getDateQuarterIndex(date);
@@ -204,4 +208,40 @@ public class DateUtils2 {
         return reDate;
     }
 
+    public static NowDateFirstMessVO getNowDateFirstMessage(LocalDate today) {
+
+        if (today == null) {
+            today = LocalDate.now();
+        }
+
+        // 假设我们以周一为一周的第一天
+        DayOfWeek firstDayOfWeek = DayOfWeek.SUNDAY;
+
+        // 判断是否是这周的第一天
+        boolean isFirstDayOfWeek = today.getDayOfWeek() == firstDayOfWeek;
+
+        // 判断是否是这个月的第一天
+        boolean isFirstDayOfMonth = today.getDayOfMonth() == 1;
+
+
+        // 找到当前月份的第一天
+        LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+        // 检查这个第一天是否也是季度的第一天
+        // 季度月份是1月、4月、7月、10月
+        boolean isFirstDayOfQuarter = (firstDayOfMonth.getMonthValue() % 3 == 1);
+
+        // 判断是否是季度的第一天
+
+        // 判断是否是这年的第一天
+        boolean isFirstDayOfYear = today.getDayOfYear() == 1;
+        NowDateFirstMessVO nowDateFirstMessVO = new NowDateFirstMessVO();
+        nowDateFirstMessVO.setIsFirstDayOfMonth(isFirstDayOfMonth);
+        nowDateFirstMessVO.setIsFirstDayOfQuarter(isFirstDayOfQuarter);
+        nowDateFirstMessVO.setIsFirstDayOfYear(isFirstDayOfYear);
+        nowDateFirstMessVO.setIsFirstDayOfWeek(isFirstDayOfWeek);
+        return nowDateFirstMessVO;
+
+    }
+
+
 }

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

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.utils.utilVO;
+
+import lombok.Data;
+
+@Data
+public class NowDateFirstMessVO {
+    private Boolean isFirstDayOfWeek;
+    private Boolean isFirstDayOfMonth;
+    private Boolean isFirstDayOfQuarter;
+    private Boolean isFirstDayOfYear;
+}

+ 1 - 1
src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java

@@ -90,7 +90,7 @@ public class ImportTaskAMVO {
 
     private Integer messageThreadDoneCounter;
 
-
+ private  Boolean ifCreateBySys;
     private Integer messageThreadCounter;
     private String patentNoStr;
     private List<EsCustomFieldDTO> fieldDTOS;

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

@@ -16,6 +16,9 @@ import cn.cslg.pas.service.business.ScenarioService;
 import cn.cslg.pas.service.business.SystemDictService;
 import cn.cslg.pas.service.business.es.EsCustomFieldService;
 import cn.cslg.pas.service.common.PersonFieldService;
+import cn.cslg.pas.service.quartzService.JobService;
+import cn.cslg.pas.service.quartzService.QrtzTaskDTO;
+import cn.cslg.pas.service.quartzService.QuartzVO;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,7 +46,8 @@ public class CommonController {
     @Autowired
     private EsCustomFieldService esCustomFieldService;
 
-
+   @Autowired
+   private JobService jobService;
     @PostMapping("getOsSystemDict")
     @Operation(summary = "根据类型获取所有字典项")
     public Response getOSSystemDict(@RequestBody List<String> types) {
@@ -141,4 +145,21 @@ public class CommonController {
         return Response.success(records);
     }
 
+
+    @GetMapping("addSysCycleJob")
+    @Operation(summary = "获得检索栏位")
+    public Response addSysCycleJob() throws Exception{
+        QrtzTaskDTO qrtzTaskDTO =new QrtzTaskDTO();
+        QuartzVO quartzVO =new QuartzVO();
+        quartzVO.setJobName("sys_cycle_job");
+        quartzVO.setJobGroupName("sys_cycle_job_group");
+        quartzVO.setTriggerGroupName("sys_cycle_trigger_group");
+        quartzVO.setTriggerName("sys_cycle_trigger");
+        qrtzTaskDTO.setQuartzVO(quartzVO);
+        qrtzTaskDTO.setJobClass("cn.cslg.pas.service.quartzService.SysImportPatentJobService");
+        qrtzTaskDTO.setCron("0/15 * * * * ? *");
+        jobService.addJob(qrtzTaskDTO);
+        return Response.success("");
+    }
+
 }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/ImportTask.java

@@ -101,4 +101,6 @@ public class ImportTask extends BaseEntity<ImportTask> {
 
     @TableField(value = "last_update_to_date")
     private Date lastUpdateToDate;
+    @TableField(value = "if_create_by_sys")
+    private Boolean ifCreateBySys;
 }

+ 97 - 9
src/main/java/cn/cslg/pas/service/MailSendService.java

@@ -1,10 +1,19 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.utils.DateUtils2;
 import cn.cslg.pas.common.utils.RabbitMQUtils;
+import cn.cslg.pas.domain.business.ImportTask;
+import cn.cslg.pas.domain.business.ImportTaskCondition;
+import cn.cslg.pas.domain.business.Project;
+import cn.cslg.pas.domain.business.SystemDict;
+import cn.cslg.pas.service.business.ImportTaskConditionService;
+import cn.cslg.pas.service.business.ProjectService;
+import cn.cslg.pas.service.business.SystemDictService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -21,6 +30,12 @@ public class MailSendService {
     private String url;
     @Autowired
     private RabbitMQUtils rabbitMQUtils;
+    @Autowired
+    private ImportTaskConditionService importTaskConditionService;
+    @Autowired
+    private ProjectService projectService;
+    @Autowired
+    private SystemDictService systemDictService;
 
     //发送协同邮件
     public String sendSynery(String personId, Boolean ifInner, Integer projectId, Integer taskId, Integer reportType, String code) {
@@ -131,16 +146,89 @@ public class MailSendService {
         if (!res.equals("")) {
             JSONObject jsonObject = JSONObject.parseObject(res);
             List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
-           Personnel personnel =personnels.get(0);
+            Personnel personnel = personnels.get(0);
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("title", "任务通知");
+            map.put("template", "mail/eTaskDone.html");
+            map.put("value1", personnel.getPersonnelName());
+            map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+            map.put("email", personnel.getPersonnelEmail());
+            map.put("value2", taskTypeName);
+            map.put("value3", taskName);
+            rabbitMQUtils.sendEmailMessage(map);
+        }
+    }
+
+
+    public void sendCycleImportTaskDoneEmail(ImportTask importTask) {
+        ImportTaskCondition importTaskCondition = importTaskConditionService.getById(importTask.getImportTaskConditionId());
+        Integer projectId = importTaskCondition.getProjectId();
+        Project project = projectService.getById(projectId);
+        String personId = importTask.getCreateId();
+        String res = "";
+        try {
+            res = permissionService.getPersonnelByIdsFromPCS(Arrays.asList(personId));
+        } catch (Exception e) {
+        }
+        if (!res.equals("")) {
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
+            Personnel personnel = personnels.get(0);
             Map<String, Object> map = new LinkedHashMap<>();
-            map.put("title","任务通知");
-            map.put("template","mail/eTaskDone.html");
-            map.put("value1",personnel.getPersonnelName());
-            map.put("img","\\src\\main\\resources\\mail\\logo.png");
-            map.put("email",personnel.getPersonnelEmail());
-            map.put("value2",taskTypeName);
-            map.put("value3",taskName);
+            map.put("title", "监控通知");
+            map.put("template", "mail/cycleTaskDone.html");
+            map.put("value1", personnel.getPersonnelName());
+            map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+            map.put("email", personnel.getPersonnelEmail());
+            map.put("value2", project.getName());
+            String dateRange = "";
+            if (importTask != null) {
+                if (importTask.getLastUpdateToDate() != null) {
+                    if (importTask.getUpdateToDate() != null) {
+                        String toDateStr = DateUtils2.dateTimeToPatentStr(importTask.getUpdateToDate());
+                        String fromDateStr = DateUtils2.dateTimeToPatentStr(importTask.getLastUpdateToDate());
+                        dateRange = toDateStr + "~" + fromDateStr;
+                    }
+
+                } else if (importTask.getUpdateToDate() != null) {
+                    String toDateStr = DateUtils2.dateTimeToPatentStr(importTask.getUpdateToDate());
+
+                    dateRange = "<" + toDateStr;
+
+                }
+            }
+            map.put("value3", dateRange);
+            map.put("value4", importTask.getAllNum());
             rabbitMQUtils.sendEmailMessage(map);
         }
-}
+    }
+
+    public void sendSysCycleStartEmail() {
+        LambdaQueryWrapper<SystemDict> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(SystemDict::getType, "ADMIN");
+        List<SystemDict> systemDictList = systemDictService.list(queryWrapper);
+        if(systemDictList.size()==0){
+            return;
+        }
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("title", "监控通知");
+        map.put("template", "mail/sysCycleStart.html");
+        map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+        if (systemDictList != null && systemDictList.size() > 0) {
+            SystemDict systemDict = systemDictList.remove(0);
+            map.put("email", systemDict.getValue());
+            if (systemDictList.size() > 0) {
+                String[] ccs = new String[systemDictList.size()];
+                for (int i = 0; i < systemDictList.size(); i++) {
+                    ccs[i] = systemDictList.get(i).getValue();
+                }
+                map.put("cc", ccs);
+            }
+
+        }
+
+
+        rabbitMQUtils.sendEmailMessage(map);
+
+    }
 }

+ 24 - 9
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -20,6 +20,7 @@ import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ImportTaskMapper;
+import cn.cslg.pas.service.MailSendService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.importPatent.SchedulingTaskService;
@@ -81,6 +82,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
     private ProjectService projectService;
     @Autowired
     private ImportTaskConditionService importTaskConditionService;
+    @Autowired
+    private MailSendService mailSendService;
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
@@ -487,7 +490,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
                 importTask.setAllNum(exportTaskDTO.getAllNum());
             }
             importTask.setDoneNum(exportTaskDTO.getDoneNum());
-            if(exportTaskDTO.getDefaultNum()!=null) {
+            if (exportTaskDTO.getDefaultNum() != null) {
                 importTask.setDefaultNum(exportTaskDTO.getDefaultNum());
             }
             importTask.setFinishTime(exportTaskDTO.getFinishTime());
@@ -547,6 +550,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
     }
 
     public void addImportTaskByCondition(ImportTaskCondition importTaskCondition) {
+
+        ImportTask importTask = new ImportTask();
         //根据id查询最近更新的任务
         LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ImportTask::getImportTaskConditionId, importTaskCondition.getId())
@@ -557,16 +562,21 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         Date toDate = DateUtils.getDate(date, -7);
         if (lastImportTask == null) {
             String toDateStr = DateUtils2.dateTimeToPatentStr(toDate);
-            condition = condition + " and PD<" + toDateStr;
+            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 + ")";
         }
         PatentStarListDTO patentStarListDto = new PatentStarListDTO()
@@ -575,18 +585,17 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
                 .setRowCount(10)
                 .setDBType(importTaskCondition.getDbType());
         //调用一般接口返回一批专利著录相关数据
-        ImportTask importTask = new ImportTask();
+
         try {
             Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
-            if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-                if (resultMap == null) {
+            if (resultMap == null) {
                     importTask.setAllNum(-1);
-                }
             } else {
 
                 importTask.setAllNum((Integer) resultMap.get("total"));
             }
         } catch (Exception e) {
+            importTask.setAllNum(-1);
             e.printStackTrace();
 
         }
@@ -595,9 +604,15 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         importTask.setType(importTaskCondition.getType());
         importTask.setSearchCondition(condition);
         importTask.setCreateId(importTaskCondition.getCreateId());
-        importTask.setUpdateToDate(toDate);
-        importTask.insert();
-        schedulingTaskService.startTask();
+        importTask.setIfCreateBySys(true);
+        if (importTask.getAllNum() !=null&&importTask.getAllNum() <= 0) {
+            importTask.setState(2);
+            //mailSendService.sendCycleImportTaskDoneEmail(importTask);
+            importTask.insert();
+        } else {
+            importTask.insert();
+            schedulingTaskService.startTask();
+        }
     }
 
     public String getImportContentStr(Integer importContent, Integer taskType) {

+ 5 - 68
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -184,7 +184,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         //TODO 根据id删除导入任务信息(导入任务模块未完成,暂时不做)
 
         //删除专利数据库
-        this.removeQuartz(ids);
         LambdaQueryWrapper<PatentProject> patentProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
         patentProjectLambdaQueryWrapper.in(PatentProject::getProjectId, ids);
         this.remove(patentProjectLambdaQueryWrapper);
@@ -322,20 +321,12 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         /**
          * 装载patentProject
          */
-        if(patentProjectDTO.getIfUpdate()!=null&&patentProjectDTO.getIfUpdate()){
             ProjectQuartzSetDTO projectQuartzSetDTO =new ProjectQuartzSetDTO();
             projectQuartzSetDTO.setProjectId(project.getId());
             projectQuartzSetDTO.setIfUpdate(patentProjectDTO.getIfUpdate());
             projectQuartzSetDTO.setUpdateCycle(patentProjectDTO.getUpdateCycle());
             this.setProjectQuartz(projectQuartzSetDTO);
-        }
-        else{
-            PatentProject patentProject = new PatentProject();
-            patentProject.setProjectId(project.getId());
-            patentProject.setIfUpdate(patentProjectDTO.getIfUpdate());
-            patentProject.setUpdateCycle(patentProjectDTO.getUpdateCycle());
-            patentProject.insert();
-        }
+
 
         /**
          * 装载事件与project关联
@@ -1009,19 +1000,11 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                 throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "请输入周期");
             }
             project.setCrons(crons);
-            QuartzVO quartzVO = jobService.getPatentProjectVO(projectId);
-            QrtzTaskDTO qrtzTaskDTO = new QrtzTaskDTO();
-            qrtzTaskDTO.setCron(crons);
-            qrtzTaskDTO.setId(projectId);
-            qrtzTaskDTO.setQuartzVO(quartzVO);
-            qrtzTaskDTO.setJobClass("cn.cslg.pas.service.quartzService.ImportPatentJobService");
-            try {
-                jobService.addJob(qrtzTaskDTO);
-            } catch (Exception e) {
-                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "新建定时任务错误");
-            }
-            project.insert();
+
+
+
         }
+        project.insert();
         return project;
     }
 
@@ -1036,35 +1019,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             project.setCrons(crons);
         }
 
-        if (project.getIfUpdate() != null && project.getIfUpdate() && (ifUpdate == null || !ifUpdate)) {
-            QuartzVO quartzVO = jobService.getPatentProjectVO(projectId);
-            try {
-                jobService.deleteJob(quartzVO);
-            } catch (Exception e) {
-                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "新建定时任务错误");
-            }
-        } else if (project.getIfUpdate() != null && project.getIfUpdate() && ifUpdate != null && ifUpdate == true) {
-            if (project.getUpdateCycle().equals(updateCycle)) {
-                return project;
-            }
-            QuartzVO quartzVO = jobService.getPatentProjectVO(projectId);
-            QrtzTaskDTO qrtzTaskDTO = new QrtzTaskDTO();
-            qrtzTaskDTO.setCron(crons);
-            qrtzTaskDTO.setQuartzVO(quartzVO);
-            qrtzTaskDTO.setId(projectId);
-            jobService.updateJob(qrtzTaskDTO);
-        } else if ((project.getIfUpdate() == null || !project.getIfUpdate()) && (ifUpdate != null && ifUpdate)) {
-            QuartzVO quartzVO = jobService.getPatentProjectVO(projectId);
-            QrtzTaskDTO qrtzTaskDTO = new QrtzTaskDTO();
-            qrtzTaskDTO.setCron(crons);
-            qrtzTaskDTO.setQuartzVO(quartzVO);
-            qrtzTaskDTO.setJobClass("cn.cslg.pas.service.quartzService.ImportPatentJobService");
-            try {
-                jobService.addJob(qrtzTaskDTO);
-            } catch (Exception e) {
-                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "新建定时任务错误");
-            }
-        }
         project.setUpdateCycle(updateCycle);
         project.setIfUpdate(ifUpdate);
         project.updateById();
@@ -1092,23 +1046,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         return project.getIfUpdate();
     }
 
-    public void removeQuartz(List<Integer> ids) {
-        for (Integer id : ids) {
-            PatentProject project = this.getProjectQuartz(id);
-            if (project.getIfUpdate() != null && project.getIfUpdate()) {
-                QuartzVO quartzVO = jobService.getPatentProjectVO(id);
-          try {
-              jobService.deleteJob(quartzVO);
-
-          }
-          catch (Exception e){
-              throw  new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"创建定时任务错误");
-          }
-            }
-        }
-
-    }
-
 
     public PatentProject queryProjectQuartz(ProjectQuartzQueryDTO projectQuartzQueryDTO) {
         Integer projectId =projectQuartzQueryDTO.getProjectId();

+ 1 - 0
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -106,6 +106,7 @@ public class SchedulingTaskService {
         for (ImportTask importTask : importTaskList) {
 
             ImportTaskCondition importTaskCondition = importTaskConditions.stream().filter(item -> item.getId().equals(importTask.getImportTaskConditionId())).findFirst().orElse(null);
+
             LambdaQueryWrapper<PatentProject> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(PatentProject::getProjectId, importTaskCondition.getProjectId());
 

+ 3 - 2
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -238,11 +238,12 @@ public class TaskThread extends Thread {
         MailSendService mailSendService = applicationContext.getBean(MailSendService.class);
         task.setDoneNum(task.getAllNum());
         Integer type= importTaskAMVO.getType();
-        if(type!=null&&type==1) {
+        Boolean ifcreateBySys=importTaskAMVO.getIfCreateBySys();
+        if(ifcreateBySys==null||!ifcreateBySys) {
             mailSendService.sendImportTaskDoneEmail("导入任务", task.getName(), task.getCreateId());
         }
         else {
-
+            mailSendService.sendCycleImportTaskDoneEmail(task);
         }
     }
 }

+ 97 - 0
src/main/java/cn/cslg/pas/service/quartzService/SysImportPatentJobService.java

@@ -0,0 +1,97 @@
+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.NowDateFirstMessVO;
+import cn.cslg.pas.domain.business.ImportTaskCondition;
+import cn.cslg.pas.domain.business.PatentProject;
+import cn.cslg.pas.service.MailSendService;
+import cn.cslg.pas.service.business.ImportTaskConditionService;
+import cn.cslg.pas.service.business.ImportTaskService;
+import cn.cslg.pas.service.business.PatentProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.RequiredArgsConstructor;
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@DisallowConcurrentExecution
+@RequiredArgsConstructor
+public class SysImportPatentJobService extends QuartzJobBean {
+    private final ImportTaskConditionService importTaskConditionService;
+    private final ImportTaskService importTaskService;
+    private final PatentProjectService patentProjectService;
+    private final MailSendService mailSendService;
+
+    @Override
+    public void executeInternal(JobExecutionContext context) throws JobExecutionException {
+//        mailSendService.sendSysCycleStartEmail();
+        LocalDate localDate = LocalDate.of(2024, 9, 1);
+        NowDateFirstMessVO messVO = DateUtils2.getNowDateFirstMessage(localDate);
+        Boolean isFirstDayOfWeek = messVO.getIsFirstDayOfWeek();
+        Boolean isFirstDayOfMonth = messVO.getIsFirstDayOfMonth();
+        Boolean isFirstDayOfQuarter = messVO.getIsFirstDayOfQuarter();
+        Boolean isFirstDayOfYear = messVO.getIsFirstDayOfYear();
+        List<String> cycles = new ArrayList<>();
+        if (isFirstDayOfWeek != null && isFirstDayOfWeek) {
+            cycles.add(Cycle.WEEK);
+        }
+        if (isFirstDayOfMonth != null && isFirstDayOfMonth) {
+            cycles.add(Cycle.MONTH);
+        }
+        if (isFirstDayOfQuarter != null && isFirstDayOfQuarter) {
+            cycles.add(Cycle.QUARTER);
+        }
+        if (isFirstDayOfYear != null && isFirstDayOfYear) {
+            cycles.add(Cycle.YEAR);
+        }
+
+        if (cycles.size() <= 0) {
+            return;
+        }
+        LambdaQueryWrapper<PatentProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PatentProject::getIfUpdate, true)
+                .in(PatentProject::getUpdateCycle, cycles);
+        List<PatentProject> patentProjects = patentProjectService.list(queryWrapper);
+        if (patentProjects != null && patentProjects.size() != 0) {
+            List<Integer> projectId = patentProjects.stream().map(PatentProject::getProjectId).collect(Collectors.toList());
+            //根据id查询检索条件
+            LambdaQueryWrapper<ImportTaskCondition> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(ImportTaskCondition::getProjectId, projectId);
+            queryWrapper1.eq(ImportTaskCondition::getIfCycle, true)
+                    .eq(ImportTaskCondition::getIfUpdate, true);
+            List<ImportTaskCondition> importTaskConditions = importTaskConditionService.list(queryWrapper1);
+
+            importTaskConditions.forEach(item -> {
+                importTaskService.addImportTaskByCondition(item);
+            });
+        }
+
+
+    }
+
+    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);
+        });
+
+
+    }
+}