1,AtsOverTimeBillBatchEditHandler中collection的理解

 SelectorItemCollection selectors = new SelectorItemCollection();
//自定义集合SelectorItemCollection的定义
selectors.add(new SelectorItemInfo("id")); //集合selectors中添加id
selectors.add(new SelectorItemInfo("name")); //集合selectors中添加name
viewInfo.setSelector(selectors); //给viewInfo设置属性
viewInfo.setFilter(temFilterInfo); //给viewInfo设置过滤条件

2.

整个代码片段的理解

 protected void afterCreateNewModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo coreBaseInfo)
throws WafException
//这就是HTTP协议的请求和响应对象
{
super.afterCreateNewModel(request, response, coreBaseInfo);
//Super: 代表当前对象父类的引用
AtsOverTimeBillInfo atsOverTimeBillInfo = (AtsOverTimeBillInfo)coreBaseInfo;//对coreBaseInfo的格式改变
Date nowDate = DateTimeUtils.truncateDate(new Date()); //用这个方式获取当前时间 PersonInfo personInfo = SHRBillUtil.getCurrPersonInfo();//获取personInfo(个人信息)
PersonPositionInfo personPositionInfo = SHRBillUtil.getAdminOrgUnit(personInfo.getId().toString());
//获取personPositionInfo(职位信息) getAdminOrgUnit(管理组织单元) atsOverTimeBillInfo.setProposer(personInfo);
atsOverTimeBillInfo.setApplyDate(nowDate); atsOverTimeBillInfo.setAdminOrg(personPositionInfo.getPersonDep()); HROrgUnitInfo hrInfo = null;
hrInfo = ContextUtil.getCurrentHRUnit(this.ctx);
atsOverTimeBillInfo.setHrOrgUnit(hrInfo);
atsOverTimeBillInfo.setBizDate(nowDate); AtsOverTimeBillInfo overTimeBill = new AtsOverTimeBillInfo(); //新的对象overTimeBill boolean hasCodingRule = NumberCodeRule.hasCodingRule(overTimeBill, NumberCodeRule.getMainOrgByCu());//编码规则
if (hasCodingRule == true) {
Map initData = (Map)request.getAttribute("view_initData");
initData.put("overtimeBillNumberFieldCanEdit", Boolean.valueOf(false));
} AtsOverTimeBillEntryInfo entryInfo = new AtsOverTimeBillEntryInfo(); //BOS中接口,用来设置值
entryInfo.setAdminOrgUnit(personPositionInfo.getPersonDep());
entryInfo.setPerson(personInfo);
entryInfo.setPosition(personPositionInfo.getPrimaryPosition());
entryInfo.setOtDate(nowDate);
entryInfo.setApplyOTTime(BigDecimal.valueOf(0L));
entryInfo.setRealOTTime(BigDecimal.valueOf(0L));
entryInfo.setCreateTag(OverTimeCreateTag.userCreate);
try
{
EntityViewInfo entityViewInfo = new EntityViewInfo(); //BOS中接口
SelectorItemCollection sic = new SelectorItemCollection(); //集合
sic.add(new SelectorItemInfo("proposer.id")); //设置属性
sic.add(new SelectorItemInfo("id"));
sic.add(new SelectorItemInfo("attendDate"));
sic.add(new SelectorItemInfo("dayType"));
entityViewInfo.setSelector(sic); //这个指定entityViewInfo的属性是sic中的
FilterInfo filterInfo = new FilterInfo(); //过滤条件代码块
filterInfo.getFilterItems().add(new FilterItemInfo("proposer.id", personInfo.getId().toString()));
filterInfo.getFilterItems().add(new FilterItemInfo("attendDate", nowDate, CompareType.GREATER_EQUALS));
entityViewInfo.setFilter(filterInfo);
//计划改变集合
ScheduleShiftCollection coll = ScheduleShiftFactory.getRemoteInstance().getScheduleShiftCollection(entityViewInfo);
OverTimeTypeInfo defaultType = new OverTimeTypeInfo();//defaultType(缺省类型)
if ((coll != null) && (coll.size() >= 1)) { //这些if-else 组合,就是确定是什么加班类型.
int dayType = coll.get(0).getDayType().getValue(); //dayType赋值 if (dayType == 1) {
defaultType.setName("休息日加班");
defaultType.setNumber("002");
defaultType.setId(BOSUuid.read("zr+ur5D4RA+2bdVZ2VPqp46C/nU="));
} else if (dayType == 2) {
defaultType.setName("法定节假日加班");
defaultType.setNumber("003");
defaultType.setId(BOSUuid.read("sRWUOt7sRpOY0TCo6NMqGY6C/nU="));
} else {
defaultType.setName("工作日加班");
defaultType.setNumber("001");
defaultType.setId(BOSUuid.read("rBy0u1YgQ9C1OxcM85mxyY6C/nU="));
}
}
else {
defaultType.setName("休息日加班");
defaultType.setNumber("002");
defaultType.setId(BOSUuid.read("zr+ur5D4RA+2bdVZ2VPqp46C/nU="));
}
entryInfo.setOtType(defaultType); //赋值给,entryInfo,以便后面操作
} catch (BOSException e1) { //捕捉错误的标准语句
e1.printStackTrace();
}
try
{ //工厂-本地实例-补充集合里面的
OverTimeCompensCollection overTimeCompensCollection = OverTimeCompensFactory.getLocalInstance(this.ctx).getOverTimeCompensCollection(" ");
int size = overTimeCompensCollection.size();
for (int i = 0; i < size; i++)
if ("调休".equals(overTimeCompensCollection.get(i).getName()))//这是判断有没有调休,有就添加进去
entryInfo.setOtCompens(overTimeCompensCollection.get(i));
}
catch (BOSException e) //捕捉错误的标准语句
{
e.printStackTrace();
}
atsOverTimeBillInfo.getEntries().add(entryInfo); //找到对应的实体,把entryInfo,添加进去
}

金蝶handler中 collection 代码片段理解的更多相关文章

  1. es6 代码片段理解

    代码片段理解: [INCREMENT]: (state, action) => { const { payload: { id } } = action //because payload co ...

  2. 使用 Git 来管理 Xcode 中的代码片段

    使用 Git 来管理 Xcode 中的代码片段 代码片段介绍 xcode4 引入了一个新 feature: code snippets,在整个界面的右下角,可以通过快捷键:cmd + ctrl + o ...

  3. 如何在VScode中添加代码片段

    拿 VUE 举例,新建 VUE 文件,输入前缀,出现代码段 文件 --->  首选项 ---> 用户代码片段  在输入框中输入 vue ,找到 vue.json ,然后在 vue.json ...

  4. sublimetext3中保存代码片段

    在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累."蓝瘦"(难受)."香菇"(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在 ...

  5. 如何在Sublime Text中添加代码片段

    我们在编写代码的时候,总会遇到一些需要反复使用的代码片段.这时候就需要反复的复制和黏贴,大大影响效率.我们利用Sublime Text的snippet(代码片段)功能,就能很好的解决这一问题.通俗的讲 ...

  6. latex在vim中的代码片段

    Gilles Castel写的vim中使用的代码片段,质量很高,原文:https://github.com/gillescastel 下载后,存放到 ~/.vim/plugged/ultisnips/ ...

  7. VS中添加自定义代码片段

    前言 用#4敲出 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(voi ...

  8. VS中自定义代码片段

    VS - 工具 - 代码片段管理器 实现:propnotify 加 Tab 键 生成属性定义代码片段 (包含一个字段定义,一个属性get/set定义,其中set会触发属性值变更事件) <?xml ...

  9. [工作总结]jQuery在工作开发中常用代码片段集锦(1-10)

    1.jQuery,JS实现tab切换 原生JS实现 HTML代码如下: <div class="wrap"> <ul id="tag"> ...

随机推荐

  1. Oracle使用——PLSQL查询表结构并导出EXCEL

    背景 有一次需要查询Oracle数据库中的所有表接口并且导出excel,方法记录如下 使用 使用PLSQL工具查询表结构,SQL语句如下 SELECT B.TABLE_NAME AS '表名', C. ...

  2. Cacti 加入多台主机带宽汇聚

            前面我写了一个cacti加入主机带宽监控的博客.能够參考http://blog.csdn.net/dai451954706/article/details/35272465 .有时可能 ...

  3. Nacos Committer 张龙:Nacos Sync 的设计原理和规划

    图:Nacos Meetup @杭州 与你同行,抬头便是星空. 本文整理自Nacos Committer 张龙的现场分享,阿里巴巴中间件受权发布. 随着 Nacos 1.0.0 稳定版的发布,越来越多 ...

  4. 04Redis入门指南笔记(内部编码规则简介)

    Redis是一个基于内存的数据库,所有的数据都存储在内存中.所以如何优化存储,减少内存空间占用是一个非常重要的话题.精简键名和键值是最直观的减少内存占用的方式,如将键名very.important.p ...

  5. 一条数据的漫游 -- X-Engine SIGMOD Paper Introduction

    大多数人追寻永恒的家园(归宿),少数人追寻永恒的航向. ----瓦尔特.本雅明 背景 X-Engine是阿里数据库产品事业部自研的OLTP数据库存储引擎,作为自研数据库POLARDB X的存储引擎,已 ...

  6. NSOperation 详解

    原文地址:http://nshipster.com/nsoperation/ 大家都知道的秘密是一个应用程序,瞬间响应卸载计算在后台异步完成.因此,现代的Objective-C开发者有两种选择:大中央 ...

  7. 2018-10-20-WPF-通过位处理合并图片

    title author date CreateTime categories WPF 通过位处理合并图片 lindexi 2018-10-20 16:53:49 +0800 2018-10-20 1 ...

  8. hdu 3374 String Problem (字符串最小最大表示 + KMP求循环节)

    Problem - 3374   KMP求循环节. http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.html   循环节推导的证明相当 ...

  9. 【Activiti工作流引擎】官方快速入门demo

    Activiti官方快速入门demo 地址: https://www.activiti.org/quick-start 0. 版本 activiti 5.22.0 JDK 1.8 1. 介绍 这个快速 ...

  10. [转]FileDescriptor详解

    FileDescriptor是"文件描述符". FileDescriptor可以被用来表示开放的文件,开放的套接字等. 当FileDescriptor表示文件来说,当FIleDes ...