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