|
@@ -0,0 +1,125 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\admin\controller\finance;
|
|
|
+
|
|
|
+use app\admin\service\sys_manage\DeptService;
|
|
|
+use app\common\Util;
|
|
|
+use app\model\Member;
|
|
|
+use support\Db;
|
|
|
+use support\Request;
|
|
|
+
|
|
|
+class IncomeAndExpendController
|
|
|
+{
|
|
|
+
|
|
|
+ public function list(Request $request)
|
|
|
+ {
|
|
|
+ $days = $request->get('days');
|
|
|
+ if (!empty($days)) {
|
|
|
+ $days[0] = strtotime($days[0]);
|
|
|
+ $days[1] = strtotime($days[1]);
|
|
|
+ if (date('m', $days[0]) != date('m', $days[1])) {
|
|
|
+ return json_fail('暂不支持跨月查询');
|
|
|
+ }
|
|
|
+
|
|
|
+ $month = date('Ym', $days[0]);
|
|
|
+ $days[1] = strtotime(date('Y-m-d', $days[1]) . " 23:59:59");
|
|
|
+ } else {
|
|
|
+ $month = date('Ym');
|
|
|
+ $days[0] = strtotime(date('Y-m').'-01');
|
|
|
+ $days[1] = time();
|
|
|
+ }
|
|
|
+ $premises = $request->get('premises', DeptService::getPremisesList());
|
|
|
+ // $premisesKeyValue = [];
|
|
|
+ // foreach($premises as $item){
|
|
|
+ // $premisesKeyValue[$item['key']] = $item['label'];
|
|
|
+ // }
|
|
|
+ $premisesKey = [];
|
|
|
+ foreach($premises as $item){
|
|
|
+ $premisesKey[] = $item['key'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $dayNum = ($days[1] - $days[0])/(60*60*24);
|
|
|
+ $currentDay = date('Y-m-d',$days[0]);
|
|
|
+ $data =[];
|
|
|
+ $statistics = ['income_amount'=>0,'income_wxpay'=>0,'income_alipay'=>0,'income_qrcode'=>0,'expend_amount'=>0,'expend_wxpay'=>0,'expend_alipay'=>0];
|
|
|
+ for($i=0;$i<=$dayNum;$i++){
|
|
|
+ $dayData = [];
|
|
|
+ $dayData['day'] = $currentDay;
|
|
|
+ // 收入
|
|
|
+ if(Util::schema()->hasTable("data_income_{$month}")){
|
|
|
+ $wxpay = Db::table("data_income_{$month}")
|
|
|
+ ->where('data_income_days',$currentDay)
|
|
|
+ ->where('data_income_pay_type','WXPAY')
|
|
|
+ ->whereIn('join_data_income_dept_id',$premisesKey)
|
|
|
+ ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
|
|
|
+ ->groupBy('data_income_pay_type')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $alipay = Db::table("data_income_{$month}")
|
|
|
+ ->where('data_income_days',$currentDay)
|
|
|
+ ->where('data_income_pay_type','ALIPAY')
|
|
|
+ ->whereIn('join_data_income_dept_id',$premisesKey)
|
|
|
+ ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
|
|
|
+ ->groupBy('data_income_pay_type')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $qrcode = Db::table("data_income_{$month}")
|
|
|
+ ->where('data_income_days',$currentDay)
|
|
|
+ ->where('data_income_pay_type','QRCODE')
|
|
|
+ ->whereIn('join_data_income_dept_id',$premisesKey)
|
|
|
+ ->selectRaw("data_income_pay_type,SUM(data_income_amount) as data_income_amount")
|
|
|
+ ->groupBy('data_income_pay_type')
|
|
|
+ ->first();
|
|
|
+ }
|
|
|
+
|
|
|
+ $dayData['income']['wxpay'] = $wxpay->data_income_amount ?? 0.00;
|
|
|
+ $statistics['income_wxpay'] += $dayData['income']['wxpay'];
|
|
|
+ $dayData['income']['alipay'] = $alipay->data_income_amount ?? 0.00;
|
|
|
+ $statistics['income_alipay'] += $dayData['income']['alipay'];
|
|
|
+ $dayData['income']['qrcode'] = $qrcode->data_income_amount ?? 0.00;
|
|
|
+ $statistics['income_qrcode'] += $dayData['income']['qrcode'];
|
|
|
+
|
|
|
+ $dayData['income']['amount'] = $dayData['income']['wxpay']+$dayData['income']['alipay']+$dayData['income']['qrcode'];
|
|
|
+
|
|
|
+ $statistics['income_amount'] += $dayData['income']['amount'];
|
|
|
+
|
|
|
+ // 支出
|
|
|
+ if(Util::schema()->hasTable("data_income_{$month}")){
|
|
|
+ $extendWxpay = Db::table("data_expend_{$month}")
|
|
|
+ ->where('data_expend_days',$currentDay)
|
|
|
+ ->where('data_expend_pay_type','WXPAY')
|
|
|
+ ->whereIn('join_data_expend_dept_id',$premisesKey)
|
|
|
+ ->selectRaw("data_expend_pay_type,SUM(data_expend_amount) as data_expend_amount")
|
|
|
+ ->groupBy('data_expend_pay_type')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $extendAlipay = Db::table("data_expend_{$month}")
|
|
|
+ ->where('data_expend_days',$currentDay)
|
|
|
+ ->where('data_expend_pay_type','ALIPAY')
|
|
|
+ ->whereIn('join_data_expend_dept_id',$premisesKey)
|
|
|
+ ->selectRaw("data_expend_pay_type,SUM(data_expend_amount) as data_expend_amount")
|
|
|
+ ->groupBy('data_expend_pay_type')
|
|
|
+ ->first();
|
|
|
+ }
|
|
|
+ $dayData['expend']['wxpay'] = $extendWxpay->data_expend_amount ?? 0.00;
|
|
|
+ $statistics['expend_wxpay'] += $dayData['expend']['wxpay'];
|
|
|
+ $dayData['expend']['alipay'] = $extendAlipay->data_expend_amount ?? 0.00;
|
|
|
+ $statistics['expend_alipay'] += $dayData['expend']['alipay'];
|
|
|
+ $dayData['expend']['amount'] = $dayData['expend']['wxpay']+$dayData['expend']['alipay'];
|
|
|
+
|
|
|
+ $statistics['expend_amount'] += $dayData['expend']['amount'];
|
|
|
+
|
|
|
+ // 当前日期+1
|
|
|
+ $currentDay = date('Y-m-d',strtotime("+1 days",strtotime($currentDay)));
|
|
|
+
|
|
|
+ // 没有数据,跳过
|
|
|
+ if($dayData['expend']['amount'] == 0 && $dayData['income']['amount'] == 0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data[] = $dayData;
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('',['rows'=>$data,'statistics'=>$statistics]);
|
|
|
+ }
|
|
|
+}
|