PreformanceTasks.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <?php
  2. namespace app\api\controller;
  3. use think\facade\Request;
  4. use app\model\PreformanceTasks as PreformanceTasksModel;
  5. use app\model\UserCollect;
  6. use app\model\Footprints;
  7. use app\model\Customer;
  8. use app\model\CustomersSubscribe;
  9. use app\model\CustomerVisitLog;
  10. use app\model\Org;
  11. use app\model\Employee;
  12. use app\model\User;
  13. use app\model\PreformanceTasksOrg;
  14. use app\model\Grant;
  15. class PreformanceTasks extends Base
  16. {
  17. //进行中
  18. public function ing_list($param){
  19. $token = $this->request->token;
  20. $token['org_id'] = Employee::where('id',$token['employee_id'])->value('org_id');
  21. $time = date('Y-m-d H:i:s');
  22. $w[] = ['del','=',0];
  23. $w[] = ['root_id','=',$token['root_org']];
  24. $w[] = ['start_date','<=',$time];
  25. $w[] = ['end_date','>=',$time];
  26. $pid = PreformanceTasksModel::where($w)->column('id');
  27. //正在进行中指派给我部门并且没有完成
  28. $w1[] = ['performance_tasks_id','in',$pid];
  29. $w1[] = ['org_id','=',$token['org_id']];
  30. // $w5[] = "if(is_deposit=1,`ok_deposit`<`deposit`,'1=1')";
  31. // $w5[] = "if(is_money=1,`ok_money`<`money`,'1=1')";
  32. $pid = PreformanceTasksOrg::where($w1)
  33. // ->where(function($query) use ($w5){
  34. // foreach ($w5 as $k => $v) {
  35. // $query->whereOr($v);
  36. // }
  37. // })
  38. ->column('performance_tasks_id');
  39. $w22[] = ['id','in',$pid];
  40. $org_id = $token['org_id'];
  41. $list = PreformanceTasksModel::with(['preformanceTasksOrgOne'=>function($query) use ($org_id){
  42. $query->where([['del','=',0],['org_id','=',$org_id]]);
  43. }])->where($w22)->page($param['page'],$param['limit'])->select();
  44. //逾期任务数量
  45. $wy[] = ['del','=',0];
  46. $wy[] = ['root_id','=',$token['root_org']];
  47. $wy[] = ['end_date','<',$time];
  48. $pid = PreformanceTasksModel::where($wy)->column('id');
  49. $w33[] = ['performance_tasks_id','in',$pid];
  50. $w33[] = ['root_id','=',$token['root_org']];
  51. $w33[] = ['del','=',0];
  52. $w33[] = ['org_id','=',$token['org_id']];
  53. $w5[] = "if(is_deposit=1,`ok_deposit`<`deposit`,'1=1')";
  54. $w5[] = "if(is_money=1,`ok_money`<`money`,'1=1')";
  55. $yuqi = PreformanceTasksOrg::where($w33)
  56. ->where(function($query) use ($w5){
  57. foreach ($w5 as $k => $v) {
  58. $query->whereOr($v);
  59. }
  60. })
  61. ->group('performance_tasks_id')->count();
  62. foreach ($list as $k => $v) {
  63. //自己的业绩
  64. $vid = $v->customer_visit_log_id;
  65. $w2[] = ['customer_employee_id','=',$token['employee_id']];
  66. $w2[] = ['confirm_date','between',[$v->start_date,$v->end_date]];
  67. $w2[] = ['id','in',explode(',',$vid)];
  68. $w2[] = ['customer_org_id','=',$token['org_id']];
  69. $w2[] = ['state', 'in',CustomerVisitLog::changeState('已交定', 'chaos')];
  70. $v->my_deposit = CustomerVisitLog::where($w2)->group('customer_id')->count();
  71. $w3[] = ['customer_employee_id','=',$token['employee_id']];
  72. $w3[] = ['confirm_date','between',[$v->start_date,$v->end_date]];
  73. $w3[] = ['state', 'in',CustomerVisitLog::changeState('已签单', 'chaos')];
  74. $w3[] = ['customer_org_id','=',$token['org_id']];
  75. $w3[] = ['id','in',explode(',',$vid)];
  76. $v->my_money = CustomerVisitLog::where($w3)->group('customer_id')->sum('money');
  77. $v->org_deposit = $v->preformanceTasksOrgOne->ok_deposit;
  78. $v->org_money = $v->preformanceTasksOrgOne->ok_money;
  79. $v->deposit = $v->preformanceTasksOrgOne->deposit;
  80. $v->money = $v->preformanceTasksOrgOne->money;
  81. unset($w2);
  82. unset($w3);
  83. unset($v->preformanceTasksOrgOne);
  84. $v->start_date = date('Y-m-d',strtotime($v->start_date));
  85. $v->end_date = date('Y-m-d',strtotime($v->end_date));
  86. //交定比例
  87. $v->org_deposit_grawht = $v->deposit==0 ? 0 : (floor($v->org_deposit/$v->deposit*100)>100 ? 100 : floor($v->org_deposit/$v->deposit*100));
  88. $v->my_deposit_grawth = $v->deposit==0 ? 0 : (floor($v->my_deposit/$v->deposit*100)>100 ? 100 : floor($v->my_deposit/$v->deposit*100));
  89. //签单比例
  90. $v->org_money_grawht = $v->money==0 ? 0 : (floor($v->org_money/$v->money*100)>100 ? 100 : floor($v->org_money/$v->money*100));
  91. $v->my_money_grawth = $v->money==0 ? 0 : (floor($v->my_money/$v->money*100)>100 ? 100 : floor($v->my_money/$v->money*100));
  92. }
  93. $count = PreformanceTasksModel::where($w22)->count();
  94. return json(['code' => 0, 'data' =>$list,'count'=>$count,'msg' => '编辑成功','yuqi'=>$yuqi]);
  95. }
  96. //业绩任务列表
  97. public function index(){
  98. $param = Request::only(['page'=>1,'limit'=>10,'type'=>1]);
  99. //进行中
  100. if ($param['type']==1) {
  101. $list = $this->ing_list($param);
  102. }else{//逾期
  103. $list = $this->yuqi_list($param);
  104. }
  105. return $list;
  106. }
  107. //逾期
  108. ////已完成和逾期未完成
  109. public function yuqi_list($param){
  110. //已完成
  111. $token = $this->request->token;
  112. $token['org_id'] = Employee::where('id',$token['employee_id'])->value('org_id');
  113. $time = date('Y-m-d H:i:s');
  114. $wy[] = ['del','=',0];
  115. $wy[] = ['root_id','=',$token['root_org']];
  116. $wy[] = ['end_date','<',$time];
  117. $pid = PreformanceTasksModel::where($wy)->column('id');
  118. $w334[] = ['performance_tasks_id','in',$pid];
  119. $w334[] = ['root_id','=',$token['root_org']];
  120. $w334[] = ['del','=',0];
  121. $w334[] = ['org_id','=',$token['org_id']];
  122. $pid = PreformanceTasksOrg::where($w334)->group('performance_tasks_id')->column('performance_tasks_id');
  123. $w6[] = ['id','in',$pid];
  124. $org_id = $token['org_id'];
  125. $list = PreformanceTasksModel::with(['preformanceTasksOrgOne'=>function($query) use ($org_id){
  126. $query->where([['del','=',0],['org_id','=',$org_id]]);
  127. }])->where($w6)->page($param['page'],$param['limit'])->select();
  128. foreach ($list as $k => $v) {
  129. $vid = $v->customer_visit_log_id;
  130. //自己的业绩
  131. $w23[] = ['customer_employee_id','=',$token['employee_id']];
  132. $w23[] = ['confirm_date','between',[$v->start_date,$v->end_date]];
  133. $w23[] = ['state', 'in',CustomerVisitLog::changeState('已交定', 'chaos')];
  134. $w23[] = ['customer_org_id','=',$token['org_id']];
  135. $w23[] = ['id','in',explode(',',$vid)];
  136. $v->my_deposit = CustomerVisitLog::where($w23)->group('customer_id')->count();
  137. $w33[] = ['customer_employee_id','=',$token['employee_id']];
  138. $w33[] = ['confirm_date','between',[$v->start_date,$v->end_date]];
  139. $w33[] = ['state', 'in',CustomerVisitLog::changeState('已签单', 'chaos')];
  140. $w33[] = ['customer_org_id','=',$token['org_id']];
  141. $w33[] = ['id','in',explode(',',$vid)];
  142. $v->my_money = CustomerVisitLog::where($w33)->group('customer_id')->sum('money');
  143. $v->org_deposit = $v->preformanceTasksOrgOne->ok_deposit;
  144. $v->org_money = $v->preformanceTasksOrgOne->ok_money;
  145. $v->deposit = $v->preformanceTasksOrgOne->deposit;
  146. $v->money = $v->preformanceTasksOrgOne->money;
  147. unset($w23);
  148. unset($w33);
  149. unset($v->preformanceTasksOrgOne);
  150. $v->start_date = date('Y-m-d',strtotime($v->start_date));
  151. $v->end_date = date('Y-m-d',strtotime($v->end_date));
  152. //交定比例
  153. $v->org_deposit_grawht = $v->deposit==0 ? 0 : (floor($v->org_deposit/$v->deposit*100)>100 ? 100 : floor($v->org_deposit/$v->deposit*100));
  154. $v->my_deposit_grawth = $v->deposit==0 ? 0 : (floor($v->my_deposit/$v->deposit*100)>100 ? 100 : floor($v->my_deposit/$v->deposit*100));
  155. //签单比例
  156. $v->org_money_grawht = $v->money==0 ? 0 : (floor($v->org_money/$v->money*100)>100 ? 100 : floor($v->org_money/$v->money*100));
  157. $v->my_money_grawth = $v->money==0 ? 0 : (floor($v->my_money/$v->money*100)>100 ? 100 : floor($v->my_money/$v->money*100));
  158. }
  159. $count = PreformanceTasksModel::where($w6)->count();
  160. return json(['code' => 0, 'data' =>$list,'count'=>$count,'msg' => '编辑成功']);
  161. }
  162. }