| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- <?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]);
 
-     }
 
- }
 
 
  |