Procházet zdrojové kódy

添加定时任务

wang_xy před 10 měsíci
rodič
revize
b33e64ec19

+ 2 - 1
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -4,13 +4,14 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * 启动程序
  *
  * @author ruoyi
  */
-
+@EnableScheduling
 @SpringBootApplication
 public class RuoYiApplication {
 

+ 62 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/timer/BaseTask.java

@@ -0,0 +1,62 @@
+package com.ruoyi.web.controller.timer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.util.Date;
+
+
+/**
+ * 将定时任务继承该类
+ * * 第一位,表示秒,取值0-59
+ * * 第二位,表示分,取值0-59
+ * * 第三位,表示小时,取值0-23
+ * * 第四位,日期天/日,取值1-31
+ * * 第五位,日期月份,取值1-12
+ * * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二周的意思
+ *           另外:1表示星期天,2表示星期一。
+ * (*)星号:可以理解为每的意思,每秒,每分,每天,每月,每年...
+ * (?)问号:问号只能出现在日期和星期这两个位置。
+ * (-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12
+ * (,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四
+ * (/)斜杠:如:x/y,x是开始值,y是步长,比如在第一位(秒) 0/15就是,从0秒开始,每15秒,最后就是0,15,30,45,60
+0 0 3 * * ?     每天3点执行
+0 5 3 * * ?     每天3点5分执行
+0 5 3 ? * *     每天3点5分执行,与上面作用相同
+0 5/10 3 * * ?  每天3点的 5分,15分,25分,35分,45分,55分这几个时间点执行
+0 10 3 ? * 1    每周星期天,3点10分 执行,注:1表示星期天
+0 10 3 ? * 1#3  每个月的第三个星期,星期天 执行,#号只能出现在星期的位置
+ *
+ **/
+public abstract class BaseTask implements SchedulingConfigurer {
+    private static Logger logger = LoggerFactory.getLogger(BaseTask.class);
+//    private String type = "DynamicScheduledTask";
+    private String pattern;
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
+        logger.info("DynamicScheduledTask====run:" + System.currentTimeMillis());
+        scheduledTaskRegistrar.addTriggerTask(()->{
+            run();
+        },(triggerContext)->{
+            CronTrigger cronTrigger = new CronTrigger(getPattern());
+            Date nextExecDate = cronTrigger.nextExecutionTime(triggerContext);
+            return nextExecDate;
+        });
+    }
+
+    /**
+     * 将执行的方法
+     */
+    protected abstract void run();
+    /**
+     * create by xqh on 2019/6/26 13:45
+     * 需要定义规则:pattern
+     */
+    protected abstract String getPattern();
+}
+
+

+ 20 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/timer/Test.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.timer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class Test extends BaseTask {
+    private static final String CRON = "0/20 * * * * ?";
+
+    @Override
+    protected void run() {
+        System.out.println("【系统启动】开始(每20秒输出一次)...");
+    }
+
+    @Override
+    protected String getPattern() {
+        return CRON;
+    }
+}

+ 4 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/domain/bo/ZEngineeringCivilBo.java

@@ -41,6 +41,10 @@ public class  ZEngineeringCivilBo extends BaseEntity {
      * 小区id
      */
     private String areaId;
+    /**
+     * 屏蔽小区id
+     */
+    private List notAreaId;
 
     /**
      * 楼宇id

+ 4 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringCivilServiceImpl.java

@@ -244,6 +244,7 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
         lqw.eq(StringUtils.isNotBlank(bo.getEnginClassification()), ZEngineeringCivil::getEnginClassification, bo.getEnginClassification());
         lqw.eq(StringUtils.isNotBlank(bo.getEnginCycle()), ZEngineeringCivil::getEnginCycle, bo.getEnginCycle());
         lqw.eq(StringUtils.isNotBlank(bo.getAreaId()), ZEngineeringCivil::getAreaId, bo.getAreaId());
+        lqw.notIn(!ObjectUtils.isEmpty(bo.getNotAreaId()), ZEngineeringCivil::getAreaId, bo.getNotAreaId());
         lqw.eq(StringUtils.isNotBlank(bo.getBuildingId()), ZEngineeringCivil::getBuildingId, bo.getBuildingId());
         lqw.eq(StringUtils.isNotBlank(bo.getUnitId()), ZEngineeringCivil::getUnitId, bo.getUnitId());
         lqw.eq(StringUtils.isNotBlank(bo.getDistrict()), ZEngineeringCivil::getDistrict, bo.getDistrict());
@@ -762,6 +763,7 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
     private LambdaQueryWrapper<ZEngineeringCivil> buildQueryWrapper(ZEngineeringCivilBo bo) {
         LambdaQueryWrapper<ZEngineeringCivil> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getDistrict()), ZEngineeringCivil::getDistrict, bo.getDistrict());
+        lqw.notIn(!ObjectUtils.isEmpty(bo.getNotAreaId()), ZEngineeringCivil::getAreaId, bo.getNotAreaId());
         lqw.eq(StringUtils.isNotBlank(bo.getAreaId()), ZEngineeringCivil::getAreaId, bo.getAreaId());
         lqw.eq(StringUtils.isNotBlank(bo.getBuildingId()), ZEngineeringCivil::getBuildingId, bo.getBuildingId());
         lqw.eq(StringUtils.isNotBlank(bo.getUnitId()), ZEngineeringCivil::getUnitId, bo.getUnitId());
@@ -798,6 +800,7 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
             lqw.eq(StringUtils.isNotBlank(bo.getEnginClassification()), ZEngineeringCivil::getEnginClassification, bo.getEnginClassification());
             lqw.eq(StringUtils.isNotBlank(bo.getEnginCycle()), ZEngineeringCivil::getEnginCycle, bo.getEnginCycle());
             lqw.eq(StringUtils.isNotBlank(bo.getAreaId()), ZEngineeringCivil::getAreaId, bo.getAreaId());
+            lqw.notIn(!ObjectUtils.isEmpty(bo.getNotAreaId()), ZEngineeringCivil::getAreaId, bo.getNotAreaId());
             lqw.eq(StringUtils.isNotBlank(bo.getBuildingId()), ZEngineeringCivil::getBuildingId, bo.getBuildingId());
             lqw.eq(StringUtils.isNotBlank(bo.getUnitId()), ZEngineeringCivil::getUnitId, bo.getUnitId());
             lqw.eq(StringUtils.isNotBlank(bo.getDistrict()), ZEngineeringCivil::getDistrict, bo.getDistrict());
@@ -1425,7 +1428,7 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
         izEngineeringReviewService.Civilinsert(zEngineeringCivil, zEngineeringReviewBo);
         areaMessageVo areaMessageVo = new areaMessageVo();
         if (zEngineeringCivilBo.getEnginClassification().equals("courtyard") || zEngineeringCivilBo.getEnginClassification().equals("overhead ")) {
-            if (!"".equals(zEngineeringCivilBo.getBuildingId())) {
+            if (StringUtils.isNotBlank(zEngineeringCivilBo.getBuildingId())) {
                 areaMessageVo = baseMapper.getAreaMessage(zEngineeringCivilBo.getBuildingId());
                 areaMessageVo.setHouseId("未知");
                 areaMessageVo.setUnitId("未知");

+ 1 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringInfoServiceImpl.java

@@ -1362,7 +1362,7 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
             //lqwstatis.eq(StringUtils.isNotBlank(zEngineeringNode.getType()), ZMaterialStatistics::getNodeType, zEngineeringNode.getType());
             ZMaterialStatistics zMaterialStatistics = zMaterialStatisticsMapper.selectOne(lqwstatis);
             if (!ObjectUtils.isEmpty(zMaterialStatistics)) {
-                zMaterialStatistics.setRealitySize(BigDecimal.valueOf(zMaterialStatistics.getRealitySize()).subtract(BigDecimal.valueOf(ObjectUtils.isEmpty(item.getNumber())?0:item.getNumber())).doubleValue());
+                zMaterialStatistics.setRealitySize(BigDecimal.valueOf(ObjectUtils.isEmpty(zMaterialStatistics.getRealitySize())?0:zMaterialStatistics.getRealitySize()).subtract(BigDecimal.valueOf(ObjectUtils.isEmpty(item.getNumber())?0:item.getNumber())).doubleValue());
                 zMaterialStatisticsMapper.updateById(zMaterialStatistics);
             }
         });

+ 12 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZEngineeringCivilMapper.xml

@@ -161,6 +161,12 @@
         <if test="p.district != null and p.district != ''">
             and district = #{p.district}
         </if>
+        <if test="p.notAreaId != null">
+            and a.area_id not in
+            <foreach collection="p.notAreaId" item="item" open="(" close=")" separator="," >
+                #{item}
+            </foreach>
+        </if>
         <if test="p.areaId != null and p.areaId != ''">
             and area_id = #{p.areaId}
         </if>
@@ -203,6 +209,12 @@
         <if test="p.areaId != null and p.areaId != ''">
             and a.area_id = #{p.areaId}
         </if>
+        <if test="p.notAreaId != null">
+            and a.area_id not in
+            <foreach collection="p.notAreaId" item="item" open="(" close=")" separator="," >
+                #{item}
+            </foreach>
+        </if>
         <if test="p.buildingId != null and p.buildingId != ''">
             and a.building_id = #{p.buildingId}
         </if>