|
@@ -76,6 +76,8 @@ public class CmcContractController extends BaseController
|
76
|
76
|
JSONObject jsonObject = new JSONObject();
|
77
|
77
|
JSONArray yearArray = new JSONArray();
|
78
|
78
|
JSONObject yearObject = new JSONObject();
|
|
79
|
+ JSONArray monthArray = new JSONArray();
|
|
80
|
+ JSONObject monthObject = new JSONObject();
|
79
|
81
|
JSONArray sourceArray = new JSONArray();
|
80
|
82
|
JSONObject sourceObject = new JSONObject();
|
81
|
83
|
JSONArray amountArray = new JSONArray();
|
|
@@ -90,51 +92,93 @@ public class CmcContractController extends BaseController
|
90
|
92
|
JSONObject paidAmountObject = new JSONObject();
|
91
|
93
|
JSONArray paidCwAmountArray = new JSONArray();
|
92
|
94
|
JSONObject paidCwAmountObject = new JSONObject();
|
|
95
|
+ int count = 0;
|
|
96
|
+ int paidCount = 0;
|
|
97
|
+ BigDecimal amount = new BigDecimal(0);
|
|
98
|
+ BigDecimal paidAmount = new BigDecimal(0);
|
93
|
99
|
//每年合同数量及金额
|
94
|
100
|
if (cmcContract.getSignDate() == null) {
|
95
|
|
- for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
|
96
|
|
- cmcContract.setSignDate(new SimpleDateFormat("yyyy").parse(String.valueOf(i)));
|
97
|
|
- List<CmcContract> yearList = cmcContractService.selectCmcContractList(cmcContract);
|
98
|
|
- yearObject.put(String.valueOf(i), yearList.size());
|
99
|
|
- int count = 0;
|
100
|
|
- BigDecimal amount = new BigDecimal(0);
|
101
|
|
- BigDecimal paidAmount = new BigDecimal(0);
|
102
|
|
- for (CmcContract contract : yearList) {
|
103
|
|
- if (contract.getAmount() != null)
|
104
|
|
- amount = amount.add(contract.getAmount());
|
105
|
|
- if (contract.getPaidAmount() != null) {
|
106
|
|
- paidAmount = paidAmount.add(contract.getPaidAmount());
|
107
|
|
- if (contract.getPaidAmount().compareTo(contract.getAmount()) >= 0)
|
108
|
|
- count ++;
|
|
101
|
+ if (cmcContract.getParams().size() == 0) {
|
|
102
|
+ for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
|
|
103
|
+ cmcContract.setSignDate(new SimpleDateFormat("yyyy").parse(String.valueOf(i)));
|
|
104
|
+ List<CmcContract> yearList = cmcContractService.selectCmcContractList(cmcContract);
|
|
105
|
+ int countI = yearList.size();
|
|
106
|
+ count += countI;
|
|
107
|
+ yearObject.put(String.valueOf(i), countI);
|
|
108
|
+ int paidCountI = 0;
|
|
109
|
+ BigDecimal amountI = new BigDecimal(0);
|
|
110
|
+ BigDecimal paidAmountI = new BigDecimal(0);
|
|
111
|
+ for (CmcContract contract : yearList) {
|
|
112
|
+ if (contract.getAmount() != null)
|
|
113
|
+ amountI = amountI.add(contract.getAmount());
|
|
114
|
+ if (contract.getPaidAmount() != null) {
|
|
115
|
+ paidAmountI = paidAmountI.add(contract.getPaidAmount());
|
|
116
|
+ if (contract.getPaidAmount().compareTo(contract.getAmount()) >= 0)
|
|
117
|
+ paidCountI++;
|
|
118
|
+ }
|
109
|
119
|
}
|
|
120
|
+ paidCount += paidCountI;
|
|
121
|
+ amount = amount.add(amountI);
|
|
122
|
+ paidAmount = paidAmount.add(paidAmountI);
|
|
123
|
+ paidYearObject.put(String.valueOf(i), paidCountI);
|
|
124
|
+ amountObject.put(String.valueOf(i), amountI);
|
|
125
|
+ paidAmountObject.put(String.valueOf(i), paidAmountI);
|
|
126
|
+ }
|
|
127
|
+ }
|
|
128
|
+ else {
|
|
129
|
+ String beginTime = (String) cmcContract.getParams().get("beginTime");
|
|
130
|
+ String endTime = (String) cmcContract.getParams().get("endTime");
|
|
131
|
+ List<String> monthList = getMonthBetweenDate(beginTime, endTime);
|
|
132
|
+ for (int i = 0; i < monthList.size(); i++) {
|
|
133
|
+ String beginTimeString = monthList.get(i) + "-01";
|
|
134
|
+ Calendar calendar = Calendar.getInstance();
|
|
135
|
+ calendar.set(Calendar.YEAR, Integer.parseInt(monthList.get(i).split("-")[0]));
|
|
136
|
+ calendar.set(Calendar.MONTH, Integer.parseInt(monthList.get(i).split("-")[1]) - 1);
|
|
137
|
+ String endTimeString = monthList.get(i) + "-" + calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
138
|
+ cmcContract.setSignDate(new SimpleDateFormat("yyyy").parse(beginTimeString));
|
|
139
|
+ Map<String, Object> params = new HashMap<>();
|
|
140
|
+ params.put("beginTime", beginTimeString + " 00:00:00");
|
|
141
|
+ params.put("endTime", endTimeString + " 23:59:59");
|
|
142
|
+ cmcContract.setParams(params);
|
|
143
|
+ monthObject.put(monthList.get(i) + "月", cmcContractService.selectCmcContractListByRange(cmcContract).size());
|
110
|
144
|
}
|
111
|
|
- paidYearObject.put(String.valueOf(i), count);
|
112
|
|
- amountObject.put(String.valueOf(i), amount);
|
113
|
|
- paidAmountObject.put(String.valueOf(i), paidAmount);
|
114
|
145
|
}
|
115
|
146
|
cmcContract.setSignDate(null);
|
116
|
147
|
}
|
117
|
|
- else {
|
|
148
|
+ else if (cmcContract.getSignDate() != null) {
|
118
|
149
|
//输入年份合同数量及金额
|
119
|
|
- yearObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), cmcContractService.selectCmcContractList(cmcContract).size());
|
120
|
|
- int count = 0;
|
121
|
|
- BigDecimal amount = new BigDecimal(0);
|
122
|
|
- BigDecimal paidAmount = new BigDecimal(0);
|
|
150
|
+ count = cmcContractService.selectCmcContractList(cmcContract).size();
|
|
151
|
+ yearObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), count);
|
|
152
|
+ for (int i = 1; i <= 12; i++) {
|
|
153
|
+ String month = i < 10 ? "0" + i : String.valueOf(i);
|
|
154
|
+ String beginTimeString = new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()) + "-" + month + "-01";
|
|
155
|
+ Calendar calendar = Calendar.getInstance();
|
|
156
|
+ calendar.set(Calendar.YEAR, Integer.parseInt(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate())));
|
|
157
|
+ calendar.set(Calendar.MONTH, i - 1);
|
|
158
|
+ String endTimeString = new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()) + "-" + month + "-" + calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
159
|
+ cmcContract.setSignDate(new SimpleDateFormat("yyyy").parse(beginTimeString));
|
|
160
|
+ Map<String, Object> params = new HashMap<>();
|
|
161
|
+ params.put("beginTime", beginTimeString + " 00:00:00");
|
|
162
|
+ params.put("endTime", endTimeString + " 23:59:59");
|
|
163
|
+ cmcContract.setParams(params);
|
|
164
|
+ monthObject.put(i + "月", cmcContractService.selectCmcContractListByRange(cmcContract).size());
|
|
165
|
+ }
|
123
|
166
|
for (CmcContract contract : cmcContractService.selectCmcContractList(cmcContract)) {
|
124
|
167
|
if (contract.getAmount() != null)
|
125
|
168
|
amount = amount.add(contract.getAmount());
|
126
|
169
|
if (contract.getPaidAmount() != null) {
|
127
|
170
|
paidAmount = paidAmount.add(contract.getPaidAmount());
|
128
|
171
|
if (contract.getPaidAmount().compareTo(contract.getAmount()) >= 0)
|
129
|
|
- count ++;
|
|
172
|
+ paidCount ++;
|
130
|
173
|
}
|
131
|
174
|
}
|
132
|
|
- paidYearObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), count);
|
|
175
|
+ paidYearObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), paidCount);
|
133
|
176
|
amountObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), amount);
|
134
|
177
|
paidAmountObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), paidAmount);
|
135
|
178
|
}
|
136
|
|
- getProjectSourceStatistic(cmcContract, sourceObject, paidSourceObject, cwAmountObject, paidCwAmountObject);
|
|
179
|
+ getProjectSourceStatistic(cmcContract, sourceObject, paidSourceObject, cwAmountObject, paidCwAmountObject, count, paidCount, amount, paidAmount);
|
137
|
180
|
yearArray.add(yearObject);
|
|
181
|
+ monthArray.add(monthObject);
|
138
|
182
|
sourceArray.add(sourceObject);
|
139
|
183
|
amountArray.add(amountObject);
|
140
|
184
|
cwAmountArray.add(cwAmountObject);
|
|
@@ -143,6 +187,7 @@ public class CmcContractController extends BaseController
|
143
|
187
|
paidAmountArray.add(paidAmountObject);
|
144
|
188
|
paidCwAmountArray.add(paidCwAmountObject);
|
145
|
189
|
jsonObject.put("year", yearArray);
|
|
190
|
+ jsonObject.put("month", monthArray);
|
146
|
191
|
jsonObject.put("source", sourceArray);
|
147
|
192
|
jsonObject.put("amount", amountArray);
|
148
|
193
|
jsonObject.put("cwAmount", cwAmountArray);
|
|
@@ -244,44 +289,98 @@ public class CmcContractController extends BaseController
|
244
|
289
|
}
|
245
|
290
|
|
246
|
291
|
//院内外项目数量及金额
|
247
|
|
- public void getProjectSourceStatistic(CmcContract cmcContract, JSONObject sourceObject, JSONObject paidSourceObject, JSONObject cwAmountObject, JSONObject paidCwAmountObject) {
|
248
|
|
- cmcContract.setProjectSource("1");
|
249
|
|
- List<CmcContract> sourceList = cmcContractService.selectCmcContractList(cmcContract);
|
250
|
|
- int cCount = 0;
|
251
|
|
- int wCount = 0;
|
|
292
|
+ public void getProjectSourceStatistic(CmcContract cmcContract, JSONObject sourceObject, JSONObject paidSourceObject, JSONObject cwAmountObject, JSONObject paidCwAmountObject,
|
|
293
|
+ int count, int paidCount, BigDecimal amount, BigDecimal paidAmount) {
|
|
294
|
+ int cCount;
|
|
295
|
+ int wCount;
|
|
296
|
+ int nCount;
|
|
297
|
+ int paidCCount = 0;
|
|
298
|
+ int paidWCount = 0;
|
|
299
|
+ int paidNCount;
|
252
|
300
|
BigDecimal cAmount = new BigDecimal(0);
|
253
|
301
|
BigDecimal wAmount = new BigDecimal(0);
|
|
302
|
+ BigDecimal nAmount;
|
254
|
303
|
BigDecimal paidCAmount = new BigDecimal(0);
|
255
|
304
|
BigDecimal paidWAmount = new BigDecimal(0);
|
|
305
|
+ BigDecimal paidNAmount;
|
|
306
|
+ cmcContract.setProjectSource("1");
|
|
307
|
+ List<CmcContract> sourceList = cmcContractService.selectCmcContractList(cmcContract);
|
|
308
|
+ wCount = sourceList.size();
|
256
|
309
|
for (CmcContract contract : sourceList) {
|
257
|
310
|
if (contract.getAmount() != null)
|
258
|
311
|
wAmount = wAmount.add(contract.getAmount());
|
259
|
312
|
if (contract.getPaidAmount() != null) {
|
260
|
313
|
paidWAmount = paidWAmount.add(contract.getPaidAmount());
|
261
|
314
|
if (contract.getPaidAmount().compareTo(contract.getAmount()) >= 0)
|
262
|
|
- wCount ++;
|
|
315
|
+ paidWCount ++;
|
263
|
316
|
}
|
264
|
317
|
}
|
265
|
|
- sourceObject.put("院外项目", sourceList.size());
|
266
|
|
- paidSourceObject.put("已完成回款院外项目", wCount);
|
|
318
|
+ nCount = count - wCount;
|
|
319
|
+ paidNCount = paidCount - wCount;
|
|
320
|
+ nAmount = amount.subtract(wAmount);
|
|
321
|
+ paidNAmount = paidAmount.subtract(paidWAmount);
|
|
322
|
+ sourceObject.put("院外项目", wCount);
|
|
323
|
+ paidSourceObject.put("已完成回款院外项目", paidWCount);
|
267
|
324
|
cwAmountObject.put("院外项目承接金额", wAmount);
|
268
|
325
|
paidCwAmountObject.put("院外项目回款金额", paidWAmount);
|
269
|
326
|
cmcContract.setProjectSource("0");
|
270
|
327
|
sourceList = cmcContractService.selectCmcContractList(cmcContract);
|
|
328
|
+ cCount = sourceList.size();
|
271
|
329
|
for (CmcContract contract : sourceList) {
|
272
|
330
|
if (contract.getAmount() != null)
|
273
|
331
|
cAmount = cAmount.add(contract.getAmount());
|
274
|
332
|
if (contract.getPaidAmount() != null) {
|
275
|
333
|
paidCAmount = paidCAmount.add(contract.getPaidAmount());
|
276
|
334
|
if (contract.getPaidAmount().compareTo(contract.getAmount()) >= 0)
|
277
|
|
- cCount ++;
|
|
335
|
+ paidCCount ++;
|
278
|
336
|
}
|
279
|
337
|
}
|
280
|
|
- sourceObject.put("院内项目", sourceList.size());
|
281
|
|
- paidSourceObject.put("已完成回款院内项目", cCount);
|
|
338
|
+ nCount = nCount - cCount;
|
|
339
|
+ paidNCount = paidNCount - cCount;
|
|
340
|
+ nAmount = nAmount.subtract(cAmount);
|
|
341
|
+ paidNAmount = paidNAmount.subtract(paidCAmount);
|
|
342
|
+ sourceObject.put("院内项目", cCount);
|
|
343
|
+ paidSourceObject.put("已完成回款院内项目", paidCCount);
|
282
|
344
|
cwAmountObject.put("院内项目承接金额", cAmount);
|
283
|
345
|
paidCwAmountObject.put("院内项目回款金额", paidCAmount);
|
284
|
346
|
cmcContract.setProjectSource(null);
|
|
347
|
+ sourceObject.put("未关联项目", nCount);
|
|
348
|
+ paidSourceObject.put("已完成回款未关联项目", paidNCount);
|
|
349
|
+ cwAmountObject.put("未关联项目承接金额", nAmount);
|
|
350
|
+ paidCwAmountObject.put("未关联项目回款金额", paidNAmount);
|
|
351
|
+ }
|
|
352
|
+ /**
|
|
353
|
+ * 获取两个日期之间的所有月份 (年月)
|
|
354
|
+ *
|
|
355
|
+ * @param startTime
|
|
356
|
+ * @param endTime
|
|
357
|
+ * @return:YYYY-MM
|
|
358
|
+ */
|
|
359
|
+ public static List<String> getMonthBetweenDate(String startTime, String endTime){
|
|
360
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
361
|
+ // 声明保存日期集合
|
|
362
|
+ List<String> list = new ArrayList<String>();
|
|
363
|
+ try {
|
|
364
|
+ // 转化成日期类型
|
|
365
|
+ Date startDate = sdf.parse(startTime);
|
|
366
|
+ Date endDate = sdf.parse(endTime);
|
|
367
|
+
|
|
368
|
+ //用Calendar 进行日期比较判断
|
|
369
|
+ Calendar calendar = Calendar.getInstance();
|
|
370
|
+ while (startDate.getTime()<=endDate.getTime()){
|
|
371
|
+ // 把日期添加到集合
|
|
372
|
+ list.add(sdf.format(startDate));
|
|
373
|
+ // 设置日期
|
|
374
|
+ calendar.setTime(startDate);
|
|
375
|
+ //把日期增加一天
|
|
376
|
+ calendar.add(Calendar.MONTH, 1);
|
|
377
|
+ // 获取增加后的日期
|
|
378
|
+ startDate=calendar.getTime();
|
|
379
|
+ }
|
|
380
|
+ } catch (ParseException e) {
|
|
381
|
+ e.printStackTrace();
|
|
382
|
+ }
|
|
383
|
+ return list;
|
285
|
384
|
}
|
286
|
385
|
|
287
|
386
|
}
|