通过代码新增行政组织并快速生成业务单元原创
金蝶云社区-cosmicstudio
cosmicstudio
9人赞赏了该文章 1,886次浏览 未经作者许可,禁止转载编辑于2022年03月01日 11:13:14


通过代码新增行政组织并快速生成业务单元,并赋予生产组织职能

  • 这里是主要代码片段,需要根据自己的需求增加事务以保证数据异常回滚

  • number可以不设置,因为会调用界面的编码规则;可以根据自己的业务需求设置

  • 组织职能编码要严格按照要求,不能04写成4

  • 这样子实现跟直接创建单据对象保存入库相比有什么好处:代码量十分精简,可以触发界面插件,可以触发业务规则,不用担心未来业务组织单据的功能升级带来的潜在问题

IFormView view = ABillServiceHelper.createAddView("bos_adminorg");
// 编码可以不设置,因为会调用界面的编码规则;
view.getModel().setValue("number", number);
view.getModel().setValue("name", String.format("%s%s",platType,org.get("name")));
view.getModel().setValue("parent", parentDynamicObject.getPkValue());
OperationResult operationResult = ABillServiceHelper.saveOperate(view);
if(!operationResult.isSuccess()){
    return ApiResult.fail(getOperationResultErrorInfos(operationResult));
}

if(CollectionUtils.isNotEmpty(operationResult.getSuccessPkIds())){
    Long orgPkValue = (Long) operationResult.getSuccessPkIds().get(0);
    String[] views = new String[] { "04", "15"};
    List<OrgParam> paramList = new ArrayList<>();
    for(String duty : views){
        OrgParam orgParam = new OrgParam();
        orgParam.setDuty(duty);
        orgParam.setId(orgPkValue);
        orgParam.setAutoMoveSubOrg(false);
        orgParam.setParentId((Long)parentDynamicObject.getPkValue());
        paramList.add(orgParam);
    }
    // 开始批量增加组织职能
    OrgUnitServiceHelper.addDuty(paramList);
    this.showSaveResult(paramList);
}

ABillServiceHelper

具体实现参照:https://club.kdcloud.com/article/137917369896118528

addDuty

kd\bos\org\service\OrgService.class

public void addDuty(List<OrgParam> paramList) {
    log.info("开始批量增加组织职能");
    if (!OrgParamValidator.isOrgParamEmpty(paramList)) {
        int count = paramList.size();
        List<Long> allOrgIds = new ArrayList(count);
        Iterator var4 = paramList.iterator();

        while(var4.hasNext()) {
            OrgParam orgParam = (OrgParam)var4.next();
            allOrgIds.add(orgParam.getId());
        }

        List<Long> orgIds = new ArrayList(count);
        Iterator var24 = paramList.iterator();

        while(true) {
            if (var24.hasNext()) {
                OrgParam orgParam = (OrgParam)var24.next();
                TXHandle h = TX.required();
                Throwable var8 = null;

                try {
                    try {
                        this.addDuty(orgParam, allOrgIds);
                        orgIds.add(orgParam.getId());
                        if (orgParam.isSuccess()) {
                            OrgManagerUtils.saveHistory(orgIds);
                            continue;
                        }

                        h.markRollback();
                    } catch (Exception var20) {
                        orgParam.setSuccess(false);
                        String msg = var20.getMessage() == null ? BaseMessage.getMessage("M00060") : var20.getMessage();
                        orgParam.setMsg(BaseMessage.getMessage("M00061", new Object[]{msg}));
                        h.markRollback();
                        continue;
                    }
                } catch (Throwable var21) {
                    var8 = var21;
                    throw var21;
                } finally {
                    if (h != null) {
                        if (var8 != null) {
                            try {
                                h.close();
                            } catch (Throwable var19) {
                                var8.addSuppressed(var19);
                            }
                        } else {
                            h.close();
                        }
                    }

                }

                return;
            }

            log.info("结束批量增加组织职能");
            return;
        }
    }
}

showSaveResult

为什么要抛异常:用做事务回滚

/**
 * 显示保存结果
 * @param paramList
 */
private void showSaveResult(List<OrgParam> paramList) {
    Iterator var2 = paramList.iterator();

    OrgParam orgParam;
    do {
        if (!var2.hasNext()) {
            return;
        }

        orgParam = (OrgParam)var2.next();
    } while(orgParam.isSuccess());

    // 抛异常用做事务回滚
    throw new KDBizException(orgParam.getMsg());
}

getOperationResultErrorInfos

实现逻辑参考https://club.kdcloud.com/article/145600166525767936

相关内容

组织职能类型

image.png



赞 9