WorkClass.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. namespace bizHd\work\classes;
  3. use bizHd\goods\classes\CategoryClass;
  4. use bizHd\goods\classes\GoodsCategoryClass;
  5. use bizHd\goods\classes\GoodsClass;
  6. use bizHd\goods\classes\GoodsItemClass;
  7. use bizHd\order\classes\OrderGoodsClass;
  8. use common\components\imgUtil;
  9. use common\components\orderSn;
  10. use common\components\util;
  11. use bizHd\base\classes\BaseClass;
  12. class WorkClass extends BaseClass
  13. {
  14. public static $baseFile = '\bizHd\work\models\Work';
  15. const STATUS_UN_COMPLETE = 0;
  16. const STATUS_COMPLETE = 1;
  17. const STATUS_CANCEL = 2;
  18. public static function goodsCreateFinish($data)
  19. {
  20. $goods = $data['goods'] ?? '';
  21. $remark = $data['remark'] ?? '';
  22. $sjId = $data['sjId'] ?? 0;
  23. $shopId = $data['shopId'] ?? 0;
  24. $mainId = $data['mainId'] ?? 0;
  25. $ids = array_column($goods, 'productId');
  26. $info = GoodsClass::getByIds($ids, null, 'id');
  27. foreach ($goods as $key => $val) {
  28. $goodsId = $val['productId'] ?? 0;
  29. $name = $info[$goodsId]['name'] ?? '';
  30. $goodsSn = $info[$goodsId]['sn'] ?? '';
  31. $workNum = $val['num'] ?? 0;
  32. $cover = isset($info[$goodsId]['cover']) && !empty($info[$goodsId]['cover']) ? $info[$goodsId]['cover'] : 'hhb_small.png';
  33. $product = [];
  34. $goodsItem = GoodsItemClass::getAllByCondition(['goodsId' => $goodsId], null, '*');
  35. if (!empty($goodsItem)) {
  36. foreach ($goodsItem as $one) {
  37. $itemId = $one['itemId'] ?? 0;
  38. $unitType = $one['unitType'] ?? 0;
  39. $num = $one['num'] ?? 0;
  40. $product[] = [
  41. 'productId' => $itemId,
  42. 'num' => $num,
  43. 'unitType' => $unitType,
  44. ];
  45. }
  46. }
  47. $goodsCat = GoodsCategoryClass::getByCondition(['gId' => $goodsId], true);
  48. $catId = $goodsCat->cId ?? 0;
  49. $catName = '';
  50. if (!empty($catId)) {
  51. $cat = CategoryClass::getById($catId, true);
  52. $catName = $cat->categoryName ?? '';
  53. }
  54. $workSn = orderSn::getWorkSn();
  55. $flowerNum = $info[$goodsId]['flowerNum'] ?? 0;
  56. $orderSn = $data['orderSn'] ?? '';
  57. $orderId = $data['orderId'] ?? 0;
  58. $current = [
  59. 'name' => $name,
  60. 'num' => $workNum,
  61. 'cover' => $cover,
  62. 'remark' => $remark,
  63. 'catId' => $catId,
  64. 'catName' => $catName,
  65. 'product' => $product,
  66. 'goodsId' => $goodsId,
  67. 'goodsSn' => $goodsSn,
  68. 'sjId' => $sjId,
  69. 'shopId' => $shopId,
  70. 'mainId' => $mainId,
  71. 'workSn' => $workSn,
  72. 'flowerNum' => $flowerNum,
  73. 'orderSn' => $orderSn,
  74. 'orderId' => $orderId,
  75. ];
  76. return self::createFinish($current);
  77. }
  78. }
  79. public static function createFinish($data)
  80. {
  81. $data['flowerNum'] = isset($data['flowerNum']) && is_numeric($data['flowerNum']) ? $data['flowerNum'] : 0;
  82. $work = WorkClass::add($data, true);
  83. $product = $data['product'] ?? [];
  84. if (!empty($product)) {
  85. //修改用材
  86. WorkItemClass::modifyItem($work, $product);
  87. //锁定库存
  88. WorkItemClass::lock($work);
  89. }
  90. $complete = $data['complete'] ?? 0;
  91. if ($complete == 1) {
  92. //直接完成
  93. WorkClass::finish($work);
  94. }
  95. return $work;
  96. }
  97. //锁定工单 ssh 20220320
  98. public static function lock($work)
  99. {
  100. $work->stockLock = 1;
  101. $work->save();
  102. WorkItemClass::lock($work);
  103. }
  104. //取消工单
  105. public static function cancel($work)
  106. {
  107. if ($work->status == self::STATUS_COMPLETE) {
  108. util::fail('工单已完成');
  109. }
  110. if ($work->status == self::STATUS_CANCEL) {
  111. util::fail('工单已取消');
  112. }
  113. if (isset($work->orderSn) && !empty($work->orderSn)) {
  114. util::fail('此工单有订单,请通过订单取消');
  115. }
  116. //取消锁定,释放库存
  117. WorkItemClass::cancelLock($work);
  118. $work->status = self::STATUS_CANCEL;
  119. $work->save();
  120. }
  121. //完成工单 ssh 20220320
  122. public static function finish($work)
  123. {
  124. $work->status = self::STATUS_COMPLETE;
  125. $work->save();
  126. WorkItemClass::wastage($work);
  127. $num = $work->num ?? 0;
  128. $mainId = $work->mainId ?? 0;
  129. $workSn = $work->workSn ?? '';
  130. $workId = $work->id ?? 0;
  131. $sjId = $work->sjId ?? 0;
  132. $shopId = $work->shopId ?? 0;
  133. $goodsId = $work->goodsId ?? 0;
  134. $bigNum = $work->bigNum ?? 0;
  135. $smallNum = $work->smallNum ?? 0;
  136. $flowerNum = $work->flowerNum ?? 0;
  137. //没有商品生成商品
  138. if (empty($goodsId)) {
  139. $name = $work->name ?? '';
  140. $catId = $work->catId ?? 0;
  141. $cover = $work->cover ?? '';
  142. $shopImg = [$cover];
  143. $date = date("Y-m-d H:i:s");
  144. $goodsData = [
  145. 'shopImg' => $shopImg,
  146. 'mainId' => $mainId,
  147. 'cover' => $cover,
  148. 'name' => $name,
  149. 'content' => '',
  150. 'createTime' => $date,
  151. 'sjId' => $sjId,
  152. 'mainId' => $mainId,
  153. 'shopId' => $shopId,
  154. 'bigNum' => $bigNum,
  155. 'smallNum' => $smallNum,
  156. 'workId' => $workId,
  157. 'workSn' => $workSn,
  158. 'flower' => 1,
  159. 'flowerNum' => $flowerNum,
  160. ];
  161. if (!empty($catId)) {
  162. $goodsData['catIds'] = [$catId];
  163. }
  164. $goods = GoodsClass::addGoods($goodsData, $work);
  165. $goodsId = $goods->id ?? 0;
  166. $sn = $goods->sn ?? '';
  167. $work->goodsSn = $sn;
  168. $work->goodsId = $goodsId;
  169. $work->save();
  170. }
  171. //库存增加
  172. $staffName = $work->staffName ?? '';
  173. OrderGoodsClass::addGoodsStockByMakeGoods($workSn, $sjId, $shopId, $mainId, $goodsId, $num, $staffName);
  174. }
  175. //验证工单 ssh 20220319
  176. public static function valid($work, $mainId)
  177. {
  178. if (empty($work)) {
  179. util::fail('没有找到工单');
  180. }
  181. if (isset($work->mainId) == false || $work->mainId != $mainId) {
  182. util::fail('没有权限');
  183. }
  184. return true;
  185. }
  186. public static function getWorkList($where)
  187. {
  188. $data = self::getList('*', $where, 'addTime DESC');
  189. $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
  190. if (empty($list)) {
  191. return $data;
  192. }
  193. $data['list'] = self::groupBaseInfo($list);
  194. return $data;
  195. }
  196. public static function groupBaseInfo($list)
  197. {
  198. if (empty($list)) {
  199. return $list;
  200. }
  201. foreach ($list as $key => $val) {
  202. $shortCover = $val['cover'] ?? '';
  203. $cover = imgUtil::getPrefix() . 'hhb_small.png';
  204. $bigCover = imgUtil::getPrefix() . 'hhb_small.png';
  205. if (!empty($shortCover)) {
  206. $parse = parse_url(self::groupImg($shortCover));
  207. if (empty($parse['query'])) {
  208. $cover = self::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_110,w_110";
  209. } else {
  210. $cover = self::groupImg($shortCover);
  211. }
  212. $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
  213. }
  214. $list[$key]['cover'] = $cover;
  215. $list[$key]['bigCover'] = $bigCover;
  216. $list[$key]['shortCover'] = $shortCover;
  217. }
  218. return $list;
  219. }
  220. }