stat.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\command;
  4. use think\console\Command;
  5. use think\console\Input;
  6. use think\console\Output;
  7. use think\facade\Cache;
  8. use think\facade\Db;
  9. class stat extends Command
  10. {
  11. protected function configure()
  12. { $this->setName('stat')
  13. ->setDescription('the good command');
  14. }
  15. protected function execute(Input $input, Output $output)
  16. {
  17. // 指令输出
  18. $sttime = Cache::get("departTips");
  19. if($sttime==1) return '';
  20. Cache::set("departTips",1,1800);
  21. $daprtid = [52,53,56,57];
  22. $companyNo='GS2203161855277894' ;
  23. $date=date("Y-m-d");
  24. $depart= Db::connect("mysql_sys")->name("company_item")->where(["id"=>$daprtid])->column("name","id");
  25. $company= Db::connect("mysql_sys")->name("company_info")->where(["companyNo"=>$companyNo])->column("company_name","companyNo");
  26. foreach ($depart as $itmeid=>$depart_name){
  27. $ist=Db::name("depart_everyday")->where(["depart_id"=>$itmeid,'companyNo'=>$companyNo,"day_time"=>$date])
  28. ->findOrEmpty();
  29. $uidArr =$this->getuid($itmeid);
  30. $sale=$this->GetData($uidArr,$companyNo,$date);
  31. $zy=$this->GetData($uidArr,$companyNo,$date,1);
  32. $channel=$this->GetData($uidArr,$companyNo,$date,2);
  33. if($ist){
  34. $ist['sale_total']=$sale['sale_total']??0;
  35. $ist['th_total']=$sale['th_total']??0;
  36. $ist['zy_sale_total']=$zy['sale_total']-$zy['th_total'];
  37. $ist['channel_sale_total']=$channel['sale_total']-$channel['th_total'];
  38. }else{
  39. $ist=[
  40. "depart_id"=>$itmeid,
  41. "depart_name"=>$depart_name,
  42. "day_time"=>date("Y-m-d"),
  43. "sale_total"=>$sale['sale_total']??0,
  44. "th_total"=>$sale['th_total']??0,
  45. "zy_sale_total"=>$zy['sale_total']-$zy['th_total'],
  46. "channel_sale_total"=>$channel['sale_total']-$channel['th_total'],
  47. "companyNo"=>$companyNo,
  48. "companyName"=>$company[$companyNo],
  49. ];
  50. }
  51. Db::name("depart_everyday")->save($ist);
  52. }
  53. $date=date('Y-m-d H:i:s');
  54. $output->writeln("[{$date}] 更新数据成功");
  55. }
  56. //各部门统计数据
  57. /**
  58. * @param $uid
  59. * @param $companyNo
  60. * @param $date
  61. * @return array
  62. */
  63. public function GetData($uid,$companyNo,$date,$type=0):array{
  64. $where=[];
  65. if($type==1) $where=["cxCode","=",''];
  66. if($type==2) $where=["cxCode","<>",''];
  67. $day_total =Db::name("qrd_info")->where([["ownerid","in",$uid],["is_del","=",0],['companyNo',"=",$companyNo]])
  68. ->whereDay("createdTime",$date)
  69. ->where($where)
  70. ->sum(Db::raw('totalPrice+th_fee'));
  71. $day_thtotal=Db::name("th_source")->alias("a")
  72. ->leftJoin("qrd_info b","a.th_qrdNo=b.sequenceNo or a.th_qrdNo=b.cxCode")
  73. ->where([["b.ownerid","in",$uid],['a.th_companyNo',"=",$companyNo]])
  74. ->where($where)
  75. ->whereDay("a.createtime",$date)->sum('a.th_qrd_fee');
  76. return ["sale_total"=>$day_total,"th_total"=>$day_thtotal];
  77. }
  78. /**
  79. * @param $depart_id
  80. * @return array|mixed
  81. */
  82. public function getuid($depart_id):array{
  83. $uidArr=Cache::get("Depart_Uid_Arr_$depart_id");
  84. if($uidArr==false){
  85. $uidArr = Db::connect("mysql_sys")->name("account_item")->where(["itemid"=>$depart_id])->column("account_id");
  86. Cache::set("Depart_Uid_Arr_$depart_id",$uidArr);
  87. }
  88. return $uidArr;
  89. }
  90. }