EngineerBillController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeadmin快速开发前后端分离管理后台(PHP版)
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | 开源版本可自由商用,可去除界面版权logo
  7. // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
  8. // | github下载:https://github.com/likeshop-github/likeadmin
  9. // | 访问官网:https://www.likeadmin.cn
  10. // | likeadmin团队 版权所有 拥有最终解释权
  11. // +----------------------------------------------------------------------
  12. // | author: likeadminTeam
  13. // +----------------------------------------------------------------------
  14. namespace app\adminapi\controller\master_worker;
  15. use app\adminapi\controller\BaseAdminController;
  16. use app\adminapi\lists\master_worker\EngineerBillLists;
  17. use think\facade\Db;
  18. /**
  19. * EngineerSettlement控制器
  20. * Class EngineerSettlementController
  21. * @package app\adminapi\controller
  22. */
  23. class EngineerBillController extends BaseAdminController
  24. {
  25. public array $notNeedLogin = ['download'];
  26. /**
  27. * @notes 获取列表
  28. * @return \think\response\Json
  29. * @author likeadmin
  30. * @date 2024/11/15 17:21
  31. */
  32. public function lists()
  33. {
  34. return $this->dataLists(new EngineerBillLists());
  35. }
  36. public function download()
  37. {
  38. $firstDay = date('Y-m-01 00:00:00', strtotime('first day of last month'));
  39. $lastDay = date('Y-m-t 23:59:59', strtotime('last day of last month'));
  40. $lists = Db::name('master_worker')->alias('a')->field([
  41. 'a.id','a.real_name','a.nickname','a.worker_number','e.account_holder','e.bank_name','e.opening_branch','e.account as bank_account',
  42. Db::raw("IFNULL(c.maxid,0) as maxid"),Db::raw("IFNULL(d.left_amount,0) as left_amount")
  43. ])
  44. ->leftJoin([Db::name('master_worker_account_log')
  45. ->where('create_time','between',[strtotime($firstDay),strtotime($lastDay)])
  46. ->field('worker_id as master_worker_id, max(id) as maxid')
  47. ->group('worker_id')
  48. ->buildSql() => 'c'], 'a.id = c.master_worker_id')
  49. ->leftJoin('master_worker_account_log d', 'c.maxid = d.id')
  50. ->leftJoin('bank_account e', 'a.id = e.worker_id')
  51. //->where('d.left_amount', '>', 0)
  52. ->select()->toArray();
  53. //$lists = $lists['lists'];
  54. header('Content-Type: text/csv; charset=utf-8');
  55. header('Content-Disposition: attachment; filename=engineer_settlement.csv');
  56. $output = fopen('php://output', 'w');
  57. fputcsv($output, array('工程师ID', '工程师编号', '工程师姓名', '工程师银行卡号', '工程师开户行及支行信息','上月最后结算余额'));
  58. foreach ($lists as $row) {
  59. fputcsv($output, array(
  60. $row['id'],
  61. $row['worker_number'],
  62. $row['nickname'],
  63. $row['bank_account'],
  64. $row['bank_name'].$row['opening_branch'],
  65. $row['left_amount']
  66. ));
  67. }
  68. fclose($output);
  69. }
  70. }