MaterialService.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace App\Service;
  3. use App\Model\BasicMaterial;
  4. use App\Model\Material;
  5. use App\Model\MaterialDetail;
  6. use Illuminate\Support\Facades\DB;
  7. class MaterialService extends Service
  8. {
  9. public function basicMaterialEdit($data){
  10. list($status,$msg) = $this->basicMaterialRule($data, false);
  11. if(!$status) return [$status,$msg];
  12. $model = new BasicMaterial();
  13. $model = $model->where('id',$data['id'])->first();
  14. $model->title = $data['title'];
  15. $model->save();
  16. return [true,'保存成功!'];
  17. }
  18. public function basicMaterialAdd($data,$user){
  19. list($status,$msg) = $this->basicMaterialRule($data);
  20. if(!$status) return [$status,$msg];
  21. $model = new BasicMaterial();
  22. $model->title = $data['title'];
  23. $model->save();
  24. return [true,'保存成功!'];
  25. }
  26. public function basicMaterialDel($data){
  27. if($this->isEmpty($data,'id')) return [false,'ID必须!'];
  28. BasicMaterial::where('id',$data['id'])->update([
  29. 'del_time'=>time()
  30. ]);
  31. return [true,'删除成功'];
  32. }
  33. public function basicMaterialList($data){
  34. $list = BasicMaterial::where('del_time',0)
  35. ->select('title','crt_time','upd_time','id')
  36. ->orderBy('id','desc');
  37. $list = $this->limit($list,'',$data);
  38. return [200,$list];
  39. }
  40. public function basicMaterialRule($data, $is_add = true){
  41. if($this->isEmpty($data,'title')) return [false,'名称不存在!'];
  42. $model = BasicMaterial::where('title',$data['title'])
  43. ->where('del_time',0);
  44. if(! $is_add){
  45. if($this->isEmpty($data,'id')) return [false,'ID不存在!'];
  46. $model->where('id','<>',$data['id']);
  47. }
  48. $bool = $model->exists();
  49. if($bool) return [false,'名称已存在!'];
  50. return [true,''];
  51. }
  52. public function MaterialEdit($data){
  53. list($status,$msg) = $this->MaterialRule($data,false);
  54. if(!$status) return [$status,$msg];
  55. DB::beginTransaction();
  56. try{
  57. $model = new Material();
  58. $model = $model->where('id',$data['id'])->first();
  59. $model->b_m_id = $data['b_m_id'] ;
  60. $model->title = $data['title'] ;
  61. $model->abbreviation_title = $data['abbreviation_title'] ;
  62. $model->unit = $data['unit'] ;
  63. $model->remark = $data['remark'] ?? '' ;
  64. $model->img_url = $data['img_url'] ?? '' ;
  65. $model->save();
  66. $detail_insert = [];
  67. MaterialDetail::where('material_id',$model->id)->update([
  68. 'del_time' => time()
  69. ]);
  70. if(isset($data['children'])){
  71. foreach ($data['children'] as $v){
  72. $detail_insert[] = [
  73. 'material_id' => $model->id,
  74. 'price' => $v['price'],
  75. 'long' => $v['long'],
  76. 'width' => $v['width'],
  77. 'high' => $v['high'],
  78. 'code' => $v['code'],
  79. 'brand' => $v['brand'],
  80. ];
  81. }
  82. }
  83. MaterialDetail::insert($detail_insert);
  84. DB::commit();
  85. }catch (\Exception $e){
  86. DB::rollBack();
  87. return [false,$e->getMessage()];
  88. }
  89. return [true,'保存成功!'];
  90. }
  91. public function MaterialAdd($data,$user){
  92. list($status,$msg) = $this->MaterialRule($data);
  93. if(!$status) return [$status,$msg];
  94. DB::beginTransaction();
  95. try{
  96. $model = new Material();
  97. $model->b_m_id = $data['b_m_id'] ;
  98. $model->title = $data['title'] ;
  99. $model->abbreviation_title = $data['abbreviation_title'] ;
  100. $model->unit = $data['unit'] ;
  101. $model->remark = $data['remark'] ?? '' ;
  102. $model->img_url = $data['img_url'] ?? '' ;
  103. $model->save();
  104. $detail_insert = [];
  105. if(isset($data['detail'])){
  106. foreach ($data['detail'] as $v){
  107. $detail_insert[] = [
  108. 'material_id' => $model->id,
  109. 'price' => $v['price'],
  110. 'long' => $v['long'],
  111. 'width' => $v['width'],
  112. 'high' => $v['high'],
  113. 'code' => $v['code'],
  114. 'brand' => $v['brand'],
  115. ];
  116. }
  117. }
  118. MaterialDetail::insert($detail_insert);
  119. DB::commit();
  120. }catch (\Exception $e){
  121. DB::rollBack();
  122. return [false,$e->getMessage()];
  123. }
  124. return [true,'保存成功!'];
  125. }
  126. public function MaterialDel($data){
  127. if($this->isEmpty($data,'id')) return [false,'ID必须!'];
  128. Material::where('id',$data['id'])->update([
  129. 'del_time'=>time()
  130. ]);
  131. MaterialDetail::where('material_id',$data['id'])->update([
  132. 'del_time'=>time()
  133. ]);
  134. return [true,'删除成功'];
  135. }
  136. public function MaterialList($data){
  137. $list = Material::where('del_time',0)
  138. ->select('title','b_m_id','abbreviation_title','unit','crt_time','upd_time','id')
  139. ->orderBy('id','desc');
  140. $list = $this->limit($list,'',$data);
  141. return [true,$list];
  142. }
  143. public function MaterialDetail($data){
  144. if($this->isEmpty($data,'id')) return [false,'ID必传'];
  145. $id = $data['id'];
  146. $detail = Material::where('del_time',0)->where('id',$id)->select('title','b_m_id','abbreviation_title','unit','crt_time','upd_time','id')->first();
  147. if(empty($detail)) return [false,'数据不存在!'];
  148. $detail['detail'] = MaterialDetail::where('material_id',$id)->select('price','long','width','high','crt_time','upd_time','code','brand')->get()->toArray();
  149. return [true,$detail];
  150. }
  151. public function MaterialRule($data,$is_add = true){
  152. if($this->isEmpty($data,'b_m_id')) return [false,'物料分类不存在!'];
  153. if($this->isEmpty($data,'title')) return [false,'物料名称不存在!'];
  154. if($this->isEmpty($data,'abbreviation_title')) return [false,'物料简称不存在!'];
  155. if($this->isEmpty($data,'unit')) return [false,'物料单位不存在!'];
  156. if($this->isEmpty($data,'id')) return [false,'ID必传'];
  157. $model = Material::whereRaw("title = '{$data['title']}' OR abbreviation_title = '{$data['abbreviation_title']}'")
  158. ->where('del_time',0);
  159. if(! $is_add){
  160. if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
  161. $model->where('id','<>',$data['id']);
  162. }
  163. $bool = $model->exists();
  164. if($bool) return [false,'名称或简称已经存在!'];
  165. return [true,''];
  166. }
  167. }