0 0

怎么设计才能解决问题呢? 新手求教5

业务需求:
按月展示客户订单汇总信息:当月展示当天时刻,客户全部汇总订单信息;历史月展示月末时刻的客户全部汇总订单信息。

设计要求:
1:外系统每日送全部客户订单信息,字段包括(会计日期,客户名称,客户类型,订单总数量,订单总数量等);
2:将外系统的数据每日导入我系统,月末数据放入历史表查询,当月的数据每日更新供查询;

详细设计问题:
1:外系统送的空文件,如何处理数据?(我需要保证月末数据有)
2:月末根据什么判断,放入历史表,根据外系统的时间判断,在存储过程中怎么通过脚本获取外系统送的字段【会计日期】?是否可以根据我系统的时间推算外系统的时间?哪个更严谨些?
3:因为每天会覆盖历史数据,只有月末的时候才放入历史表,如果外系统在月末那天没有送数据或送空数据,那个月的数据就会没有,应该如何处理可以避免,可以让前台查询到月末前一天的数据?

PS:第一次写存储过程,临节点问题需要考虑,前台展示友善也要考虑(无论系统出什么问题,前台查询必须每月都有准确或接近准确的数据),用的数据库为DB2

求各位老师,给个相类似的案例,谢谢!

2012年9月01日 14:37

2个答案 按时间排序 按投票排序

0 0

详细设计问题:
1:外系统送的空文件,如何处理数据?(我需要保证月末数据有)

写一套验证程序  验证文件是否合法,不合法 则找出不合法数据单独写一个文件;然后人工处理;

2:月末根据什么判断,放入历史表,根据外系统的时间判断,在存储过程中怎么通过脚本获取外系统送的字段【会计日期】?是否可以根据我系统的时间推算外系统的时间?哪个更严谨些?

定时任务:比如quartz,每月第一天晚上汇总上个月的;


3:因为每天会覆盖历史数据,只有月末的时候才放入历史表,如果外系统在月末那天没有送数据或送空数据,那个月的数据就会没有,应该如何处理可以避免,可以让前台查询到月末前一天的数据?

   没有数据就是没有数据; 可以记录下外部系统推送的时间 给管理员显示这个月都谁推送了;
   每次传上历史数据,再启动一个定时任务 晚上计算;
  

记住把外系统传来的数据做备份,万一有问题 可以查看这些数据进行分析。

2012年9月01日 18:35
0 0

先谈下数据交互的原则,基于我的经验。

1. 责任明确。
上游负责给数据,下游 —— 你负责接收数据。双方要约定好接口和格式的。
比如格式是逗号隔开csv,文件名是日期等等。
责任明确的核心是双方必须按约定来。上游必须按格式给数据,下游只按约定解析数据,有错误不予解析,相反要及时通知上游数据错误。

2. 忠于来源。
上游给什么数据,下游必须如实解析,不能自行推测,修改,增删等。

3. 尽量强壮。
比如错误数据不能污染已有的数据等。
但这个也是有限度的,双方也需要约定好。依据第2条,下游不能推测数据的,所以有些业务上的错误就是没辙。但也不能说,稍稍个错误就把所有数据都废了。


然后再回答你的问题,

引用
1:外系统送的空文件,如何处理数据?(我需要保证月末数据有)

>按双方约定,这种要么报错,要么忽略,总之不处理。

引用
2:月末根据什么判断,放入历史表,根据外系统的时间判断,在存储过程中怎么通过脚本获取外系统送的字段【会计日期】?是否可以根据我系统的时间推算外系统的时间?哪个更严谨些? 

>下游不能推测数据,这个月末判断也需要双方约定,我们以前用文件名啊,比如yyyyMMDD_end.txt是月末数据。比如约定好,这个文件不给该月永远不结;或者约定好,一旦有正确的下月数据来了就代表上月结算过了;等等,总之要双方约定!

引用

3:因为每天会覆盖历史数据,只有月末的时候才放入历史表,如果外系统在月末那天没有送数据或送空数据,那个月的数据就会没有,应该如何处理可以避免,可以让前台查询到月末前一天的数据?


>同上。

异常处理的约定,流程及恢复是考究功力的地方,也是需要双方合作的地方。

2012年9月01日 18:26

相关推荐

Global site tag (gtag.js) - Google Analytics