WasteStatistics.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use DateTime;
  5. use \think\db;
  6. /**
  7. * 决策支持->大废品统计
  8. */
  9. class WasteStatistics extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. /**
  14. * 左侧菜单栏
  15. * @return void
  16. * @throws \think\exception\DbException
  17. * @throws db\exception\DataNotFoundException
  18. * @throws db\exception\ModelNotFoundException
  19. */
  20. public function Getlist()
  21. {
  22. if ($this->request->isGet() === false){
  23. $this->error('请求错误');
  24. }
  25. $list = \db('db_大废品')
  26. ->field('DATE_FORMAT(sys_rq, "%Y-%m") AS month')
  27. ->group('month')
  28. ->order('month desc')
  29. ->select();
  30. $data = [];
  31. foreach ($list as $key => $value){
  32. $week = \db('db_大废品')
  33. ->field('WEEK(sys_rq,1) as week')
  34. ->where('sys_rq','like',$value['month'].'%')
  35. ->group('week')
  36. ->order('week desc')
  37. ->select();
  38. foreach ($week as $k=>$v){
  39. $week[$k]['周数'] = '第'.$v['week'].'周';
  40. }
  41. $data[str_replace('-', '', $value['month'])] = $week;
  42. }
  43. $this->success('成功',$data);
  44. }
  45. //右侧数据
  46. public function ReghtList()
  47. {
  48. if ($this->request->isGet() === false){
  49. $this->error('请求错误');
  50. }
  51. $param = $this->request->param();
  52. if (isset($param['mouth']) === false){
  53. $this->error('参数错误');
  54. }
  55. //判断查询时间范围
  56. $dateTime = new DateTime();
  57. $date = $dateTime->createFromFormat('Ym', $param['mouth']);
  58. $mouth = $date->format('Y-m');
  59. $year = $date->format('Y');
  60. $where = [
  61. 'a.sys_rq' => ['like',$mouth.'%']
  62. ];
  63. if (isset($param['week']) && !empty($param['week'])){
  64. $week = $dateTime->setISODate($year,$param['week']);
  65. $startTime = $week->format('Y-m-d 00:00:00');
  66. $weekLast = $week->modify('+7 days');
  67. $endTime = $weekLast->format('Y-m-d 00:00:00');
  68. $where['a.sys_rq'] = ['between',[$startTime,$endTime]];
  69. }
  70. $query = \db('db_大废品')
  71. ->alias('a')
  72. ->field('a.sczl_cl,a.JL_bh1,a.JL_bh2,a.JL_bh3,a.JL_bh4,a.JL_bh5,a.JL_bh6,a.JL_bh7,a.JL_bh8,
  73. a.JL_bh9,a.JL_bh10,a.JL_Je1,JL_Je2,JL_Je3,JL_Je4,JL_Je5,JL_Je6,JL_Je7,JL_Je8,JL_Je9,
  74. JL_Je10,a.sczl_bh1,a.sczl_bh2,a.sczl_bh3,a.sczl_bh4,a.sczl_bh5,a.sczl_bh6,a.sczl_bh7,
  75. a.sczl_bh8,a.sczl_bh9,a.sczl_bh10,a.sczl_je1,a.sczl_je2,a.sczl_je3,a.sczl_je4,a.sczl_je5,
  76. a.sczl_je6,a.sczl_je7,a.sczl_je8,a.sczl_je9,a.sczl_je10,b1.员工姓名 as 奖励人员1,
  77. b2.员工姓名 as 奖励人员2,b3.员工姓名 as 奖励人员3,b4.员工姓名 as 奖励人员4,b5.员工姓名 as 奖励人员5,
  78. b6.员工姓名 as 奖励人员6,b7.员工姓名 as 奖励人员7,b8.员工姓名 as 奖励人员8,b9.员工姓名 as 奖励人员9,
  79. b10.员工姓名 as 奖励人员10,b1.所在部门 as 奖励部门1,b2.所在部门 as 奖励部门2,b3.所在部门 as 奖励部门3,
  80. b4.所在部门 as 奖励部门4,b5.所在部门 as 奖励部门5,b6.所在部门 as 奖励部门6,b7.所在部门 as 奖励部门7,
  81. b8.所在部门 as 奖励部门8,b9.所在部门 as 奖励部门9,b10.所在部门 as 奖励部门10,c1.员工姓名 as 惩罚人员1,
  82. c2.员工姓名 as 惩罚人员2,c3.员工姓名 as 惩罚人员3,c4.员工姓名 as 惩罚人员4,c5.员工姓名 as 惩罚人员5,
  83. c6.员工姓名 as 惩罚人员6,c7.员工姓名 as 惩罚人员7,c8.员工姓名 as 惩罚人员8,c9.员工姓名 as 惩罚人员9,
  84. c10.员工姓名 as 惩罚人员10,c1.所在部门 as 惩罚部门1,c2.所在部门 as 惩罚部门2,c3.所在部门 as 惩罚部门3,
  85. c4.所在部门 as 惩罚部门4,c5.所在部门 as 惩罚部门5,c6.所在部门 as 惩罚部门6,c7.所在部门 as 惩罚部门7,
  86. c8.所在部门 as 惩罚部门8,c9.所在部门 as 惩罚部门9,c10.所在部门 as 惩罚部门10,WEEK(a.sys_rq,1) as week');
  87. for($i = 1;$i<=10;$i++){
  88. $jl_bh = 'a.JL_bh' . $i;
  89. $jl_alias = 'b' . $i;
  90. $query->join("人事_基本资料 $jl_alias", "$jl_bh = {$jl_alias}.员工编号 AND {$jl_bh} IS NOT NULL", 'LEFT');
  91. $sczl_bh = 'a.sczl_bh' . $i;
  92. $sczl_alias = 'c' . $i;
  93. $query->join("人事_基本资料 $sczl_alias", "$sczl_bh = {$sczl_alias}.员工编号 AND {$sczl_bh} IS NOT NULL", 'LEFT');
  94. }
  95. $list = $query->where($where)->select();
  96. $data = [];
  97. foreach ($list as $key=>$value){
  98. for ($i = 1;$i <= 10; $i++){
  99. $jl_bh = $value['JL_bh'.$i];
  100. $jl_je = $value['JL_Je'.$i];
  101. $jl_xm = $value['奖励人员'.$i];
  102. $jl_bm = $value['奖励部门'.$i];
  103. $sczl_bh = $value['sczl_bh'.$i];
  104. $sczl_je = $value['sczl_je'.$i];
  105. $sczl_xm = $value['惩罚人员'.$i];
  106. $sczl_bm = $value['惩罚部门'.$i];
  107. //奖励人员数据
  108. if (!empty($jl_bh) && $jl_bh !== ''){
  109. if (isset($data[$jl_bh])){
  110. $data[$jl_bh]['奖励金额'] += $jl_je;
  111. $data[$jl_bh]['发现次数'] += 1;
  112. $data[$jl_bh]['发现张数'] += $value['sczl_cl'];
  113. }else{
  114. $data[$jl_bh] = [
  115. '所在部门' => $jl_bm,
  116. '员工编号' => $jl_bh,
  117. '员工姓名' => $jl_xm,
  118. '发现次数' => 1,
  119. '发现张数' => $value['sczl_cl'],
  120. '奖励金额' => $jl_je,
  121. '遗漏次数' => 0,
  122. '遗漏张数' => 0,
  123. '处罚金额' => 0,
  124. '年月' => $param['mouth'],
  125. '周数' => $value['week']
  126. ];
  127. }
  128. }
  129. //惩罚人员数据
  130. if (!empty($sczl_bh) && $sczl_bh !== ''){
  131. if (isset($data[$sczl_bh])){
  132. $data[$sczl_bh]['处罚金额'] += $sczl_je;
  133. $data[$sczl_bh]['遗漏次数'] += 1;
  134. $data[$sczl_bh]['遗漏张数'] += $value['sczl_cl'];
  135. }else{
  136. $data[$sczl_bh] = [
  137. '所在部门' => $sczl_bm,
  138. '员工编号' => $sczl_bh,
  139. '员工姓名' => $sczl_xm,
  140. '发现次数' => 0,
  141. '发现张数' => 0,
  142. '奖励金额' => 0,
  143. '遗漏次数' => 1,
  144. '遗漏张数' => $value['sczl_cl'],
  145. '处罚金额' => $sczl_je,
  146. '年月' => $param['mouth'],
  147. '周数' => $value['week']
  148. ];
  149. }
  150. }
  151. }
  152. }
  153. $data = array_values($data);
  154. $this->success('成功',$data);
  155. }
  156. }