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
可以来算一下