起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1984|回复: 6

[处理中5] java类 com.justep.system.opm.api.PersonHelper的changePersonMainOrg相关

[复制链接]

35

主题

155

帖子

589

积分

高级会员

Rank: 4

积分
589
QQ
发表于 2014-4-1 09:32:22 | 显示全部楼层 |阅读模式
本帖最后由 yjf19871122 于 2014-4-1 09:47 编辑

API文档中  java类 com.justep.system.opm.api.PersonHelper 的 changePersonMainOrg(String id, Integer expectVersion, String newMainOrgID, boolean disableOldMasterPsm)的描述是 :设置人员的"主要人员成员"到指定的组织下,如果组织下不存在"人员成员"会自动创建,如果存在且禁用会自动启用。

现在人员A  的人员成员   A@P1 处于禁用状态, 人员成员 A@P2处于启用状态,   A的MainOrg现在指向P2
调用 PersonHelper .changePersonMainOrg(A,NULL,P1,true) 则会发生 人员成员"P1/A"已经存在,当前状态是"禁用" 的错误,这跟API所说的 【存在且禁用会自动启用】相反


当前需求是  人员 A原先处于  P1岗位,经过调用 变成 了岗位P2,现在 把他再调回 岗位P1,就会发生这种错误

使用版本是5.2.6.2457

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2014-4-1 11:04:26 | 显示全部楼层
本帖最后由 jholy 于 2014-4-1 11:08 编辑

基于5.2.6.2457测试没有发现问题

测试代码如下:
  1. // 人员
  2. String psn = "7C99506993184971B7E5F4F9281116A8";
  3. // 两个岗位
  4. String pos1 = "8528BA96D01F4100A63B629B3F893A25";
  5. String pos2 = "F1913D8A3E34404B8187CEF9A1C2126D";
  6. // 设置主人员成员到pos2
  7. PersonHelper.changePersonMainOrg(psn, null, pos2, true);
  8. // 输出当前两个人员成员的状态
  9. System.out.println("psm1.sValidState:" + OrgHelper.loadOrg(OrgHelper.formatPersonMemberID(psn, pos1), null).getValidState());
  10. System.out.println("psm2.sValidState:" + OrgHelper.loadOrg(OrgHelper.formatPersonMemberID(psn, pos2), null).getValidState());
  11. System.out.println("**************************************************************");
  12. // 设置主人员成员到pos1
  13. PersonHelper.changePersonMainOrg(psn, null, pos1, true);
  14. // 输出当前两个人员成员的状态
  15. System.out.println("psm1.sValidState:" + OrgHelper.loadOrg(OrgHelper.formatPersonMemberID(psn, pos1), null).getValidState());
  16. System.out.println("psm2.sValidState:" + OrgHelper.loadOrg(OrgHelper.formatPersonMemberID(psn, pos2), null).getValidState());
复制代码
控制台输出如下:
  1. psm1.sValidState:0
  2. psm2.sValidState:1
  3. **************************************************************
  4. psm1.sValidState:1
  5. psm2.sValidState:0
复制代码
回复 支持 反对

使用道具 举报

35

主题

155

帖子

589

积分

高级会员

Rank: 4

积分
589
QQ
 楼主| 发表于 2014-4-1 11:28:01 | 显示全部楼层
本帖最后由 yjf19871122 于 2014-4-1 13:45 编辑
jholy 发表于 2014-4-1 11:04
基于5.2.6.2457测试没有发现问题

测试代码如下:控制台输出如下:

又看了下条件,好像人员一开始处于禁用状态,他的当前人员成员也处于禁用状态好像就会触发这个错误
是否设计的思路就是要人员处于活动状态才允许人员移动?

若是当前职务的状态是禁用也会发生这个错误

但是这个错误提示信息太具有误导性质了。
回复 支持 反对

使用道具 举报

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2014-4-1 14:21:09 | 显示全部楼层
恩,大多数组织API操作都是基于启用状态的
提示信息确实不合适,后续版本中会修正这个问题
回复 支持 反对

使用道具 举报

35

主题

155

帖子

589

积分

高级会员

Rank: 4

积分
589
QQ
 楼主| 发表于 2014-4-1 14:39:40 | 显示全部楼层
jholy 发表于 2014-4-1 14:21
恩,大多数组织API操作都是基于启用状态的
提示信息确实不合适,后续版本中会修正这个问题 ...

应该提示用户,在执行移动操作前,必须先启用该用人员的岗位,部门,及人员成员。这样子用户才明白是什么地方出错。其他组织API的操作应该也要有这个提示。

结贴。
回复 支持 反对

使用道具 举报

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2014-4-1 14:52:07 | 显示全部楼层
5.2.6版本里提供了PersonHelper.changeMainOrgToPersonMember,推荐使用新的API,这里面简化了逻辑

原有API内部逻辑过多,除了设置主人员成员,还要自动创建人员成员和控制状态,内部过于复杂了,不容易进行外层控制

现在这个只是在人员的多个人员成员之间,进行主人员成员的设置
回复 支持 反对

使用道具 举报

35

主题

155

帖子

589

积分

高级会员

Rank: 4

积分
589
QQ
 楼主| 发表于 2014-4-1 14:57:50 | 显示全部楼层
本帖最后由 yjf19871122 于 2014-4-1 14:58 编辑
jholy 发表于 2014-4-1 14:52
5.2.6版本里提供了PersonHelper.changeMainOrgToPersonMember,推荐使用新的API,这里面简化了逻辑

原有AP ...

要调用这个好像还要自己判断人员成员的存在状况,然后再看是否需要创建?好像没有原来的方便。我的需求就是没有就自动创建。所以用的还是原来的方法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-22 09:45 , Processed in 1.036720 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表