Commit b1afc495 by zhangxingmin

push

parent 24017a14
package com.yd.csf.api.async; package com.yd.csf.api.async;
import com.yd.csf.api.service.XxlJobService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 预计发佣-异步类
*/
@Slf4j @Slf4j
@Component @Component
public class ApiExpectedFortuneAsyncService { public class ApiExpectedFortuneAsyncService {
@Autowired
private XxlJobService xxlJobService;
@Value("${xxl.job.executor.calmAppName}")
private String calmAppName;
/**
* 创建XXL-Job定时任务-保单冷静期-异步方法
* @param taskBizId
* @param scheduleTime
*/
// @Async("jobTaskExecutor")
public void addCalmScheduleJob(String taskBizId, Date scheduleTime) {
String taskName = "冷静期定时任务";
String jobId = xxlJobService.addScheduleJob(taskName,taskBizId,calmAppName,scheduleTime);
log.info("创建XXL-Job定时任务成功-->jobId:{}",jobId);
}
} }
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 保单冷静期定时任务表 前端控制器
* </p>
*
* @author zxm
* @since 2026-03-06
*/
@RestController
@RequestMapping("/calmTask")
public class CalmTaskController {
}
package com.yd.csf.api.response;
import com.yd.csf.api.dto.AlgorithmResDto;
import com.yd.csf.api.dto.ExecuteBillingDto;
import lombok.Data;
import java.util.List;
@Data
public class ApiExecuteBillingResponse {
private ExecuteBillingDto dto;
private List<AlgorithmResDto> algorithmResDtoList;
}
package com.yd.csf.api.response;
import com.yd.csf.api.dto.AlgorithmResDto;
import com.yd.csf.api.dto.ExecuteBillingDto;
import lombok.Data;
import java.util.List;
@Data
public class ApiExecuteRewardResponse {
private ExecuteBillingDto dto;
private List<AlgorithmResDto> algorithmResDtoList;
}
...@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortunePageResponseVO; import com.yd.csf.api.dto.ApiExpectedFortunePageResponseVO;
import com.yd.csf.api.dto.GenerateAgentDetailFycDto;
import com.yd.csf.api.dto.PayableReportResponse; import com.yd.csf.api.dto.PayableReportResponse;
import com.yd.csf.api.response.ApiExecuteBillingResponse;
import com.yd.csf.api.response.ApiExecuteRewardResponse;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest; import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest; import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ExpectedFortuneAddRequest; import com.yd.csf.feign.request.expectedfortune.ExpectedFortuneAddRequest;
...@@ -16,6 +19,7 @@ import com.yd.csf.service.model.CommissionRuleBinding; ...@@ -16,6 +19,7 @@ import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO; import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
...@@ -62,6 +66,17 @@ public interface ApiExpectedFortuneService { ...@@ -62,6 +66,17 @@ public interface ApiExpectedFortuneService {
Boolean update(ExpectedFortuneUpdateRequest request); Boolean update(ExpectedFortuneUpdateRequest request);
@Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class)
void buildCalmTask(List<ApiExecuteBillingResponse> billingResponses,
List<ApiExecuteRewardResponse> rewardResponses,
List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
String policyNo);
@Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class)
Result generateAgentDetailFyc(GenerateAgentDetailFycDto dto);
Result<ApiExpectedFortunePageResponseVO> list(ApiExpectedFortunePageRequest request); Result<ApiExpectedFortunePageResponseVO> list(ApiExpectedFortunePageRequest request);
Boolean add(List<ExpectedFortuneAddRequest> request); Boolean add(List<ExpectedFortuneAddRequest> request);
......
package com.yd.csf.api.service;
import java.util.Date;
public interface XxlJobService {
String addScheduleJob(String taskName, String taskBizId, String appName, Date scheduleTime);
}
...@@ -47,5 +47,11 @@ ...@@ -47,5 +47,11 @@
<artifactId>yd-base-feign</artifactId> <artifactId>yd-base-feign</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- XXL-Job 核心依赖 -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yd.csf.service.config; package com.yd.csf.service.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
@Slf4j
@Configuration @Configuration
@EnableAsync @EnableAsync
public class AsyncConfig { public class AsyncConfig {
...@@ -54,4 +57,21 @@ public class AsyncConfig { ...@@ -54,4 +57,21 @@ public class AsyncConfig {
executor.initialize(); executor.initialize();
return executor; return executor;
} }
@Bean("jobTaskExecutor")
public TaskExecutor jobTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(100);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("JobAsync-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setAwaitTerminationSeconds(60);
executor.initialize();
log.info("异步线程池初始化完成,线程名前缀: JobAsync-");
return executor;
}
} }
\ No newline at end of file
package com.yd.csf.service.dao;
import com.yd.csf.service.model.CalmTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 保单冷静期定时任务表 Mapper 接口
* </p>
*
* @author zxm
* @since 2026-03-06
*/
public interface CalmTaskMapper extends BaseMapper<CalmTask> {
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 保单冷静期定时任务表
* </p>
*
* @author zxm
* @since 2026-03-06
*/
@Getter
@Setter
@TableName("calm_task")
public class CalmTask implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 保单冷静期定时任务表唯一业务ID
*/
@TableField("calm_task_biz_id")
private String calmTaskBizId;
/**
* 新单跟进唯一业务ID
*/
@TableField("policy_biz_id")
private String policyBizId;
/**
* 保单号
*/
@TableField("policy_no")
private String policyNo;
/**
* 转介人业务id
*/
@TableField("broker_biz_id")
private String brokerBizId;
/**
* 转介人名称
*/
@TableField("broker_name")
private String brokerName;
/**
* 当前保单转介人累计FYC(当前保单转介人基本法计算积分合值)
*/
@TableField("total_fyc")
private BigDecimal totalFyc;
/**
* 冷静期结束日期
*/
@TableField("cooling_off_end_date")
private LocalDateTime coolingOffEndDate;
/**
* 冷静期天数
*/
@TableField("cooling_off_days")
private Integer coolingOffDays;
/**
* 执行时间(定时任务执行时间)
*/
@TableField("execution_time")
private LocalDateTime executionTime;
/**
* 执行状态(未执行,已执行)
*/
@TableField("execution_status")
private String executionStatus;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.csf.service.service;
import com.yd.csf.service.model.CalmTask;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 保单冷静期定时任务表 服务类
* </p>
*
* @author zxm
* @since 2026-03-06
*/
public interface ICalmTaskService extends IService<CalmTask> {
}
package com.yd.csf.service.service.impl;
import com.yd.csf.service.model.CalmTask;
import com.yd.csf.service.dao.CalmTaskMapper;
import com.yd.csf.service.service.ICalmTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 保单冷静期定时任务表 服务实现类
* </p>
*
* @author zxm
* @since 2026-03-06
*/
@Service
public class CalmTaskServiceImpl extends ServiceImpl<CalmTaskMapper, CalmTask> implements ICalmTaskService {
}
...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"premium_reconciliation","premium_remittance","premium_remittance_file" "calm_task"
) )
.entityBuilder() .entityBuilder()
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.CalmTaskMapper">
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment