[图解]水电煤气房租-分析序列图和代码对应03(EA-027)

1
00:00:01,240 --> 00:00:02,990
接下来,我们来看代码了

2
00:00:03,430 --> 00:00:07,940
这个代码不是从EA直接过来的 

3
00:00:08,320 --> 00:00:09,450
EA映射也是可以映射的

4
00:00:11,190 --> 00:00:11,760
怎么映射

5
00:00:11,770 --> 00:00:13,880
比如说

6
00:00:13,890 --> 00:00:17,390
我们之前尝试过

7
00:00:17,680 --> 00:00:21,190
用EA映射是得到直接得到属性

8
00:00:22,540 --> 00:00:24,090
如果说你要把它变成

9
00:00:25,280 --> 00:00:27,080
你看,我们这里的代码是什么

10
00:00:27,980 --> 00:00:33,020
租约这里,都是 get set

11
00:00:33,030 --> 00:00:34,260
是property

12
00:00:34,940 --> 00:00:36,210
实际上就是把get set

13
00:00:36,220 --> 00:00:39,450
跟属性绑一起

14
00:00:40,490 --> 00:00:43,250
就以property的形式出现了

15
00:00:44,110 --> 00:00:45,420
如果要得到这个的话

16
00:00:45,430 --> 00:00:47,140
生成这个,怎么处理

17
00:00:47,230 --> 00:00:50,680
在这里,选中哪个属性

18
00:00:50,690 --> 00:00:56,750
然后这里,在这个地方

19
00:00:56,920 --> 00:00:58,070
有一个property

20
00:00:58,080 --> 00:01:01,750
这里,你点这个,设就行了

21
00:01:02,090 --> 00:01:03,880
设完之后

22
00:01:05,070 --> 00:01:06,060
这样就生成一个property

23
00:01:06,070 --> 00:01:08,180
然后你生成代码的时候它就有

24
00:01:08,620 --> 00:01:11,070
它会有这样的出现了

25
00:01:14,610 --> 00:01:15,880
我们看,我们的租约

26
00:01:18,410 --> 00:01:21,890
你看它有12345

27
00:01:22,280 --> 00:01:23,360
678

28
00:01:24,230 --> 00:01:24,830
还有什么

29
00:01:24,840 --> 00:01:27,050
9,10

30
00:01:28,230 --> 00:01:31,410
11,12个属性

31
00:01:32,550 --> 00:01:33,380
我们看我们这里

32
00:01:34,890 --> 00:01:35,160
Id不算

33
00:01:35,170 --> 00:01:40,720
123456789

34
00:01:40,730 --> 00:01:42,360
10 11 12

35
00:01:43,250 --> 00:01:44,680
加了一个状态

36
00:01:46,010 --> 00:01:49,680
我们状态机没用上

37
00:01:50,270 --> 00:01:53,080
因为要用就更复杂了

38
00:01:53,090 --> 00:01:54,550
我们这里代码就演示就

39
00:01:54,560 --> 00:01:56,270
因为状态实际上就一个

40
00:01:57,840 --> 00:02:01,200
用到了一个正常,一个已提醒

41
00:02:01,490 --> 00:02:03,720
已提醒一旦交费了,又回到正常了

42
00:02:06,800 --> 00:02:08,110
然后这个是冗余的

43
00:02:08,400 --> 00:02:10,590
下一个应交租周期是冗余的

44
00:02:10,840 --> 00:02:12,430
为什么加这个冗余

45
00:02:12,440 --> 00:02:15,870
就是先把它算好了之后再查询

46
00:02:16,350 --> 00:02:19,020
这样的话效率会高一点

47
00:02:21,840 --> 00:02:25,680
不算,直接边算边查,也可以

48
00:02:26,410 --> 00:02:28,710
我们一会可以再看里面代码

49
00:02:31,620 --> 00:02:32,450
其他一样的

50
00:02:32,580 --> 00:02:36,270
其他一样,应交费用

51
00:02:36,780 --> 00:02:36,960


52
00:02:36,970 --> 00:02:38,620
应交费用项

53
00:02:41,680 --> 00:02:43,520
那么有操作的地方

54
00:02:44,090 --> 00:02:45,680
水电煤表有个读表

55
00:02:46,300 --> 00:02:48,090
这里有个计算应交费用之类的

56
00:02:48,380 --> 00:02:51,560
水电煤表,读表

57
00:02:55,090 --> 00:03:00,050
这里,按照我们序列图上,应该是什么

58
00:03:00,060 --> 00:03:04,660
应该是仪表接口来读表

59
00:03:05,510 --> 00:03:07,630
但是我们现在没有仪表接口

60
00:03:08,550 --> 00:03:12,450
我们就把它跟这个类合并起来了

61
00:03:13,610 --> 00:03:16,160
这个跟水电煤表接口合并

62
00:03:16,700 --> 00:03:18,840
因为我们现在没有真实的表去读

63
00:03:19,200 --> 00:03:20,920
所以我们的实现是什么

64
00:03:21,440 --> 00:03:24,980
读的话就返回一个随机的小数

65
00:03:25,600 --> 00:03:28,610
这个就是我们读表的结果了

66
00:03:29,450 --> 00:03:32,000
当然,实际上真正的数值

67
00:03:32,010 --> 00:03:33,920
应该是这一次的读数

68
00:03:33,930 --> 00:03:37,390
减去最近一次的读数

69
00:03:39,390 --> 00:03:46,110
或减去上次收房租之前的读数

70
00:03:46,240 --> 00:03:47,710
但是这个又更复杂了

71
00:03:47,720 --> 00:03:50,700
我们这里就意思一下,这样就可以

72
00:03:50,710 --> 00:03:55,200
然后租约这里

73
00:03:59,000 --> 00:04:01,200
这个最复杂是在这里了

74
00:04:02,060 --> 00:04:07,960
算费用,这个地方

75
00:04:10,120 --> 00:04:13,720
然后我们得到这个代码之后

76
00:04:14,170 --> 00:04:17,160
一个个就按照它这样来,得到这个之后

77
00:04:17,170 --> 00:04:21,140
我们通过Entity Framework的

78
00:04:22,830 --> 00:04:25,170
code-first这个方式

79
00:04:25,260 --> 00:04:28,460
直接把它迁移到数据库

80
00:04:30,790 --> 00:04:32,100
然后初始化一些数据

81
00:04:36,040 --> 00:04:39,270
好,这是我们的代码的映射

82
00:04:39,480 --> 00:04:40,750
下面我们来执行一下看看

83
00:04:41,140 --> 00:04:45,120
我们和序列图对照

84
00:04:45,130 --> 00:04:48,800
你看,第一个定时的

85
00:04:48,890 --> 00:04:52,940
因为它是定时来算的

86
00:04:52,950 --> 00:04:58,260
所以我们的代码,我们主程序在这里

87
00:04:59,140 --> 00:05:03,160
我们这就直接设一个了

88
00:05:03,730 --> 00:05:04,560
一会再设

89
00:05:04,870 --> 00:05:07,300
现在设也没用

90
00:05:07,310 --> 00:05:11,390
因为我们在讲的过程中,时间过去了

91
00:05:11,400 --> 00:05:14,380
设好了时间,在这里设

92
00:05:14,800 --> 00:05:16,630
比如每天12点

93
00:05:16,640 --> 00:05:18,710
在这里

94
00:05:18,720 --> 00:05:21,150
到时间就开始算租金

95
00:05:23,650 --> 00:05:24,320
算租金

96
00:05:25,970 --> 00:05:28,900
我们先执行一下

97
00:05:28,910 --> 00:05:31,140
我们执行到哪里

98
00:05:38,130 --> 00:05:40,470
还挺麻烦的

99
00:05:40,480 --> 00:05:41,670
执行不到这里

100
00:05:42,240 --> 00:05:44,190
因为那是定时的

101
00:05:45,670 --> 00:05:48,680
我们先看,你看这里,到这里

102
00:05:50,190 --> 00:05:55,600
这是定时,就是这个了

103
00:05:56,110 --> 00:05:57,190
然后控制类

104
00:05:57,200 --> 00:05:58,950
我们就没有要控制类

105
00:05:59,240 --> 00:06:00,670
直接就调用了什么

106
00:06:02,000 --> 00:06:03,080
调用了Context

107
00:06:03,090 --> 00:06:06,830
相当于租约这里

108
00:06:08,130 --> 00:06:11,960
我们把这个、这个合并在一起了

109
00:06:13,070 --> 00:06:13,940
搞了一个

110
00:06:13,950 --> 00:06:16,640
查找应提醒交租的租约,这里

111
00:06:17,320 --> 00:06:20,660
这是直接找租约这里,这一句就对应这一句

112
00:06:20,670 --> 00:06:21,550


113
00:06:21,560 --> 00:06:24,580
你看这一句回来是一个什么

114
00:06:26,840 --> 00:06:28,520
回来是一个租约的列表

115
00:06:28,530 --> 00:06:31,700
里面条件是什么

116
00:06:31,830 --> 00:06:33,880
你看,所有的租约

117
00:06:34,010 --> 00:06:37,160
这下面是把租约的相关的对象

118
00:06:37,480 --> 00:06:38,950
整个对象图拿过来了

119
00:06:38,960 --> 00:06:45,520
你看,首先状态不能是已提醒,你提醒过了

120
00:06:45,530 --> 00:06:46,600
就不能再提醒了

121
00:06:47,430 --> 00:06:49,140
刚刚发微信提醒过

122
00:06:49,150 --> 00:06:50,460
然后你又来一遍

123
00:06:50,790 --> 00:06:54,260
那提醒过了应该标记,这个已经提醒过了

124
00:06:54,430 --> 00:06:58,880
否则又发一遍,他不就生气了

125
00:06:59,150 --> 00:07:02,490
这里,租约的下一个交租周期

126
00:07:07,600 --> 00:07:12,130
就是说,下一个交租周期减去提前提醒的天数

127
00:07:13,640 --> 00:07:17,800
必须是在当前时间之前的

128
00:07:19,020 --> 00:07:23,090
当前时间加上提前提醒天数

129
00:07:23,100 --> 00:07:25,370
就等于(口误:大于)下一个应交租周期

130
00:07:25,380 --> 00:07:27,810
那么下一个应交租周期怎么来呢

131
00:07:30,060 --> 00:07:31,170
在这里,你看

132
00:07:32,080 --> 00:07:33,920
我们先计算

133
00:07:33,930 --> 00:07:34,960
所有租约的

134
00:07:34,970 --> 00:07:37,670
下一个应交租周期,怎么算的

135
00:07:37,680 --> 00:07:39,410
你看,这里

136
00:07:46,590 --> 00:07:51,600
这个地方,每周的话怎么样

137
00:07:52,000 --> 00:07:53,600
每月的话怎么样

138
00:07:53,870 --> 00:07:55,110
每季度怎么样

139
00:07:55,790 --> 00:07:56,860
每半年怎么样

140
00:07:57,190 --> 00:07:58,140
我们看一下数据

141
00:07:58,230 --> 00:08:04,050
你看,比如说,起租时间8月1号

142
00:08:05,080 --> 00:08:06,950
我是8月份重新录的

143
00:08:07,720 --> 00:08:10,020
你看这个1是按周的

144
00:08:10,030 --> 00:08:15,560
那么下一个,它是2,就是下周一了

145
00:08:15,570 --> 00:08:16,640
就周一了

146
00:08:16,890 --> 00:08:19,200
8月12号,明天周一

147
00:08:20,020 --> 00:08:21,890
是下一个交租日

148
00:08:22,950 --> 00:08:24,980
但同样这也是8月1号起租的

149
00:08:24,990 --> 00:08:27,820
但是他按月的,2是按月

150
00:08:28,330 --> 00:08:29,480
那是9月20号了

151
00:08:29,490 --> 00:08:30,640
不是8月20号

152
00:08:30,650 --> 00:08:32,640
因为8月1号租他肯定交了费

153
00:08:33,310 --> 00:08:36,260
你8月20号又催,他不就生气了

154
00:08:36,270 --> 00:08:39,590
那是9月20号

 

1
00:00:00,660 --> 00:00:03,650
8月10号要交租的

2
00:00:04,680 --> 00:00:06,590
今天就得提醒了

3
00:00:07,230 --> 00:00:07,400
为什么

4
00:00:07,410 --> 00:00:11,220
因为你看这是由交租周期来定的

5
00:00:11,230 --> 00:00:17,080
交租周期在,交租周期这里

6
00:00:23,860 --> 00:00:27,010
你看这里,每周要提前一天提醒

7
00:00:27,020 --> 00:00:29,290
今天刚好是提前一天

8
00:00:29,930 --> 00:00:32,040
刚好是今天来提醒

9
00:00:32,050 --> 00:00:34,800
所以一会我们查询的时候,就会发现什么

10
00:00:36,490 --> 00:00:40,360
租约Id为3的租约就会查出来

11
00:00:40,450 --> 00:00:43,000
我们看ID为3的租约的话

12
00:00:43,010 --> 00:00:44,360
他租了几个房间

13
00:00:47,890 --> 00:00:53,360
ID为3的租约租了467三个房间

14
00:00:54,750 --> 00:00:55,910
467三个房间

15
00:00:55,920 --> 00:00:58,620
这个房间的信息在这里

16
00:01:00,220 --> 00:01:03,610
A101,b201,b202

17
00:01:04,320 --> 00:01:08,160
而它们里面装的电表水表在哪里

18
00:01:08,170 --> 00:01:10,030
在这里,4,6,7

19
00:01:10,040 --> 00:01:14,200
你看,这房间4,水表

20
00:01:14,210 --> 00:01:15,520
房间4的电表

21
00:01:16,390 --> 00:01:18,350
房间4的水表

22
00:01:18,360 --> 00:01:21,390
房间6的水表,房间6的电表

23
00:01:21,400 --> 00:01:23,970
房间7的煤气表

24
00:01:23,980 --> 00:01:27,180
一共有5个表的费用要算

25
00:01:28,140 --> 00:01:29,380
要读,要算的

26
00:01:29,970 --> 00:01:33,670
然后其他费用在这里

27
00:01:37,800 --> 00:01:38,600
租约3

28
00:01:39,830 --> 00:01:40,330


29
00:01:42,120 --> 00:01:44,740
类别ID,这个应该是水费

30
00:01:46,160 --> 00:01:48,230
这个应该是电费,这是煤气费

31
00:01:48,710 --> 00:01:49,830
这是物业费

32
00:01:50,950 --> 00:01:52,620
1应该是房租

33
00:01:53,280 --> 00:01:54,350
6200的房租

34
00:01:54,360 --> 00:01:55,670
因为租了三个房间

35
00:01:56,260 --> 00:01:57,910
物业费是36块

36
00:01:58,690 --> 00:02:02,600
然后这个是煤气费、电费

37
00:02:02,730 --> 00:02:03,900
水费这样的

38
00:02:07,040 --> 00:02:13,760
这样来,先算好

39
00:02:14,480 --> 00:02:18,560
你看,第一个先计算

40
00:02:19,460 --> 00:02:20,900
这个算好了

41
00:02:20,910 --> 00:02:26,770
把它填到刚才冗余的字段里面去

42
00:02:27,400 --> 00:02:30,660
然后根据来查询

43
00:02:32,120 --> 00:02:33,630
哪些该提醒交租了

44
00:02:33,640 --> 00:02:35,430
那就返回来一个什么

45
00:02:35,440 --> 00:02:38,030
一个租约的集合了

46
00:02:38,870 --> 00:02:41,020
返回来一个集合,在哪里

47
00:02:41,150 --> 00:02:44,080
就到这里

48
00:02:45,870 --> 00:02:48,070
好,得到这个集合之后

49
00:02:49,490 --> 00:02:51,490
然后针对这个集合里面每一个租约

50
00:02:51,500 --> 00:02:55,500
让租约来计算应交费用

51
00:02:55,510 --> 00:02:57,020
在这里

52
00:02:58,720 --> 00:03:00,750
复杂的代码在这里

53
00:03:01,320 --> 00:03:02,670
计算应交费用在这里

54
00:03:03,900 --> 00:03:04,650
怎么计算

55
00:03:04,940 --> 00:03:08,420
首先要创建一个应交费用的对象

56
00:03:09,070 --> 00:03:11,670
我们看序列图这里,查找回来

57
00:03:11,680 --> 00:03:14,630
读表在这里,我们把它变成仪表了

58
00:03:15,120 --> 00:03:17,510
就折中了一下,计算应交费用在这里

59
00:03:17,970 --> 00:03:18,290


60
00:03:18,300 --> 00:03:23,180
在这里,对应于这个

61
00:03:26,230 --> 00:03:28,980
然后创建应交费用的对象

62
00:03:28,990 --> 00:03:31,950
在这里

63
00:03:31,960 --> 00:03:36,340
这一步,添加到应交费用集合

64
00:03:38,410 --> 00:03:41,610
然后开始算水电煤气费用了

65
00:03:41,820 --> 00:03:44,520
针对,你看每个租约

66
00:03:45,530 --> 00:03:47,280
租了若干房间

67
00:03:47,640 --> 00:03:52,430
每个房间里面的每个水电煤表,先读表

68
00:03:55,160 --> 00:03:58,040
然后得到读数了

69
00:03:58,050 --> 00:04:00,560
然后找到相应的费用标准

70
00:04:02,620 --> 00:04:03,570
费用标准怎么找

71
00:04:03,580 --> 00:04:05,210
根据这个费用类别来找

72
00:04:06,070 --> 00:04:07,640
我这个表类别是水表

73
00:04:07,650 --> 00:04:10,040
那么费用类别是水费

74
00:04:11,130 --> 00:04:13,760
水费在我这个租约里面是怎么写的

75
00:04:13,770 --> 00:04:15,000
标准是多少,,在这里

76
00:04:15,610 --> 00:04:21,220
然后把标准跟读数乘起来就得到金额了

77
00:04:21,350 --> 00:04:22,940
就创建一个费用项

78
00:04:24,310 --> 00:04:25,030
这里

79
00:04:26,120 --> 00:04:28,440
然后把它添加到应交费用里面

80
00:04:28,650 --> 00:04:30,640
这样来,然后总金额加上去

81
00:04:31,670 --> 00:04:32,860
但这里要记录一下

82
00:04:33,740 --> 00:04:36,060
已添加这个类别,为什么要记录这个

83
00:04:37,320 --> 00:04:40,030
因为我们后面有一个

84
00:04:41,290 --> 00:04:43,200
我们这个费用标准里面

85
00:04:43,210 --> 00:04:46,440
可能有水费电费煤气费物业费

86
00:04:46,450 --> 00:04:47,440
房租等等

87
00:04:48,520 --> 00:04:49,790
其中水费电费

88
00:04:49,800 --> 00:04:51,750
煤气费是读表得来的

89
00:04:51,760 --> 00:04:53,110
读表得到读数算的

90
00:04:55,960 --> 00:04:58,000
但是除了这些读表

91
00:04:58,010 --> 00:04:59,680
我们先算了这个读表的

92
00:05:00,170 --> 00:05:02,230
先把这个费用项给建立起来了

93
00:05:03,430 --> 00:05:04,860
剩下的没读表的

94
00:05:05,520 --> 00:05:07,010
但是费用标准里面又有的

95
00:05:07,700 --> 00:05:08,610
那就在这里了

96
00:05:09,790 --> 00:05:11,380
所以我们必须要记住

97
00:05:11,390 --> 00:05:16,770
哪些已经有了的

98
00:05:16,780 --> 00:05:19,720
我们就不再添加费用

99
00:05:19,730 --> 00:05:22,280
比如,前面已经有电费了,你又搞一遍

100
00:05:22,290 --> 00:05:23,520
或者前面有物业费

101
00:05:23,530 --> 00:05:25,120
你又搞一遍,那不行

102
00:05:25,580 --> 00:05:29,550
每个只能有一项这样加进来

103
00:05:30,830 --> 00:05:38,240
好,这些应交费用,费用项,就是这里了

104
00:05:39,100 --> 00:05:41,120
建立好之后

105
00:05:41,920 --> 00:05:42,790
建立好之后

106
00:05:45,430 --> 00:05:49,790
我们就查询应交费用

107
00:05:51,040 --> 00:05:52,190
把它返回来

108
00:05:55,000 --> 00:05:56,470
返回来一个DTO

109
00:05:57,230 --> 00:05:58,420
DTO的定义

110
00:06:01,090 --> 00:06:03,040
就是这个了,总金额、交租期限

111
00:06:03,050 --> 00:06:04,520
然后里面有费用项明细

112
00:06:04,870 --> 00:06:11,090
有金额,这样,返回来

113
00:06:11,100 --> 00:06:14,670
然后就把它列出来

114
00:06:20,220 --> 00:06:23,850
还应该要加一个租约的ID什么的

115
00:06:23,860 --> 00:06:25,010
不加也无所谓

116
00:06:26,610 --> 00:06:31,440
这样出来,我们这里查出来只有一条租约

117
00:06:31,570 --> 00:06:34,160
所以他就只有一个

118
00:06:34,170 --> 00:06:35,920
我们就两条租约数据里面

119
00:06:36,130 --> 00:06:37,720
其中有一条符合条件的

120
00:06:39,000 --> 00:06:41,270
这样来,我们来运行一下

121
00:06:41,840 --> 00:06:44,740
运行的话,我看现在是几点

122
00:06:45,110 --> 00:06:46,200
6:07

123
00:06:47,280 --> 00:06:49,350
我们来一个,现在是6:08

124
00:06:49,520 --> 00:06:51,190
我们就把它改成6::08

125
00:06:51,400 --> 00:07:01,070
下午6:08,就18:08

126
00:07:02,840 --> 00:07:04,560
每天,不是上午了

127
00:07:04,880 --> 00:07:06,710
18:08

128
00:07:07,480 --> 00:07:07,940

129
00:07:08,480 --> 00:07:11,490
这里,我们执行一下

130
00:07:15,240 --> 00:07:17,370
我们先看,先断在这里

131
00:07:25,570 --> 00:07:27,060
你看18:08 

132
00:07:47,640 --> 00:07:50,940
你看这里面18:08

133
00:07:51,110 --> 00:07:53,740
我们继续往下走

134
00:07:53,750 --> 00:07:57,140
56了

135
00:08:04,880 --> 00:08:06,030
好,算出来

136
00:08:06,920 --> 00:08:08,150
有这么多房租

137
00:08:08,160 --> 00:08:10,790
是这个,刚才我们看到了,物业费这个没问题

138
00:08:10,880 --> 00:08:13,350
我们看水费有两个

139
00:08:13,480 --> 00:08:14,790
它有两个水表

140
00:08:14,800 --> 00:08:15,990
两个电表

141
00:08:16,000 --> 00:08:17,700
两个水表,两个电表

142
00:08:17,710 --> 00:08:20,800
然后燃气费,这么贵

143
00:08:21,980 --> 00:08:29,700
费用标准,我们看读数

144
00:08:29,710 --> 00:08:38,400
读数删掉了

145
00:08:39,280 --> 00:08:40,880


146
00:08:43,230 --> 00:08:43,980
没有留下来

147
00:08:45,160 --> 00:08:46,790
没有保存下来

148
00:08:47,440 --> 00:08:50,640
读数这里,大家可以

149
00:08:50,650 --> 00:08:53,760
把它改成不用定时器的

150
00:08:54,330 --> 00:08:57,400
如果想看一步一步去执行的话

151
00:08:57,410 --> 00:08:58,920
就改成不用定时器的

152
00:08:58,930 --> 00:09:02,370
然后一步一步,程序启动

153
00:09:02,380 --> 00:09:04,850
然后就一步一步这样往下看

154
00:09:04,980 --> 00:09:05,970
这个应该是对的

155
00:09:06,660 --> 00:09:07,140


156
00:09:08,910 --> 00:09:10,020
可以来算一下

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值