问题
例:EAS-营销管理-配送管理-特殊业务处理单工作流审核后变保存状态
查看工作流错误日志发现
分析
Sql:{CALI rewritesaleDataCenter('GOOAAA2HzaGudasI',2022-10-26','GO0AAA2JkR21XpRg','GO0AAAp1513M567U','fGE380n0j60iWPz9Y/0ng5kv2Y=', '0',"GOOAAArZi7K/DAOO")
参数对应信息:{市场ID, 业务日期, 数据中心ID, 办事处ID, 结算类型ID, 门店类型, 客户ID}
出现该类问题多数是因为营销数据中心价格信息重复:
1、找到市场对应业务日期的数据中心,检查价格信息分录是否重复,重复检查历史变更记录
2、关于历史价格信息的取数:以具体数据中心为范围,按可用状态物料分组,一级排序为价格类型(临时调价 > 长期调价),二级排序为时间戳(倒序)
3、根据价格历史信息记录的单号检查经营信息。10月26日,壹号谷物蛋20枚/盒,做两张《经营信息变更申请单》临时调整两个价格。
4、更新生成价格历史记录时单价类型、时间戳值都一致,导致数据中心-价格信息存在重复物料。
5、《特殊业务处理单》审核时,重算数据中心过程因重复物料产生子查询错误,导致工作流回滚到提交节点。
解决方案
- 代码处理:调整《经营信息变更申请单》审核方法中获取时间戳方式,且按以上分组做去重处理。
- 数据处理:数据中心和价格历史变更数据处理:
--去重历史价格信息 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;
Add Comment