年份校验代码分析
package com.yonyou.ucf.mdf.sample.bill.plugin;


import com.yonyou.iuap.log.exception.BusinessException;
import com.yonyou.ucf.mdd.ext.dao.meta.MetaDaoHelper;
import com.yonyou.ucf.mdf.sample.bill.entity.EmployeeTravelApplication;
import com.yonyou.ypd.bill.annotation.BillPlugin;
import com.yonyou.ypd.bill.context.YpdBillContext;
import com.yonyou.ypd.bill.plugin.AbstractBillPlugin;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

@Slf4j
@BillPlugin(busiObj = "employeeTravelApplication")  //员工旅游信息表
public class EmployeeTravelApplicationPlugin extends AbstractBillPlugin {
    @Override
    public void beforeSave(YpdBillContext billContext) throws Exception {
        // 设置保存前的校验规则
        // 设置自定义档案,获取当前旅游时间段
        EmployeeTravelApplication billDO = (EmployeeTravelApplication)billContext.getBillDO();
//EmployeeTravelApplication这个是
        int year = LocalDate.now().getYear();//拿到当前时间
        // 获取自定义档案维护的信息
        String docSql = " select bcd.id,bcd.name,bcd.code from\n" +
                "   iuap_apdoc_basedoc.bd_cust_doc_def  bcdd " +
                " left join   iuap_apdoc_basedoc.bd_cust_doc bcd on bcdd.id = bcd.custdocdefid " +
                "  where bcd.dr=0 and bcd.enable=1   and bcd.code='"+year+"' and bcdd.code='traveltimeperiod' and bcdd.ytenant_id='avhwpwua' and bcd.ytenant_id='avhwpwua' ";
//到这就算拿到自定义档案信息了

        List<Map<String, Object>> info = MetaDaoHelper.selectSql(docSql, null);
        //执行后拿到info,
if(CollectionUtils.isNotEmpty(info)){
            Map<String, Object> infoMap = info.get(0);
            String name = (String)infoMap.get("name");
            String[] dateArr = name.split(",");

//例如:如果 name 是 "2024,2024",分割后 dateArr[0] = "2024",dateArr[1] = "2024"(分别表示时间段的开始年份和结束年份)//

            String startDate = dateArr[0]+"-01-01";
            String endDate = dateArr[1]+"-12-31";
            String employee = billDO.getEmployee();
            // 这个员工中审批中和审批通过的数据
            String sqlcount ="select count(*) countNum from xlx001_db.t_employeetravelapplication where dr=0 and ytenant_id='avhwpwua' and DATE_FORMAT(create_time,'%Y-%m-%d') >='"+startDate+"'\n" +
                    "and DATE_FORMAT(create_time,'%Y-%m-%d') <='"+endDate+"' and verifystate in (1,2) and employee='"+employee+"' ";
            List<Map<String, Object>> countList = MetaDaoHelper.selectSql(sqlcount, null);
            if(CollectionUtils.isNotEmpty(countList)){
                Long countNum = (Long)countList.get(0).get("countNum");
                if(countNum>=1){
                    throw new BusinessException("您好,您已参与过本轮旅游,本次暂无法安排,谢理解~");
                }
            }
        }
    }
}

这个地方如果有问题提示给前端直接用异常抛出即可

throw new BusinessException("您好,您已参与过本轮旅游,本次暂无法安排,谢理解~");

这个也是继承了AbstractBillPlugin ,里面有很多接口,比如before,after等等

YpdBillContext billContext 参数 billContext 这个

过 billContext.getBillDO() 可以获取当前操作的单据数据对象(Bill Data Object),也就是代码中的 EmployeeTravelApplication 实体。这个对象包含了表单中填写的所有业务数据(如 employee 员工信息、行程信息等),是插件获取业务数据的主要入口。

ectionUtils(Apache Commons Collections 工具类)主要用于操作 java.util.Collection 接口的所有实现类,覆盖了 Java 中绝大多数常用集合类型,但并非 “所有集合”(有特定范围)。

具体可操作的集合类型:

只要是实现了 java.util.Collection 接口的集合,都可以用 CollectionUtils 操作,包括:

  1. List 系列ArrayListLinkedListVector 等
  2. Set 系列HashSetTreeSetLinkedHashSet 等
  3. 队列 / 栈ArrayDequePriorityQueue 等(它们也实现了 Collection
  4. 其他自定义集合:只要自定义类实现了 Collection 接口,就能被支持

不适用的情况:

CollectionUtils 不能直接操作 非 Collection 接口的容器类,例如:

  • Map 系列HashMapTreeMap 等):Map 不继承 Collection,需用专门的 MapUtils 工具类处理。
  • 数组int[]String[] 等):数组不是 Collection 实现类,需用 ArrayUtils 工具类。
  • 特殊容器:如 String(本质是字符序列)、Enumeration 等,需用对应工具类。

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇