问题

例:EAS-营销管理-配送管理-特殊业务处理单工作流审核后变保存状态

image-2022-11-02-01-24-15-720.png

查看工作流错误日志发现

image-2022-11-02-15-22-53-366.png

分析

Sql:{CALI rewritesaleDataCenter('GOOAAA2HzaGudasI',2022-10-26','GO0AAA2JkR21XpRg','GO0AAAp1513M567U','fGE380n0j60iWPz9Y/0ng5kv2Y=', '0',"GOOAAArZi7K/DAOO")

参数对应信息:{市场ID, 业务日期, 数据中心ID, 办事处ID, 结算类型ID, 门店类型, 客户ID}

出现该类问题多数是因为营销数据中心价格信息重复:

1、找到市场对应业务日期的数据中心,检查价格信息分录是否重复,重复检查历史变更记录

image-2022-11-02-15-22-40-661.png

2、关于历史价格信息的取数:以具体数据中心为范围,按可用状态物料分组,一级排序为价格类型(临时调价 > 长期调价),二级排序为时间戳(倒序)

3、根据价格历史信息记录的单号检查经营信息。10月26日,壹号谷物蛋20枚/盒,做两张《经营信息变更申请单》临时调整两个价格。

4、更新生成价格历史记录时单价类型、时间戳值都一致,导致数据中心-价格信息存在重复物料。

image-2022-11-02-15-22-35-301.png

5、《特殊业务处理单》审核时,重算数据中心过程因重复物料产生子查询错误,导致工作流回滚到提交节点。 

解决方案

  1. 代码处理:调整《经营信息变更申请单》审核方法中获取时间戳方式,且按以上分组做去重处理。
  2. 数据处理:数据中心和价格历史变更数据处理:
--去重历史价格信息
update CT_TDS_SaleDCPH set CFIsEnable = 0 where FID in(
    select min(deph.fid)
    from CT_TDS_SaleDCPH deph
    left join CT_TDA_SaleDataCenter c on c.fid = deph.fparentid
    where deph.CFIsEnable = 1
    and deph.fparentid in(
        select s.fid from CT_TDA_SaleDataCenter s
        left join CT_BAS_MarketPlace m on m.fid=s.CFMarketID
        where m.CFMarketNum in ('D-MTMCGZC') --市场编码
        and to_char(C.FBizDate,'yyyy-MM-dd')>='2023-08-08' --业务日期
        and to_char(C.FBizDate,'yyyy-MM-dd')<='2023-08-08'
    )
    group by deph.fparentid,deph.CFMATERIALID,deph.CFTimestamp
    having count(deph.CFMATERIALID) > 1
);
commit;

--去重价格信息分录
delete from CT_TDS_SaleDCPE where fid in (
    select min(dcpe.fid) from CT_TDS_SaleDCPE dcpe
    left join CT_TDA_SaleDataCenter c on c.fid = dcpe.fparentid
    left join CT_BAS_MarketPlace m on m.fid=c.CFMarketID
    where m.CFMarketNum in ('D-MTMCGZC') --市场编码
    and to_char(C.FBizDate,'yyyy-MM-dd')>='2023-08-08' --业务日期
    and to_char(C.FBizDate,'yyyy-MM-dd')<='2023-08-08'
    group by
    dcpe.CFMATERIALID
    having count(dcpe.CFMATERIALID) > 1
)
commit;

相关的文章



Write a comment…