一个程序设计思路的问题

我家有奥特曼 2010-12-28 01:32:19


现在的项目中有这么一个业务:

第一步:某一产品签订一个合同,并定义了唯一的一个编号(假如为HT001);
第二步:然后当需要使用该产品时需要一个进场处理,这时确定一个进场日期(假如为s1);
第三步:当用完后,需要退场处理,这时确定一个退出日期(假如为e1);
第四步:会对其进行结算,需要一个工作时间即时间段,该时间段由用户选择的起日(假如为js1)止日(假如为je1)中统计出退场日期--进场日期的时间(即e1--s1 假设 js1<s1<e1<je1)

(第二步和第三步和第四步可以循环进行,即可以多次进退场,多次结算,结算时要过滤掉以前结算过的日期)

业务大致如上,我在给出一个应用的场景:

一产品 编号为HT001

(1号进场s1-------3号退场e1)------(6号进场s2-------8号退场e2)-------(10号进场s3---------20号退场e3)........

此时结算如下

结算单j1:起日为2号js1,止日为4号je1 那么得到的时间段应该为 :3-2=1
结算单j2:起日为8号js2,止日为12号je2 那么得到的时间段应该为:(8-8)+(12-10)=2
结算单j3:起日为3号js3,止日为17号je3 那么得到的时间段应该为 :(3-3)+(8-6)+(17-10)-1-2=6
(因为j1中已经结算过3号,j2中已经结算过10号,11号,所以减去这3天)
.......

(不知我描述的是否清楚,不清楚我再描述下)

有很多种结算情况,即结算单的起止日可以重复,包含等,但进退场日期不会重复,每一天都是唯一的
结算单就要考虑已经结算过的天,要减掉结算过的日期

大致情况就是这样,此问题困扰我2-3天了,想了很多,但发现会做过多的判断或者某一种情况会出现错误数据,故此请各位帮下忙,讨论给出一个计算方法,思路或者数据库加一些标识字段以便统计

数据库大致会有4张表:合同,进场,退场,结算


...全文
179 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
酷儿 2010-12-28
  • 打赏
  • 举报
回复
还是不清楚
我家有奥特曼 2010-12-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yeness 的回复:]
看了半天还是没看明白,估计还是需求调研没做好
[/Quote]
晕,难道是我需求没写清楚

就是同一个合同可以多次进退场,结算时需要把在结算起止日内的 进退场的时间段都加起来
但是结算单的起止日可能会添加重叠,故此需要把以前结算过的天数给去除掉
xuan.ye 2010-12-28
  • 打赏
  • 举报
回复
看了半天还是没看明白,估计还是需求调研没做好
我家有奥特曼 2010-12-28
  • 打赏
  • 举报
回复
来人啊,自己顶
我家有奥特曼 2010-12-28
  • 打赏
  • 举报
回复
各位帮帮忙啊,自己顶

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧