寻源二开指南--寻源项目变更移动审批--如何获取变更单的组件信息

栏目:云星瀚知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

寻源二开指南--寻源项目变更移动审批--如何获取变更单的组件信息


1. 移动审批—获取变更单组件信息

1.1    业务场景简介

寻源项目变更,因为变更类型很多,每种变更类型的信息都不一样,无法通过一个大而全的大表单实现,只能通过组件化实现。在移动审批时,如何获取组件信息,需要进行特殊处理。目前有2种方式:一、组件以报表附件的形式展示二、将组件作为一个普通单据,配置工作流和移动审批

 

1.2    简要实现方案

步骤

开发内容

备注

1

组件以报表附件的形式展示


2

将组件作为普通单据,配置工作流和移动审批


 

1.3    详细实现方案

下面以标准产品的“寻源项目时间变更” 为例。

 

1.3.1  组件以报表附件的形式展示

1、对“寻源项目时间变更”元数据 配置打印模板,按普通单据配置即可:

 

2、启用扩展插件创建组件附件(默认启用),如果不需要可以禁用。

 

3、寻源项目变更单提交时,自动根据组件的打印模板,创建组件的附件

这里也可以将“变更摘要”设置为必录,要求变更人员录入此信息,便于移动审批时概览。

 

4、移动审批时,可以查看和下载组的相关附件

 

 

1.3.2  组件作为普通单据,配置工作流和移动审批


以下2-7步骤,标准产品的变更单将在【 V5.0.0025 】 预置好,无需二开配置。


1、将寻源变更单的 撤销按钮、审核按钮 设置为不可见,避免 重复撤销 和 重复审核。 (非必需)

 

2、在 组件单元数据上增加必要的字段:

1)寻源项目F7:需要配置字段 fprojectid

2)单据状态:必须,注意设置元数据的单据状态字段,以及单据状态的下拉值

3)寻源项目变更单F7:非必须,主要用于在移动界面携带表头信息。

可以增加其他二开字段。

 

3、寻源项目变更增加两个操作:撤销( unsubmit2 )、审核( audit2 ),寻源变更不支持反审核,不需要配置,下同。

注意操作代码需加上 2, 避免与原来的操作代码冲突。

 

4、对 撤销、审核 配置操作状态

 

5、对 撤销、审核 配置服务插件(插件都一样),一般不需要二开


package kd.scm.pds.opplugin;

 

import java.util.List;

 

import kd.bos.dataentity.entity.DynamicObject;

import kd.bos.entity.ExtendedDataEntity;

import kd.bos.entity.plugin.AbstractOperationServicePlugIn;

import kd.bos.entity.plugin.PreparePropertysEventArgs;

import kd.bos.entity.plugin.args.BeforeOperationArgs;

import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;

import kd.bos.servicehelper.BusinessDataServiceHelper;

import kd.scm.common.constant.BillAssistConstant;

import kd.scm.common.enums.BillStatusEnum;

import kd.scm.pds.common.constant.SrcCommonConstant;

import kd.scm.pds.common.constant.SrcMetadataConstant;

import kd.scm.pds.common.util.PdsCommonUtils;

 

/**

 * 变更单组件--移动审批--操作插件

 *

 * @author rd_fumin_huang

 *

 */

public class PdsChgCompMobileOpTpl extends AbstractOperationServicePlugIn {

       @Override

       public void onPreparePropertys(PreparePropertysEventArgs e) {

              super.onPreparePropertys(e);

              e.getFieldKeys().add(SrcCommonConstant.ID);

              e.getFieldKeys().add(SrcCommonConstant.PARENTID);

              e.getFieldKeys().add(SrcCommonConstant.BILLSTATUS);

       }

 

       @Override

       public void beforeExecuteOperationTransaction(BeforeOperationArgs evt) {

              String key = evt.getOperationKey();

              switch (key) {

              // 撤销2

              case BillAssistConstant.OP_UNSUBMIT + '2':

                     // 审核2

              case BillAssistConstant.OP_AUDIT + '2':

                     // 已提交才允许审核

                     List<ExtendedDataEntity> dataEntity = evt.getValidExtDataEntities();

                     for (ExtendedDataEntity extDataEntity : dataEntity) {

                            DynamicObject billObj = extDataEntity.getDataEntity();

                            String billStatus = billObj.getString(SrcCommonConstant.BILLSTATUS);

                            // 已提交才允许审核

                            if (!BillStatusEnum.SUBMIT.getVal().equals(billStatus)) {

                                   evt.setCancel(true);

                                   evt.setCancelMessage("已提交的单据才允许进行此操作。");

                            }

                     }

                     break;

              default:

                     break;

              }

       }

 

       @Override

       public void beginOperationTransaction(BeginOperationTransactionArgs args) {

              super.beginOperationTransaction(args);

              DynamicObject[] compObjs = args.getDataEntities();

              for (DynamicObject compObj : compObjs) {

                     // 父单据id

                     long parentId = PdsCommonUtils.object2Long(compObj.getString(SrcCommonConstant.PARENTID));

                     DynamicObject billObj = BusinessDataServiceHelper.loadSingle(parentId, SrcMetadataConstant.SRC_BIDCHANGE);

                     String billStatus = billObj.getString(SrcCommonConstant.BILLSTATUS);

                     String operationKey = args.getOperationKey();

                     switch (operationKey) {

                     // 撤销2

                     case BillAssistConstant.OP_UNSUBMIT + '2':

                            // 已提交才允许撤销

                            if (BillStatusEnum.SUBMIT.getVal().equals(billStatus)) {

                                   // 调用变更单的撤销操作

                                   PdsCommonUtils.doOperation(billObj, BillAssistConstant.OP_UNSUBMIT);

                            }

                            break;

                     // 审核2

                     case BillAssistConstant.OP_AUDIT + '2':

                            // 已提交才允许审核

                            if (BillStatusEnum.SUBMIT.getVal().equals(billStatus)) {

                                   // 调用变更单的审核操作

                                   PdsCommonUtils.doOperation(billObj, BillAssistConstant.OP_AUDIT);

                            }

                            break;

 

                     default:

                            break;

                     }

              }

       }

}


6、寻源项目变更 配置单据编辑插件,用于设置默认值, 二开可以重写此插件


package kd.scm.pds.formplugin.edit;

 

import kd.bos.bill.AbstractBillPlugIn;

import kd.bos.form.events.BeforeDoOperationEventArgs;

import kd.bos.form.operate.AbstractOperate;

import kd.scm.pds.common.constant.SrcOperationConstant;

 

/**

 * 变更单组件--默认值处理--编辑插件

 *

 * @author rd_fumin_huang

 *

 */

public class PdsChgCompSetDefaultValueTpl extends AbstractBillPlugIn {

 

               @Override

               public void beforeDoOperation(BeforeDoOperationEventArgs args) {

                               String operateKey = ((AbstractOperate) args.getSource()).getOperateKey();

                               switch (operateKey) {

                               case SrcOperationConstant.SAVE: // 保存

                               case SrcOperationConstant.SUBMIT: // 提交

                                              // 从父单据获取数据,更新组件的相关信息

                                              updateDataFromParent();

                                              break;

                               default:

                                              break;

                               }

               }

 

               /**

                * 从父单据获取数据,更新组件的相关信息(二开可以重写)

                */

               public void updateDataFromParent() {

                               // 记录寻源项目变更单id,用于在移动审批展示变更单和寻源项目的相关信息

                               this.getModel().setValue("bidchange", this.getView().getParentView().getModel().getDataEntity().getPkValue());

               }

}


 

7、组件可以通过工作流或移动审批,进行正常的 撤销、审核,寻源变更单同步处理。

 

8、变更单组件开发移动审批、配置工作流同普通单据。变更单表头、寻源项目等相关信息,可以通过“寻源项目变更F7”字段获取。

 

1.4    参考开发工作量(人/天)

步骤

开发内容

估计开发人天

1

配置组件套打模板

0.5 /每个组件

2

配置组件的移动审批

0.5~1.0 / 每个组件

合计:约0.51.0开发人天 / 每个组件。


寻源二开指南--寻源项目变更移动审批--如何获取变更单的组件信息

1. 移动审批—获取变更单组件信息1.1 业务场景简介寻源项目变更,因为变更类型很多,每种变更类型的信息都不一样,无法通过一个大而全...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息