wuxw
2024-05-31 8c066c39b9e5ebc39992f7152bf706acdae00f4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
package com.java110.core.smo;
 
import com.alibaba.fastjson.JSONObject;
import com.java110.dto.room.RoomDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.integral.IntegralRuleConfigDto;
import com.java110.dto.machine.CarInoutDetailDto;
import com.java110.dto.machine.CarInoutDto;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.dto.report.ReportCarDto;
import com.java110.dto.report.ReportFeeDto;
import com.java110.dto.report.ReportRoomDto;
import com.java110.po.fee.FeeReceiptDetailPo;
 
import java.util.Date;
import java.util.List;
import java.util.Map;
 
/**
 * 费用计算 服务类
 * <p>
 * add by wuxw 2020-09-23
 *
 * @openSource https://gitee.com/wuxw7/MicroCommunity.git
 */
public interface IComputeFeeSMO {
 
 
    /**
     * 计算费用结束时间
     *
     * @return
     */
    Date getFeeEndTime();
 
    /**
     * 获取 deadlineTime
     * @param feeDto
     * @return
     */
    Date getDeadlineTime(FeeDto feeDto);
 
    /**
     * 计算欠费金额
     *
     * @param tmpFeeDto
     */
    public void computeOweFee(FeeDto tmpFeeDto);
 
    /**
     * 刷新
     *
     * @param feeDto
     * @param feeReceiptDetailPo
     */
    void freshFeeReceiptDetail(FeeDto feeDto, FeeReceiptDetailPo feeReceiptDetailPo);
 
    /**
     * 根据周期 计算费用状态
     *
     * @param feeDto
     * @param cycles
     * @return
     */
    public String getFeeStateByCycles(FeeDto feeDto, String cycles);
 
    /**
     * 查询费用对象名称
     *
     * @param feeDto
     * @return
     */
    public String getFeeObjName(FeeDto feeDto);
 
    /**
     * 查询费用的业主信息
     *
     * @param feeDto
     * @return
     */
    public OwnerDto getFeeOwnerDto(FeeDto feeDto);
 
    /**
     * 查询费用的业主信息
     *
     * @param feeId
     * @return
     */
    OwnerDto getFeeOwnerDto(String feeId);
 
    /**
     * 刷入 付费方名称
     *
     * @param feeDtos
     */
    public void freshFeeObjName(List<FeeDto> feeDtos);
 
    /**
     * 根据缴费周期计算 结束时间
     *
     * @param feeDto
     * @param cycles 缴费周期
     * @return
     */
    public Date getFeeEndTimeByCycles(FeeDto feeDto, String cycles);
 
 
    /**
     * 获取目标结束时间
     *
     * @param month     月份
     * @param startDate 开始时间
     * @return 新的日期
     */
    Date getTargetEndTime(double month, Date startDate);
 
 
    /**
     * 计算周期
     *
     * @return
     */
    double getCycle();
 
    public Map getTargetEndDateAndOweMonth(FeeDto feeDto, OwnerCarDto ownerCarDto);
 
    /**
     * 获取目标结束时间和欠费月份
     *
     * @param feeDto
     * @return {
     * targetEndDate:2020-09-09 11:11:11
     * oweMonth:1.0
     * }
     */
     Map getTargetEndDateAndOweMonth(FeeDto feeDto);
 
 
    /**
     * 计算费用单价
     *
     * @return
     */
     Map getFeePrice(FeeDto feeDto);
 
 
     Map getFeePrice(FeeDto feeDto, RoomDto roomDto);
 
    /**
     * 时间差 按天折算
     *
     * @param fromDate 开始时间
     * @param toDate   结束时间
     * @return 相差月数
     */
//    double dayCompare(Date fromDate, Date toDate);
 
    /**
        *字符串的日期格式的计算
        */
    long daysBetween(Date smdate,Date bdate) ;
 
    double getReportFeePrice(ReportFeeDto tmpReportFeeDto, ReportRoomDto reportRoomDto, ReportCarDto reportCarDto);
 
    void computeEveryOweFee(FeeDto tmpFeeDto);
 
    void computeEveryOweFee(FeeDto tmpFeeDto, RoomDto roomDto);
 
 
    void computeEveryOweFeeByTargetEndTime(FeeDto tmpFeeDto, String targetEndTime);
 
    /**
     * 计算停车时间和费用
     *
     * @param carInoutDtos
     */
    List<CarInoutDto> computeTempCarStopTimeAndFee(List<CarInoutDto> carInoutDtos);
 
    /**
     * 计算停车时间和费用
     *
     * @param carInoutDtos
     */
    List<CarInoutDetailDto> computeTempCarInoutDetailStopTimeAndFee(List<CarInoutDetailDto> carInoutDtos);
 
    /**
     * 租金处理
     *
     * @param feeDto
     */
    void dealRentRate(FeeDto feeDto);
 
    /**
     * 租金处理
     *
     * @param feeDto
     */
    void dealRentRateCycle(FeeDto feeDto,double cycle);
 
 
    /**
     * 租金处理
     * @param feeDto
     * @param custEndTime
     */
    void dealRentRateCustEndTime(FeeDto feeDto, Date custEndTime);
 
    long computeOneIntegralQuantity(IntegralRuleConfigDto integralRuleConfigDto, JSONObject reqJson);
 
}