金蝶handler中 collection 代码片段理解

1,AtsOverTimeBillBatchEditHandler中collection的理解

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

 2.

整个代码片段的理解

 1 protected void afterCreateNewModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo coreBaseInfo)
 2     throws WafException
 3     //这就是HTTP协议的请求和响应对象
 4   {
 5     super.afterCreateNewModel(request, response, coreBaseInfo);
 6         //Super: 代表当前对象父类的引用
 7     AtsOverTimeBillInfo atsOverTimeBillInfo = (AtsOverTimeBillInfo)coreBaseInfo;//对coreBaseInfo的格式改变
 8     Date nowDate = DateTimeUtils.truncateDate(new Date());   //用这个方式获取当前时间
 9 
10     PersonInfo personInfo = SHRBillUtil.getCurrPersonInfo();//获取personInfo(个人信息)
11     PersonPositionInfo personPositionInfo = SHRBillUtil.getAdminOrgUnit(personInfo.getId().toString());
12                 //获取personPositionInfo(职位信息)   getAdminOrgUnit(管理组织单元)
13 
14     atsOverTimeBillInfo.setProposer(personInfo);
15     atsOverTimeBillInfo.setApplyDate(nowDate);
16 
17     atsOverTimeBillInfo.setAdminOrg(personPositionInfo.getPersonDep());
18 
19     HROrgUnitInfo hrInfo = null;
20     hrInfo = ContextUtil.getCurrentHRUnit(this.ctx);
21     atsOverTimeBillInfo.setHrOrgUnit(hrInfo);
22     atsOverTimeBillInfo.setBizDate(nowDate);
23 
24     AtsOverTimeBillInfo overTimeBill = new AtsOverTimeBillInfo(); //新的对象overTimeBill
25 
26     boolean hasCodingRule = NumberCodeRule.hasCodingRule(overTimeBill, NumberCodeRule.getMainOrgByCu());//编码规则
27     if (hasCodingRule == true) { 
28       Map initData = (Map)request.getAttribute("view_initData");
29       initData.put("overtimeBillNumberFieldCanEdit", Boolean.valueOf(false));
30     }
31 
32     AtsOverTimeBillEntryInfo entryInfo = new AtsOverTimeBillEntryInfo(); //BOS中接口,用来设置值
33     entryInfo.setAdminOrgUnit(personPositionInfo.getPersonDep());
34     entryInfo.setPerson(personInfo);
35     entryInfo.setPosition(personPositionInfo.getPrimaryPosition());
36     entryInfo.setOtDate(nowDate);
37     entryInfo.setApplyOTTime(BigDecimal.valueOf(0L));
38     entryInfo.setRealOTTime(BigDecimal.valueOf(0L));
39     entryInfo.setCreateTag(OverTimeCreateTag.userCreate);
40     try
41     {
42       EntityViewInfo entityViewInfo = new EntityViewInfo();            //BOS中接口
43       SelectorItemCollection sic = new SelectorItemCollection();    //集合
44       sic.add(new SelectorItemInfo("proposer.id"));                    //设置属性
45       sic.add(new SelectorItemInfo("id"));
46       sic.add(new SelectorItemInfo("attendDate"));
47       sic.add(new SelectorItemInfo("dayType"));
48       entityViewInfo.setSelector(sic);                                //这个指定entityViewInfo的属性是sic中的
49       FilterInfo filterInfo = new FilterInfo();                        //过滤条件代码块
50       filterInfo.getFilterItems().add(new FilterItemInfo("proposer.id", personInfo.getId().toString()));
51       filterInfo.getFilterItems().add(new FilterItemInfo("attendDate", nowDate, CompareType.GREATER_EQUALS));
52       entityViewInfo.setFilter(filterInfo);
53       //计划改变集合
54       ScheduleShiftCollection coll = ScheduleShiftFactory.getRemoteInstance().getScheduleShiftCollection(entityViewInfo);
55       OverTimeTypeInfo defaultType = new OverTimeTypeInfo();//defaultType(缺省类型)
56       if ((coll != null) && (coll.size() >= 1)) {            //这些if-else 组合,就是确定是什么加班类型.
57         int dayType = coll.get(0).getDayType().getValue();    //dayType赋值
58 
59         if (dayType == 1) {
60           defaultType.setName("休息日加班");
61           defaultType.setNumber("002");
62           defaultType.setId(BOSUuid.read("zr+ur5D4RA+2bdVZ2VPqp46C/nU="));
63         } else if (dayType == 2) {
64           defaultType.setName("法定节假日加班");
65           defaultType.setNumber("003");
66           defaultType.setId(BOSUuid.read("sRWUOt7sRpOY0TCo6NMqGY6C/nU="));
67         } else {
68           defaultType.setName("工作日加班");
69           defaultType.setNumber("001");
70           defaultType.setId(BOSUuid.read("rBy0u1YgQ9C1OxcM85mxyY6C/nU="));
71         }
72       }
73       else {
74         defaultType.setName("休息日加班");
75         defaultType.setNumber("002");
76         defaultType.setId(BOSUuid.read("zr+ur5D4RA+2bdVZ2VPqp46C/nU="));
77       }
78       entryInfo.setOtType(defaultType);  //赋值给,entryInfo,以便后面操作
79     } catch (BOSException e1) {            //捕捉错误的标准语句
80       e1.printStackTrace();
81     }
82     try
83     {        //工厂-本地实例-补充集合里面的
84       OverTimeCompensCollection overTimeCompensCollection = OverTimeCompensFactory.getLocalInstance(this.ctx).getOverTimeCompensCollection(" ");
85       int size = overTimeCompensCollection.size();
86       for (int i = 0; i < size; i++)
87         if ("调休".equals(overTimeCompensCollection.get(i).getName()))//这是判断有没有调休,有就添加进去
88           entryInfo.setOtCompens(overTimeCompensCollection.get(i));
89     }
90     catch (BOSException e)        //捕捉错误的标准语句
91     {
92       e.printStackTrace();
93     }
94     atsOverTimeBillInfo.getEntries().add(entryInfo);  //找到对应的实体,把entryInfo,添加进去
95   }

 

posted @ 2017-03-31 11:36  Alon_逆水行舟  阅读(563)  评论(0编辑  收藏  举报