| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- namespace app\api\controller\water;
- use app\admin\model\water\WaterMaterialScience;
- use app\Request;
- use crmeb\services\GroupDataService;
- use crmeb\services\QrcodeService;
- use crmeb\services\UtilService;
- /**
- * 秒杀产品类
- * Class StoreSeckillController
- * @package app\api\controller\activity
- */
- class WaterQueryController
- {
- public function calculation(Request $request)
- {
- $data = UtilService::postMore([
- ['long', ''],// 长
- ['wide', ''],// 宽
- ['high', ''],// 高
- ['is_warm', ''], // 是否保温
- ['is_channel', ''], // 是否需要槽钢
- ['is_human_ladder', ''] ,// 是否需要人梯
- ['is_gc', ''] ,// 公差
- ['floor', ''], // 底板厚度
- ['side_plate', ''], // 侧板厚度
- ['roof', ''], // 顶板厚度
- ['column', ''], // 立柱厚度
- ['lacing', ''], // 拉筋厚度
- ['fula', ''], // 辅拉
- ]);
- //顶板
- if ($data['is_gc'] > 0){
- $where[] = ['is_gc', '=' ,1];
- }else{
- $where[] = ['is_gc', '=' ,0];
- }
- $long = (double)$data['long'];
- $wide = (double)$data['wide'];
- $high = (double)$data['high'];
- $high_array = []; // 高度数组
- $roof_number = []; // 顶板数量
- $floor_number = []; // 底板数量
- $side_number = []; // 侧板数量
- $lacing_number = []; // 拉经数量
- $fula_number = [];//辅拉数量
- $warm = []; //保温数量
- $channel_number = 0;
- for ($i = 0; $i < intval($high); $i++){
- $high_array[] = 1;
- }
- if (intval($high) != $high){
- $high_array = array_merge($high_array, [0.5]);
- }
- if (ceil($long) == $long && ceil($wide) == $wide && ceil($high) == $high){
- //都为整数
- $roof_number = ['1*1' => $long * $wide]; // 顶板数量
- $floor_number = ['1*1' => $long * $wide];// 底板数量
- foreach ($high_array as $item){
- $side_number[] = ['1*1' => (($item * $long) + ($item * $wide)) * 2];
- }
- }elseif (ceil($long) != $long && ceil($wide) != $wide && ceil($high) != $high){
- //都不为整数
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1];// 底板数量
- foreach ($high_array as $item){
- if ($item >= 1){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 4];
- }else{
- $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 4];
- }
- }
- }elseif (ceil($long) != $long || ceil($wide) != $wide || ceil($high) != $high){
- //一个整数
- if (ceil($long) != $long && ceil($wide) == $wide && ceil($high) == $high){
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide];// 底板数量
- foreach ($high_array as $item){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
- }
- }elseif (ceil($long) == $long && ceil($wide) != $wide and ceil($high) == $high){
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long];// 底板数量
- foreach ($high_array as $item){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
- }
- }elseif (ceil($long) != $long && ceil($wide) != $wide and ceil($high) == $high){
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => intval($long) + intval($wide), '0.5*0.5' => 1];// 底板数量
- foreach ($high_array as $item){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 4];
- }
- } elseif (ceil($long) != $long && ceil($wide) == $wide and ceil($high) != $high){
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $wide];// 底板数量
- foreach ($high_array as $item){
- if ($item >= 1){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
- }else{
- $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 2];
- }
- }
- }elseif (ceil($long) == $long && ceil($wide) != $wide and ceil($high) != $high){
- $roof_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long]; // 顶板数量
- $floor_number = ['1*1' => intval($long) * intval($wide), '1*0.5' => $long];// 底板数量
- foreach ($high_array as $item){
- if ($item >= 1){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2, '0.1*0.5' => 2];
- }else{
- $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2, '0.5*0.5' => 2];
- }
- }
- }elseif (ceil($long) == $long && ceil($wide) == $wide and ceil($high) != $high){
- $roof_number = ['1*1' => $long * $wide]; // 顶板数量
- $floor_number = ['1*1' => $long * $wide];// 底板数量
- foreach ($high_array as $item){
- if ($item >= 1){
- $side_number[] = ['1*1' => ((intval($long)) + (intval($wide))) * 2];
- }else{
- $side_number[] = ['1*0.5' => ((intval($long)) + (intval($wide))) * 2];
- }
- }
- }
- }
- array_pop($high_array);// 删除最后一位,算出主拉层数
- // 拉筋
- foreach ($high_array as $item){
- $lacing_number[] = ceil(((ceil($long) * (ceil($wide) - 1)) + (ceil($wide) * (ceil($long) - 1)))/2);
- }
- // 辅拉
- if ($high > 1){
- if ($high == 1.5){
- $fula_number = [2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1];
- }elseif ($high == 2){
- $fula_number = [3 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1];
- }elseif ($high == 2.5){
- $fula_number = [
- 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
- 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
- ];
- }elseif ($high == 3){
- $fula_number = [
- 3 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
- 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1,
- ];
- }elseif ($high >= 3.5){
- foreach ($high_array as $item){
- $fula_number[] = 2 * ( (ceil($long) - 1) + (ceil($wide) - 1) ) + 1;
- }
- }
- }
- $warm1 = 0;// 1*1 数量
- $warm2 = 0;// 1*0.5数量
- $warm3 = 0;// 0.5*0.5数量
- if ($data['is_warm'] > 0){
- foreach ($side_number as $item){
- // 侧板
- foreach ($item as $key => $value){
- if ($key == '1*1'){
- $warm1 += $value;
- }elseif ($key == '1*0.5'){
- $warm2 += $value;
- }elseif ($key == '0.5*0.5'){
- $warm3 += $value;
- }
- }
- }
- foreach ($floor_number as $key => $value){
- // 顶板
- if ($key == '1*1'){
- $warm1 += $value;
- }elseif ($key == '1*0.5'){
- $warm2 += $value;
- }elseif ($key == '0.5*0.5'){
- $warm3 += $value;
- }
- }
- }
- if ($data['is_channel'] > 0){
- if (ceil($long) == $long && ceil($wide) == $wide && ceil($high) == $high){
- //都为整数
- $channel_number = $long * ($wide * 2 + 1) + $wide * 2;
- }elseif (ceil($long) != $long || ceil($wide) || $wide && ceil($high) || $high){
- //不为整数
- $channel_number = $long * (ceil($wide) * 2 + 1) + $wide * 2;
- }
- }
- halt($channel_number);
- }
- /**
- * 材料列表
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function list()
- {
- $data = UtilService::getMore(['is_gc']);
- $list = [];
- if ($data['is_gc'] > 0){
- $where[] = ['is_gc', '=' ,1];
- }else{
- $where[] = ['is_gc', '=' ,0];
- }
- $list['warm'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 7)->where($where)->select(); // 保温
- $list['channel'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 8)->where($where)->select(); // 槽钢
- $list['roof'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 1)->where($where)->select();// 顶板
- $list['side_plate'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 2)->where($where)->select();// 侧板
- $list['lacing'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 3)->where($where)->select();// 拉筋
- $list['floor'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 4)->where($where)->select(); // 底板
- $list['column'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 5)->where($where)->select(); // 立柱
- $list['fula'] = WaterMaterialScience::field('id,name,unit_price,company')->where('type', 6)->where($where)->select(); // 辅拉
- return app('json')->success($list);
- }
- }
|