Browse Source

定时任务

ljy121 1 year ago
parent
commit
159261e624

+ 5 - 0
zjugis-business/pom.xml

@@ -88,6 +88,11 @@
             <artifactId>zjugis-spring-boot-starter-excel</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.zjugis.cloud</groupId>
+            <artifactId>zjugis-spring-boot-starter-job</artifactId>
+        </dependency>
+
         <!-- Config 配置中心相关 -->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>

+ 0 - 1
zjugis-business/src/main/java/com/zjugis/business/bean/entity/ContractMessage.java

@@ -13,7 +13,6 @@ import lombok.Data;
 
 
 @Data
-
 public class ContractMessage extends BaseEntity {
 
 /**

+ 50 - 0
zjugis-business/src/main/java/com/zjugis/business/job/ProjectCostJob.java

@@ -0,0 +1,50 @@
+package com.zjugis.business.job;
+
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zjugis.business.bean.entity.ProjectCost;
+import com.zjugis.business.service.ProjectCostService;
+import com.zjugis.business.service.ProjectService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2024/4/28 9:17
+ */
+@Component
+@Slf4j
+public class ProjectCostJob {
+
+    @Autowired
+    ProjectCostService projectCostService;
+
+    @Autowired
+    ProjectService projectService;
+
+
+    @XxlJob("projectCostJob")
+    public void projectCostJob(){
+        LocalDate now = LocalDate.now();
+        int year = now.getYear();
+        int month = now.getMonthValue();
+        LocalDate today = LocalDate.of(year, month, 1);
+        List<String> records = projectService.selectAllIds();
+        List<String> ids = projectCostService.selectCurMonthProjectIds(year, month);
+        List<String> notInIds = records.stream().filter(id -> !ids.contains(id)).collect(Collectors.toList());
+        List<ProjectCost> insertBatch = new ArrayList<>(notInIds.size());
+        for (String id : notInIds) {
+            ProjectCost entity = new ProjectCost();
+            entity.setProjectId(id);
+            entity.setCountDate(today);
+            insertBatch.add(entity);
+        }
+        projectCostService.insertBatch(insertBatch);
+    }
+}

+ 7 - 2
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectCostMapper.java

@@ -1,13 +1,16 @@
 package com.zjugis.business.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ProjectCostDto;
 import com.zjugis.business.bean.entity.ProjectCost;
 import com.zjugis.business.bean.response.ProjectCostResponse;
 import com.zjugis.business.bean.response.ProjectMonthCostResponse;
+import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
 /**
  * 项目月度成本表表(ProjectCost)repository class
  *
@@ -15,7 +18,7 @@ import org.springframework.stereotype.Repository;
  * @since 2023-11-14 17:34:57
  */
 @Repository
-public interface ProjectCostMapper extends BaseMapper<ProjectCost> {
+public interface ProjectCostMapper extends BaseMapperX<ProjectCost> {
 
 
     ProjectCostResponse calculate(@Param("params") ProjectCostDto projectCostDto);
@@ -23,5 +26,7 @@ public interface ProjectCostMapper extends BaseMapper<ProjectCost> {
     ProjectCostResponse selectSubcontractCost(@Param("params") ProjectCostDto projectCostDto);
 
     Page<ProjectMonthCostResponse> pageByMonth(Page<ProjectCost> page, @Param("params") ProjectCostDto projectCostDto);
+
+    List<String> selectCurMonthProjectIds(String date);
 }
 

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectMapper.java

@@ -54,5 +54,7 @@ public interface ProjectMapper extends BaseMapperX<Project> {
     AmountInfo selectAmountInfo();
 
     ProcessInfo selectProcessInfo();
+
+    List<String> selectAllIds();
 }
 

+ 4 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectCostService.java

@@ -54,5 +54,9 @@ public interface ProjectCostService {
     Page<ProjectMonthCostResponse> pageByMonth(ProjectCostDto projectCostDto);
 
     ProjectCostResponse calculate(ProjectCostDto projectCostDto);
+
+    List<String> selectCurMonthProjectIds(int year,int month);
+
+    void insertBatch(List<ProjectCost> insertBatch);
 }
 

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectService.java

@@ -54,5 +54,7 @@ public interface ProjectService {
     void recover(String projectId);
 
     ProjectTotalInfoResp totalInfo();
+
+    List<String> selectAllIds();
 }
 

+ 19 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectCostServiceImpl.java

@@ -68,6 +68,25 @@ public class ProjectCostServiceImpl implements ProjectCostService {
         return cost;
     }
 
+    /**
+     * @param year
+     * @param month
+     * @return
+     */
+    @Override
+    public List<String> selectCurMonthProjectIds(int year, int month) {
+        return projectCostMapper.selectCurMonthProjectIds(year + "-" + month + "-01");
+    }
+
+    /**
+     * @param insertBatch
+     * @return
+     */
+    @Override
+    public void insertBatch(List<ProjectCost> insertBatch) {
+        projectCostMapper.insertBatch(insertBatch);
+    }
+
     @Override
     public String insert(ProjectCost projectCost) {
         projectCostMapper.insert(projectCost);

+ 8 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectServiceImpl.java

@@ -319,5 +319,13 @@ public class ProjectServiceImpl implements ProjectService {
         projectTotalInfo.setProcessInfo(processInfo);
         return projectTotalInfo;
     }
+
+    /**
+     * @return
+     */
+    @Override
+    public List<String> selectAllIds() {
+        return projectMapper.selectAllIds();
+    }
 }
 

+ 12 - 1
zjugis-business/src/main/resources/application-dev.yaml

@@ -15,4 +15,15 @@ logging:
   level:
     # 配置自己写的 MyBatis Mapper 打印日志
     com.zjugis.business.flow: WARN
-    com.zjugis.business.mapper: WARN
+    com.zjugis.business.mapper: WARN
+
+
+xxl:
+  job:
+    enabled: false # 是否开启调度中心,默认为 true 开启
+    admin:
+      addresses: http://10.10.10.7:18080/xxl-job-admin # 调度中心部署跟地址
+    executor:
+      appname: ${spring.application.name} # 执行器 AppName
+      logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
+    accessToken: default_token # 执行器通讯TOKEN

+ 4 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectCostMapper.xml

@@ -43,4 +43,8 @@
             countDate
         DESC
     </select>
+
+    <select id="selectCurMonthProjectIds" resultType="java.lang.String">
+        SELECT PROJECT_ID FROM PROJECT_COST WHERE COUNT_DATE = to_timestamp(#{date,jdbcType=VARCHAR},"YYYY-MM-DD") and ISVALID = 1 and PROJECT_ID IS NOT NUll;
+    </select>
 </mapper>

+ 6 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectMapper.xml

@@ -215,4 +215,10 @@
             ) T1 ON T1.PROJECT_ID = T.ID
         WHERE T.ISVALID = 1
     </select>
+
+    <select id="selectAllIds" resultType="java.lang.String">
+        SELECT ID FROM PROJECT
+        WHERE ISVALID = 1 AND FLOW_STATUS IN (90,99)
+
+    </select>
 </mapper>