|
@@ -100,176 +100,95 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //3.1、乐团订单的统计
|
|
|
- List<OperatingReport> musicReports = sellOrderDao.getMusicGroupMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport musicReport : musicReports) {
|
|
|
- OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(musicReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(musicReport.getOrganId());
|
|
|
- }
|
|
|
-
|
|
|
- OperatingReport cooperationOperatingReport = new OperatingReport();
|
|
|
- if (cooperationOperating.containsKey(musicReport.getCooperationOrganId())) {
|
|
|
- cooperationOperatingReport = cooperationOperating.get(musicReport.getCooperationOrganId());
|
|
|
- }
|
|
|
- organOperatingReport.setOrganId(musicReport.getOrganId());
|
|
|
- cooperationOperatingReport.setOrganId(musicReport.getOrganId());
|
|
|
- cooperationOperatingReport.setCooperationOrganId(musicReport.getCooperationOrganId());
|
|
|
-
|
|
|
- if (musicReport.getSellAmount() == null) {
|
|
|
- musicReport.setSellAmount(BigDecimal.ZERO);
|
|
|
- musicReport.setSellCost(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- BigDecimal serviceAmount = musicReport.getIncomeTotal().subtract(musicReport.getSellAmount());
|
|
|
-
|
|
|
- organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
|
|
|
- organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(musicReport.getSellAmount()));
|
|
|
- organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(musicReport.getSellCost()));
|
|
|
- cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(serviceAmount));
|
|
|
- cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(musicReport.getSellAmount()));
|
|
|
- cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(musicReport.getSellCost()));
|
|
|
- organOperating.put(musicReport.getOrganId(), organOperatingReport);
|
|
|
- cooperationOperating.put(musicReport.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
- }
|
|
|
-
|
|
|
+ //3.1、乐团销售订单的统计
|
|
|
+ List<OperatingReport> reports = sellOrderDao.getMusicGroupMonthReport(startTime, endTime);
|
|
|
+ //乐团订单总收入的统计
|
|
|
+ reports.addAll(sellOrderDao.getMusicGroupIncome(startTime, endTime));
|
|
|
//3.2、VIP、网管课订单的统计(关联学生注册取一条记录)
|
|
|
- List<OperatingReport> VPReports = sellOrderDao.getMusicVipPracticeMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport vpReport : VPReports) {
|
|
|
- OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(vpReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(vpReport.getOrganId());
|
|
|
- }
|
|
|
-
|
|
|
- OperatingReport cooperationOperatingReport = new OperatingReport();
|
|
|
- if (vpReport.getCooperationOrganId() != null && cooperationOperating.containsKey(vpReport.getCooperationOrganId())) {
|
|
|
- cooperationOperatingReport = cooperationOperating.get(vpReport.getCooperationOrganId());
|
|
|
- }
|
|
|
- organOperatingReport.setOrganId(vpReport.getOrganId());
|
|
|
- cooperationOperatingReport.setOrganId(vpReport.getOrganId());
|
|
|
- cooperationOperatingReport.setCooperationOrganId(vpReport.getCooperationOrganId());
|
|
|
-
|
|
|
- organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(vpReport.getIncomeTotal()));
|
|
|
- cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(vpReport.getIncomeTotal()));
|
|
|
-
|
|
|
-
|
|
|
- organOperating.put(vpReport.getOrganId(), organOperatingReport);
|
|
|
-
|
|
|
- if (vpReport.getCooperationOrganId() != null) {
|
|
|
- cooperationOperating.put(vpReport.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //3.3、外部添加订单
|
|
|
- List<OperatingReport> outOrderReports = sellOrderDao.getOutOrderMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport outOrderReport : outOrderReports) {
|
|
|
- OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(outOrderReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(outOrderReport.getOrganId());
|
|
|
- }
|
|
|
-
|
|
|
- OperatingReport cooperationOperatingReport = new OperatingReport();
|
|
|
- if (cooperationOperating.containsKey(outOrderReport.getCooperationOrganId())) {
|
|
|
- cooperationOperatingReport = cooperationOperating.get(outOrderReport.getCooperationOrganId());
|
|
|
- }
|
|
|
-
|
|
|
- organOperatingReport.setOrganId(outOrderReport.getOrganId());
|
|
|
- cooperationOperatingReport.setOrganId(outOrderReport.getOrganId());
|
|
|
- cooperationOperatingReport.setCooperationOrganId(outOrderReport.getCooperationOrganId());
|
|
|
-
|
|
|
- if (outOrderReport.getSellAmount() == null) {
|
|
|
- outOrderReport.setSellAmount(BigDecimal.ZERO);
|
|
|
- outOrderReport.setSellCost(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- BigDecimal serviceAmount = outOrderReport.getIncomeTotal().subtract(outOrderReport.getSellAmount());
|
|
|
-
|
|
|
- organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
|
|
|
- organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(outOrderReport.getSellAmount()));
|
|
|
- organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(outOrderReport.getSellCost()));
|
|
|
- cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(serviceAmount));
|
|
|
- cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(outOrderReport.getSellAmount()));
|
|
|
- cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(outOrderReport.getSellCost()));
|
|
|
- organOperating.put(cooperationOperatingReport.getOrganId(), organOperatingReport);
|
|
|
- if (outOrderReport.getCooperationOrganId() != null) {
|
|
|
- cooperationOperating.put(cooperationOperatingReport.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ reports.addAll(sellOrderDao.getMusicVipPracticeMonthReport(startTime, endTime));
|
|
|
+ //3.3、外部添加订单销售
|
|
|
+ reports.addAll(sellOrderDao.getOutOrderMonthReport(startTime, endTime));
|
|
|
+ //外部添加订单销售总收入
|
|
|
+ reports.addAll(sellOrderDao.getOutOrderIncome(startTime, endTime));
|
|
|
//3.4、乐器维修、商品销售
|
|
|
- List<OperatingReport> repairGoodsSellReports = sellOrderDao.getRepairGoodsSellGroupMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport repairGoodsSellReport : repairGoodsSellReports) {
|
|
|
- OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(repairGoodsSellReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(repairGoodsSellReport.getOrganId());
|
|
|
- }
|
|
|
-
|
|
|
- organOperatingReport.setOrganId(repairGoodsSellReport.getOrganId());
|
|
|
-
|
|
|
- if (repairGoodsSellReport.getSellAmount() == null) {
|
|
|
- repairGoodsSellReport.setSellAmount(BigDecimal.ZERO);
|
|
|
- repairGoodsSellReport.setSellCost(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- BigDecimal serviceAmount = repairGoodsSellReport.getIncomeTotal().subtract(repairGoodsSellReport.getSellAmount());
|
|
|
-
|
|
|
- organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
|
|
|
- organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(repairGoodsSellReport.getSellAmount()));
|
|
|
- organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(repairGoodsSellReport.getSellCost()));
|
|
|
-
|
|
|
- organOperating.put(repairGoodsSellReport.getOrganId(), organOperatingReport);
|
|
|
- }
|
|
|
-
|
|
|
+ reports.addAll(sellOrderDao.getRepairGoodsSellGroupMonthReport(startTime, endTime));
|
|
|
//3.5、零星支付充值
|
|
|
- List<OperatingReport> rechargeReports = sellOrderDao.getRechargeMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport rechargeReport : rechargeReports) {
|
|
|
+ reports.addAll(sellOrderDao.getRechargeMonthReport(startTime, endTime));
|
|
|
+ //3.6、零星收费(不是充值部分的)
|
|
|
+ reports.addAll(sellOrderDao.getSporadicMonthReport(startTime, endTime));
|
|
|
+ updateFee(organOperating,cooperationOperating,reports);
|
|
|
+
|
|
|
+// Map<String, Object> params = new HashMap<>();
|
|
|
+// params.put("startTime", startTime);
|
|
|
+// params.put("endTime", endTime);
|
|
|
+// organOperating.forEach((organId, operatingReport) -> {
|
|
|
+// operatingReport.setMonth(startTime);
|
|
|
+// operatingReport.setCreateTime(nowDate);
|
|
|
+// updateReport(operatingReport, params);
|
|
|
+// });
|
|
|
+// cooperationOperating.forEach((organId, operatingReport) -> {
|
|
|
+// operatingReport.setMonth(startTime);
|
|
|
+// operatingReport.setCreateTime(nowDate);
|
|
|
+// updateReport(operatingReport, params);
|
|
|
+// });
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算总收入
|
|
|
+ *
|
|
|
+ * @param organOperating
|
|
|
+ * @param cooperationOperating
|
|
|
+ * @param reports
|
|
|
+ */
|
|
|
+ private void updateFee(Map<Integer, OperatingReport> organOperating, Map<Integer, OperatingReport> cooperationOperating, List<OperatingReport> reports) {
|
|
|
+ for (OperatingReport report : reports) {
|
|
|
OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(rechargeReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(rechargeReport.getOrganId());
|
|
|
+ if (organOperating.containsKey(report.getOrganId())) {
|
|
|
+ organOperatingReport = organOperating.get(report.getOrganId());
|
|
|
}
|
|
|
|
|
|
OperatingReport cooperationOperatingReport = new OperatingReport();
|
|
|
- if (rechargeReport.getCooperationOrganId() != null && cooperationOperating.containsKey(rechargeReport.getCooperationOrganId())) {
|
|
|
- cooperationOperatingReport = cooperationOperating.get(rechargeReport.getCooperationOrganId());
|
|
|
+ if (report.getCooperationOrganId() != null && cooperationOperating.containsKey(report.getCooperationOrganId())) {
|
|
|
+ cooperationOperatingReport = cooperationOperating.get(report.getCooperationOrganId());
|
|
|
}
|
|
|
- organOperatingReport.setOrganId(rechargeReport.getOrganId());
|
|
|
- cooperationOperatingReport.setOrganId(rechargeReport.getOrganId());
|
|
|
- cooperationOperatingReport.setCooperationOrganId(rechargeReport.getCooperationOrganId());
|
|
|
-
|
|
|
- organOperatingReport.setOtherIncome(organOperatingReport.getOtherIncome().add(rechargeReport.getIncomeTotal()));
|
|
|
- cooperationOperatingReport.setOtherIncome(cooperationOperatingReport.getIncomeTotal().add(rechargeReport.getIncomeTotal()));
|
|
|
-
|
|
|
- organOperating.put(rechargeReport.getOrganId(), organOperatingReport);
|
|
|
+ organOperatingReport.setOrganId(report.getOrganId());
|
|
|
+ cooperationOperatingReport.setOrganId(report.getOrganId());
|
|
|
+ cooperationOperatingReport.setCooperationOrganId(report.getCooperationOrganId());
|
|
|
|
|
|
- if (rechargeReport.getCooperationOrganId() != null) {
|
|
|
- cooperationOperating.put(rechargeReport.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
+ if (report.getSellAmount() == null) {
|
|
|
+ report.setSellAmount(BigDecimal.ZERO);
|
|
|
+ report.setSellCost(BigDecimal.ZERO);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- //3.6、零星收费(不是充值部分的)
|
|
|
- List<OperatingReport> sporadicReports = sellOrderDao.getSporadicMonthReport(startTime, endTime);
|
|
|
- for (OperatingReport sporadicReport : sporadicReports) {
|
|
|
- OperatingReport organOperatingReport = new OperatingReport();
|
|
|
- if (organOperating.containsKey(sporadicReport.getOrganId())) {
|
|
|
- organOperatingReport = organOperating.get(sporadicReport.getOrganId());
|
|
|
+ if (report.getIncomeTotal() == null) {
|
|
|
+ report.setIncomeTotal(BigDecimal.ZERO);
|
|
|
}
|
|
|
-
|
|
|
- OperatingReport cooperationOperatingReport = new OperatingReport();
|
|
|
- if (sporadicReport.getCooperationOrganId() != null && cooperationOperating.containsKey(sporadicReport.getCooperationOrganId())) {
|
|
|
- cooperationOperatingReport = cooperationOperating.get(sporadicReport.getCooperationOrganId());
|
|
|
+ if (report.getOtherIncome() == null) {
|
|
|
+ report.setOtherIncome(BigDecimal.ZERO);
|
|
|
}
|
|
|
- organOperatingReport.setOrganId(sporadicReport.getOrganId());
|
|
|
- cooperationOperatingReport.setOrganId(sporadicReport.getOrganId());
|
|
|
- cooperationOperatingReport.setCooperationOrganId(sporadicReport.getCooperationOrganId());
|
|
|
|
|
|
- organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(sporadicReport.getIncomeTotal()));
|
|
|
- cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(sporadicReport.getIncomeTotal()));
|
|
|
+ //总收入
|
|
|
+ organOperatingReport.setIncomeTotal(organOperatingReport.getIncomeTotal().add(report.getIncomeTotal()));
|
|
|
+ cooperationOperatingReport.setIncomeTotal(cooperationOperatingReport.getIncomeTotal().add(report.getIncomeTotal()));
|
|
|
|
|
|
+ //销售收入
|
|
|
+ organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(report.getSellAmount()));
|
|
|
+ organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(report.getSellCost()));
|
|
|
+ cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(report.getSellAmount()));
|
|
|
+ cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(report.getSellCost()));
|
|
|
|
|
|
- organOperating.put(sporadicReport.getOrganId(), organOperatingReport);
|
|
|
+ //其他收入
|
|
|
+ organOperatingReport.setOtherIncome(organOperatingReport.getOtherIncome().add(report.getOtherIncome()));
|
|
|
+ cooperationOperatingReport.setOtherIncome(cooperationOperatingReport.getOtherIncome().add(report.getOtherIncome()));
|
|
|
|
|
|
- if (sporadicReport.getCooperationOrganId() != null) {
|
|
|
- cooperationOperating.put(sporadicReport.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
+ organOperating.put(report.getOrganId(), organOperatingReport);
|
|
|
+ if (report.getCooperationOrganId() != null) {
|
|
|
+ cooperationOperating.put(report.getCooperationOrganId(), cooperationOperatingReport);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ Date nowDate = new Date();
|
|
|
+ Date startTime = DateUtil.getFirstDayOfMonth(DateUtil.addDays1(nowDate, -1));
|
|
|
+ Date endTime = DateUtil.getLastDayOfMonth(startTime);
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("startTime", startTime);
|
|
|
params.put("endTime", endTime);
|
|
@@ -283,12 +202,13 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
|
|
|
operatingReport.setCreateTime(nowDate);
|
|
|
updateReport(operatingReport, params);
|
|
|
});
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
private void updateReport(OperatingReport operatingReport, Map<String, Object> params) {
|
|
|
//收入合计:销售收入+服务收入-业务退费
|
|
|
- BigDecimal incomeTotal = operatingReport.getSellAmount().add(operatingReport.getServiceAmount()).add(operatingReport.getOtherIncome()).subtract(operatingReport.getRefundAmount());
|
|
|
+ BigDecimal serviceTotal = operatingReport.getIncomeTotal().subtract(operatingReport.getSellAmount()).subtract(operatingReport.getOtherIncome());
|
|
|
+ operatingReport.setServiceAmount(serviceTotal);
|
|
|
+ BigDecimal incomeTotal = operatingReport.getIncomeTotal().subtract(operatingReport.getRefundAmount());
|
|
|
operatingReport.setIncomeTotal(incomeTotal);
|
|
|
//成本费用合计:销售成本+固定支出+变动支出+分摊费用
|
|
|
BigDecimal costAmount = operatingReport.getSellCost().add(operatingReport.getExpensesAmount()).add(operatingReport.getVariableCost()).add(operatingReport.getDistributionAmount());
|
|
@@ -297,9 +217,11 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
|
|
|
operatingReport.setProfit(incomeTotal.subtract(costAmount));
|
|
|
params.put("organId", operatingReport.getOrganId());
|
|
|
params.put("cooperationOrganId", operatingReport.getCooperationOrganId());
|
|
|
- if (operatingReportDao.getReport(params) == null) {
|
|
|
+ OperatingReport hasReport = operatingReportDao.getReport(params);
|
|
|
+ if (hasReport == null) {
|
|
|
operatingReportDao.insert(operatingReport);
|
|
|
} else {
|
|
|
+ operatingReport.setId(hasReport.getId());
|
|
|
operatingReportDao.update(operatingReport);
|
|
|
}
|
|
|
}
|