StatCgClass.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace biz\stat\classes;
  3. use biz\base\classes\BaseClass;
  4. use biz\stat\models\StatCg;
  5. use common\components\util;
  6. class StatCgClass extends BaseClass
  7. {
  8. public static $baseFile = '\biz\stat\models\StatCg';
  9. //获取总和 ssh 20210829
  10. public static function getSum($where)
  11. {
  12. $amount = self::sum($where, 'amount');
  13. return empty($amount) ? 0 : $amount;
  14. }
  15. //采购统计 ssh 20210828
  16. public static function replace($main, $shop, $amount, $num = 0, $add = true)
  17. {
  18. $mainId = $shop->mainId ?? 0;
  19. $sjId = $shop->sjId ?? 0;
  20. $time = date('Ymd');
  21. $stat = self::getByCondition(['mainId' => $mainId, 'sjId' => $sjId, 'time' => $time], true);
  22. if (empty($stat)) {
  23. $stat = self::add(['mainId' => $mainId, 'sjId' => $sjId, 'time' => $time, 'num' => 0], true);
  24. }
  25. $id = $stat->id;
  26. $unique = self::getLockById($id);
  27. if (empty($unique)) {
  28. util::fail('没有记录');
  29. }
  30. if ($add) {
  31. $currentAmount = bcadd($unique->amount, $amount, 2);
  32. $unique->amount = $currentAmount;
  33. } else {
  34. $currentAmount = bcsub($unique->refundAmount, $amount, 2);
  35. $unique->refundAmount = $currentAmount;
  36. }
  37. $unique->totalAmount = $main->totalPurchase;
  38. $unique->num += $num;
  39. $unique->save();
  40. //当月
  41. StatCgMonthClass::replace($main, $shop, $amount, $num, $add);
  42. }
  43. //今日采购
  44. public static function getTodayCg($shop)
  45. {
  46. $start = date('Ymd');
  47. $end = date("Ymd");
  48. $shopId = $shop->id;
  49. $sjId = $shop->sjId;
  50. return self::getByTime($sjId, $shopId, $start, $end);
  51. }
  52. //昨日采购
  53. public static function getYesterdayCg($shop)
  54. {
  55. $start = date('Ymd', strtotime("-1 days"));
  56. $end = date('Ymd', strtotime("-1 days"));
  57. $shopId = $shop->id;
  58. $sjId = $shop->sjId;
  59. return self::getByTime($sjId, $shopId, $start, $end);
  60. }
  61. //7日采购
  62. public static function getSevenCg($shop)
  63. {
  64. $end = date('Ymd');
  65. $start = date('Ymd', strtotime("-6 days"));
  66. $shopId = $shop->id;
  67. $sjId = $shop->sjId;
  68. return self::getByTime($sjId, $shopId, $start, $end);
  69. }
  70. //30日采购
  71. public static function getThirtyCg($shop)
  72. {
  73. $end = date('Ymd');
  74. $start = date('Ymd', strtotime("-29 days"));
  75. $shopId = $shop->id;
  76. $sjId = $shop->sjId;
  77. return self::getByTime($sjId, $shopId, $start, $end);
  78. }
  79. public static function getByTime($sjId, $shopId, $start, $end)
  80. {
  81. $where = [];
  82. $where['sjId'] = $sjId;
  83. $where['shopId'] = $shopId;
  84. $where['time'] = ['between', [$start, $end]];
  85. $res = self::getAllByCondition($where, null, "num,amount");
  86. $num = 0;
  87. $amount = 0;
  88. if ($res) {
  89. foreach ($res as $v) {
  90. $num += $v['num'];
  91. $amount = bcadd($v['amount'], $amount, 2);
  92. }
  93. }
  94. return ['num' => $num, 'amount' => $amount];
  95. }
  96. }