二、业务逻辑及简单注意(二)

需求:

定时任务,按照距离到期日90/60/30天给予通知提醒。


逻辑

  1. 在含有止期的表中查询距离止期日90/60/30天的条数,根据登录名分组,显示出其登录用户id及姓名,以及其查出期限的种类。通知表中有接收用户,要与登录用户id一致。种类要与字典中表示种类字段一致。
  2. 将查出来的对象用List封装,根据用户查询的话,就用添加在用户的属性
  3. 遍历List,在固定句式中插入条数,补全通知中需要的其他字段,set到通知用户中

  1. sql
<select id="findCountByDeadlineForApplicant" resultType="KInsRequirement">
    SELECT 
		b.create_by AS "createBy.id",
		su.name as "createBy.name",
		b.Ins_kind as "insKind",
		SUM(DATEDIFF(sal_end_date,NOW()) = 90 ) AS  'orderDeadlineNinety',
		SUM(DATEDIFF(sal_end_date,NOW()) = 60 ) AS  'orderDeadlineSixty', 
		SUM(DATEDIFF(sal_end_date,NOW()) = 30 ) AS  'orderDeadlineThirty' 
		from k_insurance_bill a
		left join k_ins_requirement b  on a.r_id=b.id
		left join sys_user su on b.create_by=su.id	
		group by b.CREATE_BY,su.name,b.Ins_kind
</select>
<select id="findCountByDeadlineForBroker" resultType="KInsRequirement">
    SELECT 
		su.id AS "createBy.id",
		su.name as "createBy.name",
		b.Ins_kind as "insKind",
		SUM(DATEDIFF(sal_end_date,NOW()) = 90 ) AS  'orderDeadlineNinety',
		SUM(DATEDIFF(sal_end_date,NOW()) = 60 ) AS  'orderDeadlineSixty', 
		SUM(DATEDIFF(sal_end_date,NOW()) = 30 ) AS  'orderDeadlineThirty' 
		from k_insurance_bill a    	
		left join sys_user su  on a.create_by=su.name			
		left join k_ins_requirement b on a.r_id=b.id
		group by su.id,su.name,b.Ins_kind
<select>

2.dao

3.service

List<KInsRequirement> findCountByDeadlineForApplicantList = dao
				.findCountByDeadlineForApplicant(new KInsRequirement());

		for (KInsRequirement kInsRequirement : findCountByDeadlineForApplicantList) {
			//插入通知id
			OaNotify oaNotify90 = new OaNotify(UUID.randomUUID().toString());
			OaNotify oaNotify60 = new OaNotify(UUID.randomUUID().toString());
			OaNotify oaNotify30 = new OaNotify(UUID.randomUUID().toString());
			//插入通知类型编号
			oaNotify90.setType(oaNotifyType);
			oaNotify60.setType(oaNotifyType);
			oaNotify30.setType(oaNotifyType);
			//获取登录用户
			User create_by = kInsRequirement.getCreateBy();
			//获取3个期限的条数
			String ninety = kInsRequirement.getOrderDeadlineNinety();
			String sixty = kInsRequirement.getOrderDeadlineSixty();
			String thirty = kInsRequirement.getOrderDeadlineThirty();
			//获取保单类型
			String insKind = kInsRequirement.getInsKind();
			String dictLabel = DictUtils.getDictLabel(insKind, "car_risk_type", "");
			if (ninety != null && ninety != "" && !ninety.equals("0")) {
				oaNotify90.setContent("您有" + ninety + "张" + dictLabel + "将于90天后到期,请尽快续保");
				//将登录用户插入到通知用户
				oaNotify90.setReceiverId(create_by.getId());
				oaNotify90.setStatus("0");
				oaNotifyDao.insert(oaNotify90);
			}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eevee_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值