WaterQueryController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. namespace app\api\controller\water;
  3. use app\admin\model\water\WaterMaterialScience;
  4. use app\Request;
  5. use crmeb\services\GroupDataService;
  6. use crmeb\services\QrcodeService;
  7. use crmeb\services\UtilService;
  8. /**
  9. * 秒杀产品类
  10. * Class StoreSeckillController
  11. * @package app\api\controller\activity
  12. */
  13. class WaterQueryController
  14. {
  15. public function calculation(Request $request)
  16. {
  17. $data = UtilService::postMore([
  18. ['long', ''],// 长
  19. ['wide', ''],// 宽
  20. ['high', ''],// 高
  21. ['is_warm', ''], // 是否保温
  22. ['is_channel', ''], // 是否需要槽钢
  23. ['is_human_ladder', ''] ,// 是否需要人梯
  24. ['is_gc', ''] ,// 公差
  25. ['floor', ''], // 底板厚度
  26. ['side_plate', ''], // 侧板厚度
  27. ['roof', ''], // 顶板厚度
  28. ['column', ''], // 立柱厚度
  29. ['lacing', ''], // 拉筋厚度
  30. ['fula', ''], // 辅拉
  31. ]);
  32. //顶板
  33. if ($data['is_gc'] > 0){
  34. $where[] = ['is_gc', '=' ,1];
  35. }else{
  36. $where[] = ['is_gc', '=' ,0];
  37. }
  38. $long = (double)$data['long'];
  39. $wide = (double)$data['wide'];
  40. $high = (double)$data['high'];
  41. $high_array = []; // 高度数组
  42. $roof_number = []; // 顶板数量
  43. $floor_number = []; // 底板数量
  44. $side_number = []; // 侧板数量
  45. $lacing_number = []; // 拉经数量
  46. $fula_number = [];//辅拉数量
  47. $warm = []; //保温数量
  48. $channel_number = 0;
  49. for ($i = 0; $i < intval($high); $i++){
  50. $high_array[] = 1;
  51. }
  52. if (intval($high) != $high){
  53. $high_array = array_merge($high_array, [0.5]);
  54. }
  55. if (ceil($long) == $long && ceil($wide) == $wide && ceil($high) == $high){
  56. //都为整数
  57. $roof_number = ['1*1' => $long * $wide]; // 顶板数量
  58. $floor_number = ['1*1' => $long * $wide];// 底板数量
  59. foreach ($high_array as $item){
  60. $side_number[] = ['1*1' => (($item * $long) + ($item * $wide)) * 2];
  61. }
  62. }elseif (ceil($long) != $long && ceil($wide) != $wide && ceil($high) != $high){
  63. //都不为整数
  64. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1]; // 顶板数量
  65. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1];// 底板数量
  66. foreach ($high_array as $item){
  67. if ($item >= 1){
  68. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 4];
  69. }else{
  70. $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 4];
  71. }
  72. }
  73. }elseif (ceil($long) != $long || ceil($wide) != $wide || ceil($high) != $high){
  74. //一个整数
  75. if (ceil($long) != $long && ceil($wide) == $wide && ceil($high) == $high){
  76. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide]; // 顶板数量
  77. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide];// 底板数量
  78. foreach ($high_array as $item){
  79. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
  80. }
  81. }elseif (ceil($long) == $long && ceil($wide) != $wide and ceil($high) == $high){
  82. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long]; // 顶板数量
  83. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long];// 底板数量
  84. foreach ($high_array as $item){
  85. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
  86. }
  87. }elseif (ceil($long) != $long && ceil($wide) != $wide and ceil($high) == $high){
  88. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1]; // 顶板数量
  89. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1];// 底板数量
  90. foreach ($high_array as $item){
  91. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 4];
  92. }
  93. } elseif (ceil($long) != $long && ceil($wide) == $wide and ceil($high) != $high){
  94. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide]; // 顶板数量
  95. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide];// 底板数量
  96. foreach ($high_array as $item){
  97. if ($item >= 1){
  98. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
  99. }else{
  100. $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 2];
  101. }
  102. }
  103. }elseif (ceil($long) == $long && ceil($wide) != $wide and ceil($high) != $high){
  104. $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long]; // 顶板数量
  105. $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long];// 底板数量
  106. foreach ($high_array as $item){
  107. if ($item >= 1){
  108. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
  109. }else{
  110. $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 2];
  111. }
  112. }
  113. }elseif (ceil($long) == $long && ceil($wide) == $wide and ceil($high) != $high){
  114. $roof_number = ['1*1' => $long * $wide]; // 顶板数量
  115. $floor_number = ['1*1' => $long * $wide];// 底板数量
  116. foreach ($high_array as $item){
  117. if ($item >= 1){
  118. $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2];
  119. }else{
  120. $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2];
  121. }
  122. }
  123. }
  124. }
  125. array_pop($high_array);// 删除最后一位,算出主拉层数
  126. // 拉筋
  127. foreach ($high_array as $item){
  128. $lacing_number[] = ceil(((ceil($long) * (ceil($wide) - 1)) + (ceil($wide) * (ceil($long) - 1)))/2);
  129. }
  130. // 辅拉
  131. if ($high > 1){
  132. if ($high == 1.5){
  133. $fula_number = [2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1];
  134. }elseif ($high == 2){
  135. $fula_number = [3 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1];
  136. }elseif ($high == 2.5){
  137. $fula_number = [
  138. 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
  139. 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
  140. ];
  141. }elseif ($high == 3){
  142. $fula_number = [
  143. 3 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
  144. 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
  145. ];
  146. }elseif ($high >= 3.5){
  147. foreach ($high_array as $item){
  148. $fula_number[] = 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1;
  149. }
  150. }
  151. }
  152. $warm1 = 0;// 1*1 数量
  153. $warm2 = 0;// 1*0.5数量
  154. $warm3 = 0;// 0.5*0.5数量
  155. if ($data['is_warm'] > 0){
  156. foreach ($side_number as $item){
  157. // 侧板
  158. foreach ($item as $key => $value){
  159. if ($key == '1*1'){
  160. $warm1 += $value;
  161. }elseif ($key == '1*0.5'){
  162. $warm2 += $value;
  163. }elseif ($key == '0.5*0.5'){
  164. $warm3 += $value;
  165. }
  166. }
  167. }
  168. foreach ($floor_number as $key => $value){
  169. // 顶板
  170. if ($key == '1*1'){
  171. $warm1 += $value;
  172. }elseif ($key == '1*0.5'){
  173. $warm2 += $value;
  174. }elseif ($key == '0.5*0.5'){
  175. $warm3 += $value;
  176. }
  177. }
  178. }
  179. if ($data['is_channel'] > 0){
  180. if (ceil($long) == $long && ceil($wide) == $wide && ceil($high) == $high){
  181. //都为整数
  182. $channel_number = $long * ($wide * 2 + 1) + $wide * 2;
  183. }elseif (ceil($long) != $long || ceil($wide) || $wide && ceil($high) || $high){
  184. //不为整数
  185. $channel_number = $long * (ceil($wide) * 2 + 1) + $wide * 2;
  186. }
  187. }
  188. halt($channel_number);
  189. }
  190. /**
  191. * 材料列表
  192. * @return mixed
  193. * @throws \think\db\exception\DataNotFoundException
  194. * @throws \think\db\exception\DbException
  195. * @throws \think\db\exception\ModelNotFoundException
  196. */
  197. public function list()
  198. {
  199. $data = UtilService::getMore(['is_gc']);
  200. $list = [];
  201. if ($data['is_gc'] > 0){
  202. $where[] = ['is_gc', '=' ,1];
  203. }else{
  204. $where[] = ['is_gc', '=' ,0];
  205. }
  206. $list['warm'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 7)->where($where)->select(); // 保温
  207. $list['channel'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 8)->where($where)->select(); // 槽钢
  208. $list['roof'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 1)->where($where)->select();// 顶板
  209. $list['side_plate'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 2)->where($where)->select();// 侧板
  210. $list['lacing'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 3)->where($where)->select();// 拉筋
  211. $list['floor'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 4)->where($where)->select(); // 底板
  212. $list['column'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 5)->where($where)->select(); // 立柱
  213. $list['fula'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 6)->where($where)->select(); // 辅拉
  214. return app('json')->success($list);
  215. }
  216. }