自动发起议价--自定义采购清单过滤条件

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

自动发起议价--自定义采购清单过滤条件

1. 自动发起议价-自定义过滤条件

1.1    业务场景简介

在定标时,往往需要多轮议价,发起议价的方式有两种,一种是手工添加议价单,另外一种是自动发起议价。自动发起议价时,需要设置好采购清单的过滤条件,系统根据过滤条件,自动创建议价单。


 1.2    简要实现方案

步骤

开发内容

备注

1

设置通用过滤条件

应用配置

2

设置动态过滤条件

应用配置

3

开发插件过滤条件

代码开发

 

1.3    详细开发步骤及示例代码

下面以标准产品的“自动议价方案” 为例。

1.3.1  设置通用过滤条件

1、找到 自动议价方案:

 

2、设置 通用过滤条件

通用过滤条件是对“待过滤业务的对象采购清单F7”进行简单的、固定条件的过滤。

如:1)业务状态=已开标;2)分批定标否=否

 

1.3.2  设置动态过滤条件

动态过滤条件:“待过滤业务的对象采购清单F7 “值业务对象”进行动态匹配。根据值业务对象的数据,匹配“待过滤业务的对象”的记录。目前,这里暂时不需要设置。

 

1.3.3  插件扩展过滤

对于复杂的过滤条件,一般难于通过配置实现,可以写插件来获取过滤条件。

可以注册多个过滤条件插件,过滤条件是and关系,数据则取交集。

插件需要实现标准接口:IExtFilterPlugin

示例代码如下:

/**

 * 自动议价--议价标的过滤--按议价规则(预中标供应商/前几名供应商/投标供应商)

 *

 * @author   rd_fumin_huang

 *

 */

public class SrcNegotiateFilterByRule implements   IExtFilterPlugin<ExtFilterContext> {

       private static   final long serialVersionUID = 1L;

 

       @Override

       public   Map<String, Object> getQFilter(ExtFilterContext context) {

              return   getQFilterMap(getQFilterByNegRule(context), null);

       }

 

       /**

        * 按比价设置的议价规则(范围) 获取过滤条件

        *

        * @param context

        * @return

        */

       private QFilter   getQFilterByNegRule(ExtFilterContext context) {

              long   projectId = PdsCommonUtils.object2Long(context.getParamMap().get(SrcCommonConstant.PROJECTID));

              QFilter   compareFilter = new QFilter(SrcCommonConstant.ID, QCP.equals, projectId);

              DynamicObject   compareConfig =   QueryServiceHelper.queryOne(SrcMetadataConstant.SRC_COMPARE_CONFIG,   SrcCommonConstant.NEGOTIATERULE + "," +   SrcCommonConstant.TOPSUPPLIER, compareFilter.toArray());

              if (null   == compareConfig) {

                     return   null;

              }

// 议价规则:1-预中标供应商/2-前几名供应商/3-投标供应商, 默认 3

              String   negotiateRule =   PdsCommonUtils.object2String(compareConfig.get(SrcCommonConstant.NEGOTIATERULE),   SrcCommonConstant.NEGOTIATERULE_TENDER);

              // 前几名供应商

              int   topSupplier = compareConfig.getInt(SrcCommonConstant.TOPSUPPLIER);

              // 可参与份额分配的定标结果

              Set<String>   resultSet = PdsParameterUtils.getResultValueSet();

              QFilter   qfilter = null;

              // 议价规则--拟中标供应商

              switch   (negotiateRule) {

              case   SrcCommonConstant.NEGOTIATERULE_WIN:

                     qfilter   = new QFilter(SrcCommonConstant.SYSRESULT, QCP.in, resultSet);

                     break;

              case   SrcCommonConstant.NEGOTIATERULE_TOP:

                     qfilter   = new QFilter(SrcCommonConstant.RANK, QCP.less_equals, topSupplier);

                     break;

              default:

                     break;

              }

              return   qfilter;

       }

}

 

 

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

步骤

开发内容

估计开发人天

1

设置通用过滤条件

 

0.5~1.0

 

2

设置动态过滤条件

3

开发插件过滤条件

合计:约0.5~1.0开发人天。


自动发起议价--自定义采购清单过滤条件

1. 自动发起议价-自定义过滤条件1.1 业务场景简介在定标时,往往需要多轮议价,发起议价的方式有两种,一种是手工添加议价单,另外一...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息