ObligationService.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace App\Services;
  3. use App\DepartmentObligationOwner;
  4. use App\Owner;
  5. use App\Traits\ServiceAppAop;
  6. use App\Obligation;
  7. use Carbon\Carbon;
  8. class ObligationService
  9. {
  10. use ServiceAppAop;
  11. protected $modelClass=Obligation::class;
  12. public function getSelection($column = ['id','code'])
  13. {
  14. return Obligation::query()->select($column)->get();
  15. }
  16. public function recombineCodeIdArr(){
  17. $obligations=$this->getSelection()->toArray();
  18. return array_combine(array_column($obligations, 'code'), array_column($obligations, 'id'));
  19. }
  20. public function createOrUpdate(array $param){
  21. $obligation=$this->recombineCodeIdArr();
  22. $owner=Owner::query()->with('departmentObligationOwner')->find($param['id']);
  23. $departmentObligationOwner=$owner->departmentObligationOwner->toArray()??[];
  24. $time=Carbon::now()->subMonths(-1)->startOfMonth()->startOfDay()->toDateTimeString();
  25. if (empty($departmentObligationOwner)){//第一次新增 部门和职能及货主关联
  26. $insert_param=[];
  27. $insert_param[]=['department_id'=>$param['kc'],'obligation_id'=>$obligation['kc'],'obligation_code'=>'kc','owner_id'=>$param['id'],'valid_time'=>$time];
  28. $insert_param[]=['department_id'=>$param['jg'],'obligation_id'=>$obligation['jg'],'obligation_code'=>'jg','owner_id'=>$param['id'],'valid_time'=>$time];
  29. $insert_param[]=['department_id'=>$param['th'],'obligation_id'=>$obligation['th'],'obligation_code'=>'th','owner_id'=>$param['id'],'valid_time'=>$time];
  30. $insert_param[]=['department_id'=>$param['sh'],'obligation_id'=>$obligation['sh'],'obligation_code'=>'sh','owner_id'=>$param['id'],'valid_time'=>$time];
  31. $insert_param[]=['department_id'=>$param['fh'],'obligation_id'=>$obligation['fh'],'obligation_code'=>'fh','owner_id'=>$param['id'],'valid_time'=>$time];
  32. DepartmentObligationOwner::query()->insert($insert_param);
  33. }else{//修改货主中的 仓库组, 加工组, 发货组, 收货组, 退货组信息
  34. $kc=DepartmentObligationOwner::query()
  35. ->where('obligation_id',$obligation['kc'])
  36. ->where('owner_id',$param['id'])
  37. ->where('valid_time',$time)->first();
  38. if ($kc){
  39. $kc->update(['department_id'=>$param['kc']]);
  40. }else{
  41. DepartmentObligationOwner::query()
  42. ->orderByDesc('id')
  43. ->where('obligation_id',$obligation['kc'])
  44. ->where('owner_id',$param['id'])
  45. ->update(['failure_time'=>$time]);
  46. DepartmentObligationOwner::query()->insert(['department_id'=>$param['kc'],'obligation_id'=>$obligation['kc'],'obligation_code'=>'kc','owner_id'=>$param['id'],'valid_time'=>$time]);
  47. }
  48. $jg=DepartmentObligationOwner::query()
  49. ->where('obligation_id',$obligation['jg'])
  50. ->where('owner_id',$param['id'])
  51. ->where('valid_time',$time)->first();
  52. if ($jg){
  53. $jg->update(['department_id'=>$param['jg']]);
  54. }else{
  55. DepartmentObligationOwner::query()
  56. ->orderByDesc('id')
  57. ->where('obligation_id',$obligation['jg'])
  58. ->where('owner_id',$param['id'])
  59. ->update(['failure_time'=>$time]);
  60. DepartmentObligationOwner::query()->insert(['department_id'=>$param['jg'],'obligation_id'=>$obligation['jg'],'obligation_code'=>'jg','owner_id'=>$param['id'],'valid_time'=>$time]);
  61. }
  62. $th=DepartmentObligationOwner::query()
  63. ->where('obligation_id',$obligation['th'])
  64. ->where('owner_id',$param['id'])
  65. ->where('valid_time',$time)->first();
  66. if ($th){
  67. $th->update(['department_id'=>$param['th']]);
  68. }else{
  69. DepartmentObligationOwner::query()
  70. ->orderByDesc('id')
  71. ->where('obligation_id',$obligation['th'])
  72. ->where('owner_id',$param['id'])
  73. ->update(['failure_time'=>$time]);
  74. DepartmentObligationOwner::query()->insert(['department_id'=>$param['th'],'obligation_id'=>$obligation['th'],'obligation_code'=>'th','owner_id'=>$param['id'],'valid_time'=>$time]);
  75. }
  76. $sh=DepartmentObligationOwner::query()
  77. ->where('obligation_id',$obligation['sh'])
  78. ->where('owner_id',$param['id'])
  79. ->where('valid_time',$time)->first();
  80. if ($sh){
  81. $sh->update(['department_id'=>$param['sh']]);
  82. }else{
  83. DepartmentObligationOwner::query()
  84. ->orderByDesc('id')
  85. ->where('obligation_id',$obligation['sh'])
  86. ->where('owner_id',$param['id'])
  87. ->update(['failure_time'=>$time]);
  88. DepartmentObligationOwner::query()->insert(['department_id'=>$param['sh'],'obligation_id'=>$obligation['sh'],'obligation_code'=>'sh','owner_id'=>$param['id'],'valid_time'=>$time]);
  89. }
  90. $fh=DepartmentObligationOwner::query()
  91. ->where('obligation_id',$obligation['fh'])
  92. ->where('owner_id',$param['id'])
  93. ->where('valid_time',$time)->first();
  94. if ($fh){
  95. $fh->update(['department_id'=>$param['fh']]);
  96. }else{
  97. DepartmentObligationOwner::query()
  98. ->orderByDesc('id')
  99. ->where('obligation_id',$obligation['fh'])
  100. ->where('owner_id',$param['id'])
  101. ->update(['failure_time'=>$time]);
  102. DepartmentObligationOwner::query()->insert(['department_id'=>$param['fh'],'obligation_id'=>$obligation['fh'],'obligation_code'=>'fh','owner_id'=>$param['id'],'valid_time'=>$time]);
  103. }
  104. }
  105. return Owner::query()->with('departmentObligationOwner')->find($param['id']);
  106. }
  107. }