Jelajahi Sumber

1.添加定时任务任务到导出
2.掌柜任务池已承保导出添加校验

wuhp 1 tahun lalu
induk
melakukan
b874af1beb

+ 8 - 0
src/main/java/com/ydtech/modules/fnc/dao/InsExcelTaskAsyncMapper.java

@@ -7,9 +7,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface InsExcelTaskAsyncMapper  extends  BaseMapper<InsExcelTaskEntity>{
 
     Page<InsExcelTaskEntity> queryPage(@Param("vo") InsExcelTaskDto insExcelTaskDto,@Param("page") Page<InsExcelTaskEntity> page);
 
+    /**
+     *
+     * @param nowTime
+     * @return  查询任务集合
+     */
+    List<InsExcelTaskEntity> selectAllList(InsExcelTaskDto insExcelTaskDto);
 }

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/dto/InsExcelTaskDto.java

@@ -38,4 +38,7 @@ public class InsExcelTaskDto {
     @ApiModelProperty("页数")
     private int pageSize;
 
+    @ApiModelProperty("当前时间")
+    private String nowTime;
+
 }

+ 7 - 0
src/main/java/com/ydtech/modules/fnc/service/InsExcelTaskAsyncService.java

@@ -22,4 +22,11 @@ public interface InsExcelTaskAsyncService   extends IService<InsExcelTaskEntity>
      * @return 任务分页
      */
     BasePageResult<InsExcelTaskEntity> queryPage(InsExcelTaskDto insExcelTaskDto);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Description: 任务中心的数据保留7天,7天后删除任务中心数据以及任务中心列表。
+     */
+    void batchDelete(String nowTime);
+
 }

+ 19 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsExcelTaskAsyncServiceImpl.java

@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.io.File;
@@ -208,4 +209,22 @@ public class InsExcelTaskAsyncServiceImpl extends ServiceImpl<InsExcelTaskAsyncM
         return new BasePageResult<>(insExcelTaskDto.getPageNum(), page.getSize(), resultPage.getTotal(), page.getPages(),
                 resultPage.getRecords());
     }
+    /**
+     *  @version
+     *  @author: whp
+     *  @Description: 任务中心的数据保留7天,7天后删除任务中心数据以及任务中心列表。
+     */
+    @Override
+    @Transactional
+    public void batchDelete(String nowTime) {
+        InsExcelTaskDto insExcelTaskDto = new InsExcelTaskDto();
+        insExcelTaskDto.setNowTime(nowTime);
+//      如果与当前时间差大于等于7则删除
+        List<InsExcelTaskEntity> list = baseMapper.selectAllList(insExcelTaskDto);
+        List<String> idList = list.stream()
+                .map(InsExcelTaskEntity::getId)
+                .filter(id -> id!= null)
+                .collect(Collectors.toList());
+        this.removeByIds(idList);
+    }
 }

+ 45 - 0
src/main/java/com/ydtech/modules/fnc/timer/InsExcelTaskAsyncTimer.java

@@ -0,0 +1,45 @@
+package com.ydtech.modules.fnc.timer;
+
+import com.ydtech.modules.fnc.service.InsExcelTaskAsyncService;
+import com.ydtech.utils.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 控制台导出任务 添加定时任务
+ */
+
+@Slf4j
+@Component
+public class InsExcelTaskAsyncTimer {
+
+    @Autowired
+    private InsExcelTaskAsyncService insExcelTaskAsyncService;
+
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Description: 任务中心的数据保留7天,7天后删除任务中心数据以及任务中心列表。
+     */
+    @Scheduled(cron = "0 0 0 * * *")
+    private void updateOrderDateNoon() {
+        //如果合同得失效日期有值如果过今天 超过失效日期则改为合同失效
+        log.info("定时删除控制台任务导出数据,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        String nowTime = DateUtil.getDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss");
+
+        try {
+            insExcelTaskAsyncService.batchDelete(nowTime);
+            log.info("定时删除控制台任务导出数据");
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("定时删除控制台任务导出数据失败:{}", e.getMessage());
+        }
+    }
+
+}

+ 48 - 19
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -2491,36 +2491,52 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         String quoteStartDateStr = orderQueryVo.getQuoteStartDateStr();
         String quoteEndDateStr = orderQueryVo.getQuoteEndDateStr();
-
         final int day = 30;
         if("3".equals(orderQueryVo.getOrderStatus())){
-            if((StringUtils.isEmpty(signStartDateStr) || StringUtils.isEmpty(signEndDateStr))) {
+            if ((StringUtils.isEmpty(signStartDateStr) || StringUtils.isEmpty(signEndDateStr)) && StringUtils.isEmpty(quoteStartDateStr)) {
                 throw new SystemException("导出已承保数据时,1.签单时间必填;2.选择的签单时间(开始日期-结束日期)>30天,导出时,按结束时间往前+30天的数据做导出");
+            }else if ((StringUtils.isEmpty(quoteStartDateStr) || StringUtils.isEmpty(quoteEndDateStr))  &&  StringUtils.isEmpty(signStartDateStr) ){
+                throw new SystemException("导出已承保数据时,1.录单时间必填;2.选择的录单时间(开始日期-结束日期)>30天,导出时,按结束时间往前+30天的数据做导出");
+            }
+            if(StringUtils.isNotEmpty(signStartDateStr)){
+              String time =this.getTimeDate(signStartDateStr,signEndDateStr,day);
+              if(StringUtils.isNotEmpty(time)){
+                  orderQueryVo.setSignStartDateStr(time);
+              }
             }
-            DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-            LocalDate startDate = LocalDate.parse(signStartDateStr, pattern);
-            LocalDate endDate = LocalDate.parse(signEndDateStr, pattern);
-            long between = ChronoUnit.DAYS.between(startDate, endDate);
-            if (between > day) {
-                LocalDate localDate = endDate.minusDays(day);
-                orderQueryVo.setSignStartDateStr(localDate.format(pattern));
+            if(StringUtils.isNotEmpty(quoteStartDateStr)){
+                String time =this.getTimeDate(quoteStartDateStr,quoteEndDateStr,day);
+                if(StringUtils.isNotEmpty(time)){
+                    orderQueryVo.setQuoteStartDateStr(time);
+                }
             }
+
+//            DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+//            LocalDate startDate = LocalDate.parse(signStartDateStr, pattern);
+//            LocalDate endDate = LocalDate.parse(signEndDateStr, pattern);
+//            long between = ChronoUnit.DAYS.between(startDate, endDate);
+//            if (between > day) {
+//                LocalDate localDate = endDate.minusDays(day);
+//                orderQueryVo.setSignStartDateStr(localDate.format(pattern));
+//            }
         }else{
             if((StringUtils.isEmpty(quoteStartDateStr) || StringUtils.isEmpty(quoteEndDateStr))) {
                 throw new SystemException("导出非已承保数据时,1.录单时间必填;2.选择的录单时间(开始日期-结束日期)>30天,导出时,按结束时间往前+30天的数据做导出");
             }
-            DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-            LocalDate startDate = LocalDate.parse(quoteStartDateStr, pattern);
-            LocalDate endDate = LocalDate.parse(quoteEndDateStr, pattern);
-            long between = ChronoUnit.DAYS.between(startDate, endDate);
-            if (between > day) {
-                LocalDate localDate = endDate.minusDays(day);
-                orderQueryVo.setQuoteStartDateStr(localDate.format(pattern));
+
+            String time = this.getTimeDate(quoteStartDateStr, quoteEndDateStr, day);
+            if (StringUtils.isNotEmpty(time)) {
+                orderQueryVo.setQuoteStartDateStr(time);
             }
+//            DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+//            LocalDate startDate = LocalDate.parse(quoteStartDateStr, pattern);
+//            LocalDate endDate = LocalDate.parse(quoteEndDateStr, pattern);
+//            long between = ChronoUnit.DAYS.between(startDate, endDate);
+//            if (between > day) {
+//                LocalDate localDate = endDate.minusDays(day);
+//                orderQueryVo.setQuoteStartDateStr(localDate.format(pattern));
+//            }
         }
-
-
-
         switch (orderLinkTypeConstants) {
             case ORDER_LINK_TYPE_CONSTANTS_1:
                 agentUserIds = sysUserService.getUserIdsByLeaderId(orderQueryVo.getUserId());
@@ -2558,5 +2574,18 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         throw new SystemException("文件导出失败");
     }
 
+    private String getTimeDate(String startDateStr, String endDateStr, int day) {
+        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate startDate = LocalDate.parse(startDateStr, pattern);
+        LocalDate endDate = LocalDate.parse(endDateStr, pattern);
+        long between = ChronoUnit.DAYS.between(startDate, endDate);
+        if (between > day) {
+            LocalDate localDate = endDate.minusDays(day);
+            return localDate.format(pattern);
+        } else {
+            return null;
+        }
+    }
+
 
 }

+ 16 - 6
src/main/resources/mapper/modules/fnc/InsExcelTaskAsyncMapper.xml

@@ -2,10 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ydtech.modules.fnc.dao.InsExcelTaskAsyncMapper">
 
-        <select id="queryPage" resultType="com.ydtech.modules.fnc.entity.InsExcelTaskEntity">
-            select iet.*,su.name  as "userName"
-            from ins_excel_task iet
-            left join sys_user su  on su.id = iet.user_id
-            order by create_time desc
-        </select>
+    <select id="queryPage" resultType="com.ydtech.modules.fnc.entity.InsExcelTaskEntity">
+        select iet.*, su.name as "userName"
+        from ins_excel_task iet
+                 left join sys_user su on su.id = iet.user_id
+        order by create_time desc
+    </select>
+
+
+    <select id="selectAllList" resultType="com.ydtech.modules.fnc.entity.InsExcelTaskEntity">
+        select * from ins_excel_task iet
+        <where>
+            <if test="nowTime !=null and nowTime!='' ">
+                TIMESTAMPDIFF(DAY, iet.create_time, #{nowTime})> 7;
+            </if>
+        </where>
+    </select>
 </mapper>