123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?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_money' => 0, 'expend_amount' => 0, 'expend_wxpay' => 0, 'expend_alipay' => 0, 'expend_money' => 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();
- $money = Db::table("data_income_{$month}")
- ->where('data_income_days', $currentDay)
- ->where('data_income_pay_type', 'MONEY')
- ->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']['money'] = $money->data_income_amount ?? 0.00;
- $statistics['income_money'] += $dayData['income']['money'];
- $dayData['income']['amount'] = $dayData['income']['wxpay'] + $dayData['income']['alipay'] + $dayData['income']['money'];
- $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();
- $extendMoney = Db::table("data_expend_{$month}")
- ->where('data_expend_days', $currentDay)
- ->where('data_expend_pay_type', 'MONEY')
- ->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']['money'] = $extendMoney->data_expend_amount ?? 0.00;
- $statistics['expend_money'] += $dayData['expend']['money'];
- $dayData['expend']['amount'] = $dayData['expend']['wxpay'] + $dayData['expend']['alipay'] + $dayData['expend']['money'];
- $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]);
- }
- }
|