StatKindController.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\admin\classes\ShopAdminClass;
  4. use bizHd\goods\classes\KindClass;
  5. use bizHd\goods\classes\PlantCgClass;
  6. use bizHd\goods\classes\PlantCgItemClass;
  7. use bizHd\item\classes\ItemClass;
  8. use bizHd\order\classes\OrderClass;
  9. use bizHd\order\classes\OrderGoodsClass;
  10. use bizHd\part\classes\PartClass;
  11. use bizHd\part\classes\PartItemClass;
  12. use bizHd\work\classes\WorkClass;
  13. use common\components\dateUtil;
  14. use Yii;
  15. use common\components\util;
  16. class StatKindController extends BaseController
  17. {
  18. //包花数量统计 ssh 20230320
  19. public function actionStatMake()
  20. {
  21. $get = Yii::$app->request->get();
  22. $searchTime = isset($get['searchTime']) && !empty($get['searchTime']) ? $get['searchTime'] : 'today';
  23. $startTime = $get['startTime'] ?? '';
  24. $endTime = $get['endTime'] ?? '';
  25. $period = dateUtil::formatTime($searchTime, $startTime, $endTime, true);
  26. $start = $period['startTime'];
  27. $end = $period['endTime'];
  28. $currentStartDate = date('Y-m-d', strtotime($start));
  29. $currentEndDate = date('Y-m-d', strtotime($end));
  30. $currentStartTime = $currentStartDate . ' 00:00:00';
  31. $currentEndTime = $currentEndDate . ' 23:59:59';
  32. $mainId = $this->mainId;
  33. $staffList = ShopAdminClass::getAllByCondition(['mainId' => $mainId], null, '*', 'id');
  34. $makeStat = [];
  35. $where = ['mainId' => $mainId, 'status' => 1];
  36. $where['finishTime'] = ['between', [$currentStartTime, $currentEndTime]];
  37. $workList = WorkClass::getAllByCondition($where, null, '*', null, true);
  38. if (!empty($workList)) {
  39. foreach ($workList as $work) {
  40. $kindId = $work->kindId ?? 0;
  41. if (empty($kindId)) {
  42. continue;
  43. }
  44. $staffId = $work->finishStaffId ?? 0;
  45. $num = $work->num ?? 0;
  46. $flowerNum = $work->flowerNum ?? 0;
  47. $staffName = $staffList[$staffId]['name'] ?? '';
  48. if (isset($makeStat[$flowerNum][$staffId]['num'])) {
  49. $makeStat[$flowerNum][$staffId]['num'] = bcadd($makeStat[$flowerNum][$staffId]['num'], $num);
  50. } else {
  51. $makeStat[$flowerNum][$staffId]['num'] = $num;
  52. $makeStat[$flowerNum][$staffId]['name'] = $staffName;
  53. }
  54. }
  55. }
  56. util::success(['makeStat' => $makeStat]);
  57. }
  58. //花束相关统计 ssh 20230320
  59. public function actionProfile()
  60. {
  61. $get = Yii::$app->request->get();
  62. $searchTime = isset($get['searchTime']) && !empty($get['searchTime']) ? $get['searchTime'] : 'today';
  63. $startTime = $get['startTime'] ?? '';
  64. $endTime = $get['endTime'] ?? '';
  65. $period = dateUtil::formatTime($searchTime, $startTime, $endTime, true);
  66. $start = $period['startTime'];
  67. $end = $period['endTime'];
  68. $currentStartDate = date('Y-m-d', strtotime($start));
  69. $currentEndDate = date('Y-m-d', strtotime($end));
  70. $currentStartTime = $currentStartDate . ' 00:00:00';
  71. $currentEndTime = $currentEndDate . ' 23:59:59';
  72. $mainId = $this->mainId;
  73. $kindList = KindClass::getAllByCondition(['mainId' => $mainId, 'flower' => 1], null, '*', 'id');
  74. $kindStat = [];
  75. $workTotalUseSmallNum = 0;
  76. $where = ['mainId' => $mainId, 'status' => 1];
  77. $where['finishTime'] = ['between', [$currentStartTime, $currentEndTime]];
  78. $workList = WorkClass::getAllByCondition($where, null, '*', null, true);
  79. if (!empty($workList)) {
  80. foreach ($workList as $work) {
  81. $kindId = $work->kindId ?? 0;
  82. if (empty($kindId)) {
  83. continue;
  84. }
  85. $kindName = $kindList[$kindId]['name'] ?? '';
  86. $num = $work->num ?? 0;
  87. $smallNumber = $work->flowerNum ?? 0;
  88. $totalMakeSmallNum = bcmul($smallNumber, $num);
  89. $workTotalUseSmallNum = bcadd($workTotalUseSmallNum, $totalMakeSmallNum);
  90. if (isset($kindStat[$kindId]['makeNum'])) {
  91. $kindStat[$kindId]['makeNum'] = bcadd($kindStat[$kindId]['makeNum'], $num);
  92. $kindStat[$kindId]['makeSmallNum'] = bcadd($totalMakeSmallNum, $kindStat[$kindId]['makeSmallNum']);
  93. } else {
  94. $kindStat[$kindId]['makeNum'] = $num;
  95. $kindStat[$kindId]['makeSmallNum'] = $totalMakeSmallNum;
  96. $kindStat[$kindId]['kindName'] = $kindName;
  97. if (isset($kindStat[$kindId]['saleNum']) == false) {
  98. $kindStat[$kindId]['saleNum'] = 0;
  99. }
  100. }
  101. }
  102. }
  103. $where = ['mainId' => $mainId, 'payStatus' => 1, 'payTime' => ['between', [$currentStartTime, $currentEndTime]]];
  104. $orderList = OrderClass::getAllByCondition($where, null, '*', null, true);
  105. if (!empty($orderList)) {
  106. foreach ($orderList as $order) {
  107. $orderSn = $order->orderSn ?? '';
  108. $sonList = OrderGoodsClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  109. if (!empty($sonList)) {
  110. foreach ($sonList as $son) {
  111. $flower = $son->flower ?? 0;
  112. if ($flower == 0) {
  113. continue;
  114. }
  115. $kindId = $son->kindId ?? 0;
  116. if (empty($kindId)) {
  117. continue;
  118. }
  119. $num = $son->num ?? 0;
  120. $kindName = $kindList[$kindId]['name'] ?? '';
  121. if (isset($kindStat[$kindId]['saleNum'])) {
  122. $kindStat[$kindId]['saleNum'] = bcadd($kindStat[$kindId]['saleNum'], $num);
  123. } else {
  124. $kindStat[$kindId]['saleNum'] = $num;
  125. $kindStat[$kindId]['kindName'] = $kindName;
  126. if (isset($kindStat[$kindId]['makeNum']) == false) {
  127. $kindStat[$kindId]['makeNum'] = 0;
  128. $kindStat[$kindId]['makeSmallNum'] = 0;
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }
  135. $itemList = ItemClass::getAllByCondition(['mainId' => $mainId, 'delStatus' => 0], null, 'id,name,mainId,delStatus,ratio', 'id');
  136. $partStat = [];
  137. $partTotalSmallNum = 0;
  138. $partTotalNum = 0;
  139. $partList = PartClass::getAllByCondition(['mainId' => $mainId, 'addTime' => ['between', [$currentStartTime, $currentEndTime]]], null, '*', null, true);
  140. if (!empty($partList)) {
  141. foreach ($partList as $part) {
  142. $orderSn = $part->orderSn ?? '';
  143. $partItemList = PartItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  144. if (!empty($partItemList)) {
  145. foreach ($partItemList as $pItem) {
  146. $productId = $pItem->productId ?? 0;
  147. $ratio = $itemList[$productId]['ratio'] ?? 10;
  148. $ratioType = $itemList[$productId]['ratioType'] ?? 0;
  149. if ($ratioType == 1) {
  150. continue;
  151. }
  152. $name = $itemList[$productId]['name'] ?? '';
  153. $num = $pItem->itemNum ?? 0;
  154. $num = floatval($num);
  155. $partTotalNum = bcadd($partTotalNum, $num);
  156. $smallNum = bcmul($ratio, $num);
  157. $partTotalSmallNum = bcadd($partTotalSmallNum, $smallNum);
  158. if (isset($partStat[$productId]['num'])) {
  159. $partStat[$productId]['num'] = bcadd($partStat[$productId]['num'], $num);
  160. $partStat[$productId]['smallNum'] = bcadd($partStat[$productId]['smallNum'], $smallNum);
  161. } else {
  162. $partStat[$productId]['num'] = $num;
  163. $partStat[$productId]['smallNum'] = $smallNum;
  164. $partStat[$productId]['name'] = $name;
  165. }
  166. }
  167. }
  168. }
  169. }
  170. util::success(['kindStat' => $kindStat, 'partStat' => $partStat, 'workTotalUseSmallNum' => $workTotalUseSmallNum, 'partTotalSmallNum' => $partTotalSmallNum, 'partTotalNum' => $partTotalNum]);
  171. }
  172. //绿植相关的统计 ssh 20230320
  173. public function actionLzProfile()
  174. {
  175. $get = Yii::$app->request->get();
  176. $searchTime = isset($get['searchTime']) && !empty($get['searchTime']) ? $get['searchTime'] : 'today';
  177. $startTime = $get['startTime'] ?? '';
  178. $endTime = $get['endTime'] ?? '';
  179. $period = dateUtil::formatTime($searchTime, $startTime, $endTime, true);
  180. $start = $period['startTime'];
  181. $end = $period['endTime'];
  182. $currentStartDate = date('Y-m-d', strtotime($start));
  183. $currentEndDate = date('Y-m-d', strtotime($end));
  184. $currentStartTime = $currentStartDate . ' 00:00:00';
  185. $currentEndTime = $currentEndDate . ' 23:59:59';
  186. $mainId = $this->mainId;
  187. $kindList = KindClass::getAllByCondition(['mainId' => $mainId, 'flower' => 0], null, '*', 'id');
  188. $kindStat = [];
  189. $cgTotalNum = 0;
  190. $saleTotalNum = 0;
  191. $where = ['mainId' => $mainId, 'status' => 3];
  192. $where['entryTime'] = ['between', [$currentStartTime, $currentEndTime]];
  193. $lzList = PlantCgClass::getAllByCondition($where, null, '*', null, true);
  194. if (!empty($lzList)) {
  195. foreach ($lzList as $lz) {
  196. $orderSn = $lz->orderSn ?? '';
  197. $lzItemList = PlantCgItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  198. if (!empty($lzItemList)) {
  199. foreach ($lzItemList as $lzItem) {
  200. $kindId = $lzItem->kindId ?? 0;
  201. if (empty($kindId)) {
  202. continue;
  203. }
  204. $num = $lzItem->num ?? 0;
  205. $cgTotalNum = bcadd($cgTotalNum, $num);
  206. $kindName = $kindList[$kindId]['name'] ?? '';
  207. if (isset($kindStat[$kindId]['cgNum'])) {
  208. $kindStat[$kindId]['cgNum'] = bcadd($kindStat[$kindId]['cgNum'], $num);
  209. } else {
  210. $kindStat[$kindId]['cgNum'] = $num;
  211. $kindStat[$kindId]['kindName'] = $kindName;
  212. if (isset($kindStat[$kindId]['saleNum']) == false) {
  213. $kindStat[$kindId]['saleNum'] = 0;
  214. }
  215. }
  216. }
  217. }
  218. }
  219. }
  220. $where = ['mainId' => $mainId, 'payStatus' => 1, 'payTime' => ['between', [$currentStartTime, $currentEndTime]]];
  221. $orderList = OrderClass::getAllByCondition($where, null, '*', null, true);
  222. if (!empty($orderList)) {
  223. foreach ($orderList as $order) {
  224. $orderSn = $order->orderSn ?? '';
  225. $sonList = OrderGoodsClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  226. if (!empty($sonList)) {
  227. foreach ($sonList as $son) {
  228. $flower = $son->flower ?? 0;
  229. if ($flower == 1) {
  230. continue;
  231. }
  232. $kindId = $son->kindId ?? 0;
  233. if (empty($kindId)) {
  234. continue;
  235. }
  236. $num = $son->num ?? 0;
  237. $saleTotalNum = bcadd($saleTotalNum, $num);
  238. $kindName = $kindList[$kindId]['name'] ?? '';
  239. if (isset($kindStat[$kindId]['saleNum'])) {
  240. $kindStat[$kindId]['saleNum'] = bcadd($kindStat[$kindId]['saleNum'], $num);
  241. } else {
  242. $kindStat[$kindId]['saleNum'] = $num;
  243. $kindStat[$kindId]['kindName'] = $kindName;
  244. if (isset($kindStat[$kindId]['cgNum']) == false) {
  245. $kindStat[$kindId]['cgNum'] = 0;
  246. }
  247. }
  248. }
  249. }
  250. }
  251. }
  252. util::success(['kindStat' => $kindStat, 'saleTotalNum' => $saleTotalNum, 'cgTotalNum' => $cgTotalNum]);
  253. }
  254. }