MachineProductionReport.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. /**
  5. * 机台生产日报表维护接口
  6. */
  7. class MachineProductionReport extends Api
  8. {
  9. protected $noNeedLogin = ['*'];
  10. protected $noNeedRight = ['*'];
  11. /**
  12. * 首页
  13. *
  14. */
  15. public function index()
  16. {
  17. $this->success('请求成功');
  18. }
  19. /**
  20. * 获取机台生产日报表侧边栏
  21. * @ApiMethod (GET)
  22. */
  23. public function getTab()
  24. {
  25. //get请求
  26. if(!$this->request->isGet()){
  27. $this->error('请求方式错误');
  28. }
  29. $rows = db()->table('设备_产量计酬')
  30. ->field('LEFT(sys_rq, 10) as date, COUNT(*) as counts')
  31. ->group('date')
  32. ->order('UniqId desc')
  33. ->limit(30)
  34. ->select();
  35. $rows1 = db()->table('db_sczl')
  36. ->group('date')
  37. ->order('UniqId desc')
  38. ->limit(40)
  39. ->column('LEFT(sys_rq, 10) as date, COUNT(*) as counts');
  40. $arr2 = db()->table('设备_产量计酬')
  41. ->field('LEFT(sys_rq, 10) as date, rtrim(sys_id) as sys_id, COUNT(sys_id) as count')
  42. ->where('sys_rq','>=',$rows[29]['date'])
  43. ->group('date, sys_id')
  44. ->select();
  45. $arr1 = db()->table('db_sczl')
  46. ->field('LEFT(sys_rq, 10) as date, rtrim(sys_id) as sys_id, COUNT(sys_id) as count')
  47. ->where('sys_rq','>=',$rows[29]['date'])
  48. ->group('date, sys_id')
  49. ->select();
  50. $result = [];
  51. // 遍历第一个数组
  52. foreach ($arr1 as $item) {
  53. $date = $item['date'];
  54. $sysId = $item['sys_id'];
  55. $count = $item['count'];
  56. // 如果结果数组中不存在该日期和系统ID的记录,则创建新记录
  57. if (!isset($result[$date][$sysId])) {
  58. $result[$date][$sysId] = 0;
  59. }
  60. // 将count累加到对应的记录中
  61. $result[$date][$sysId] += $count;
  62. }
  63. // 遍历第二个数组
  64. foreach ($arr2 as $item) {
  65. $date = $item['date'];
  66. $sysId = $item['sys_id'];
  67. $count = $item['count'];
  68. // 如果结果数组中不存在该日期和系统ID的记录,则创建新记录
  69. if (!isset($result[$date][$sysId])) {
  70. if (substr($sysId,1,3)=='00-'){
  71. if (isset($result[$date])){
  72. $result[$date] = array_merge([$sysId=>0],$result[$date]);
  73. }else{
  74. $result[$date][$sysId] = 0;
  75. }
  76. // }else if (substr($sysId,5,1)=='/'){
  77. // $num = substr($sysId,1,4);
  78. // $i = $flag = 0;
  79. // foreach ($result[$date] as $k => $v) {
  80. // if (substr($k, 4, 1) === "/") {
  81. // dump(substr($k, 1, 4));
  82. // dump($k);
  83. // dump($result[$date][$i+1]);
  84. // if (substr($k, 1, 4)<$num && substr($result[$date][$i+1], 1, 4)>$num){
  85. // $flag = $i;
  86. // break;
  87. // }
  88. // }
  89. // $i++;
  90. // }
  91. // dump($flag);
  92. // if (isset($result[$date])){
  93. // $result[$date] = array_merge([$sysId=>0],$result[$date]);
  94. // }else{
  95. // $result[$date][$sysId] = 0;
  96. // }
  97. }else{
  98. $result[$date][$sysId] = 0;
  99. }
  100. }
  101. // 将count累加到对应的记录中
  102. $result[$date][$sysId] += $count;
  103. }
  104. foreach($rows as $key=>$value){
  105. if(array_key_exists($value['date'],$rows1)){
  106. $rows[$key]['counts'] = $value['counts']+$rows1[$value['date']];
  107. }else{
  108. $rows[$key]['counts'] = $value['counts'];
  109. }
  110. $rows[$key]['sys'] = $result[$value['date']];
  111. $rows[$key]['date'] = str_replace('-', '.', $rows[$key]['date']);
  112. }
  113. $this->success('成功',$rows);
  114. }
  115. /**
  116. * 获取机台生产日报表列表
  117. * @ApiMethod (GET)
  118. * @param string $date 时间
  119. * @param string $sys_id 用户
  120. */
  121. public function getList()
  122. {
  123. //get请求
  124. if(!$this->request->isGet()){
  125. $this->error('请求方式错误');
  126. }
  127. $req = $this->request->param();
  128. $page = 1;
  129. $limit = 15;
  130. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  131. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  132. $where = [];
  133. if (isset($req['date']) && !empty($req['date'])){
  134. $where['sys_rq'] = ['LIKE',$req['date'].'%'];
  135. }else{
  136. $this->error('参数错误');
  137. }
  138. if (isset($req['sys_id']) && !empty($req['sys_id'])) $where['sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  139. //拆片联拼系数 拆片条小盒系数 日定额 千件工价 补产标准
  140. $rows1 = db()->table('设备_产量计酬')
  141. ->field('sczl_gdbh, sczl_yjno, sczl_gxmc, LEFT(sczl_rq, 10) as sczl_rq, sczl_jtbh,
  142. sczl_bzdh, sczl_num, CAST(sczl_cl AS SIGNED) as sczl_cl, CAST(sczl_ms AS SIGNED) as sczl_ms,
  143. CAST(sczl_zcfp AS SIGNED) as sczl_zcfp, CAST(sczl_zccp AS SIGNED) as sczl_zccp, CAST(sczl_来料少数 AS SIGNED) as sczl_来料少数,
  144. CAST(sczl_装版工时 AS SIGNED) as sczl_装版工时, CAST(sczl_保养工时 AS SIGNED) as sczl_保养工时, CAST(sczl_打样工时 AS SIGNED) as sczl_打样工时,
  145. CAST(sczl_异常停机工时 AS SIGNED) as sczl_异常停机工时, CAST(sczl_设备运行工时 AS SIGNED) as sczl_设备运行工时,
  146. sczl_bh1, sczl_bh2, sczl_bh3, sczl_bh4, sczl_bh5, sczl_bh6, CAST(sczl_工价系数 AS SIGNED) as sczl_工价系数,
  147. rtrim(sys_id) as sys_id, sys_rq, mod_rq, UniqId')
  148. ->where($where)
  149. ->order('UniqId desc')
  150. ->page($page,$limit)
  151. ->select();
  152. $total1 = db()->table('设备_产量计酬')->where($where)->count();
  153. //来料异常 日定额 千件工价 补产标准
  154. //制程废 次品
  155. $rows2 = db()->table('db_sczl')
  156. ->field('sczl_gdbh, sczl_yjno, sczl_gxmc, LEFT(sczl_rq, 10) as sczl_rq, sczl_jtbh,
  157. sczl_bzdh, sczl_num, CAST(sczl_cl AS SIGNED) as sczl_cl, CAST(sczl_ms AS SIGNED) as sczl_ms,
  158. CAST(sczl_fp AS SIGNED) as sczl_zcfp, CAST(sczl_cp AS SIGNED) as sczl_zccp,
  159. CAST(sczl_装版工时 AS SIGNED) as sczl_装版工时, CAST(sczl_保养工时 AS SIGNED) as sczl_保养工时, CAST(sczl_打样工时 AS SIGNED) as sczl_打样工时,
  160. CAST(sczl_异常停机工时 AS SIGNED) as sczl_异常停机工时, CAST(sczl_设备运行工时 AS SIGNED) as sczl_设备运行工时,
  161. sczl_bh1, sczl_bh2, sczl_bh3, sczl_bh4, sczl_bh5, sczl_bh6,
  162. CAST(拆片联拼系数 AS SIGNED) as 拆片联拼系数, CAST(拆片条小盒系数 AS SIGNED) as 拆片条小盒系数, CAST(sczl_工价系数 AS SIGNED) as sczl_工价系数,
  163. rtrim(sys_id) as sys_id, sys_rq, mod_rq, UniqId')
  164. ->where($where)
  165. ->order('UniqId desc')
  166. ->page($page,$limit)
  167. ->select();
  168. $total2 = db()->table('db_sczl')->where($where)->count();
  169. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  170. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  171. foreach ($rows2 as $key=>$value){
  172. $rows2[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  173. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  174. for ($i=2;$i<=6;$i++){
  175. if ($value['sczl_bh'.$i]){
  176. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  177. $rows2[$key]['name'.$i] = $rows2[$key]['name1'];
  178. }else{
  179. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  180. }
  181. }else{
  182. $rows2[$key]['name'.$i] = '';
  183. }
  184. }
  185. $rows2[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.trim($value['sczl_gxmc']);
  186. $rows2[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  187. $rows2[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : $value['sczl_cl'];
  188. $rows2[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : $value['sczl_ms'];
  189. $rows2[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : $value['sczl_zcfp'];
  190. $rows2[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : $value['sczl_zccp'];
  191. $rows2[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : $value['sczl_装版工时'];
  192. $rows2[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : $value['sczl_保养工时'];
  193. $rows2[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : $value['sczl_打样工时'];
  194. $rows2[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : $value['sczl_异常停机工时'];
  195. $rows2[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : $value['sczl_设备运行工时'];
  196. $rows2[$key]['拆片联拼系数'] = $value['拆片联拼系数'] == 0 ? '' : $value['拆片联拼系数'];
  197. $rows2[$key]['拆片条小盒系数'] = $value['拆片条小盒系数'] == 0 ? '' : $value['拆片条小盒系数'];
  198. $rows2[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : $value['sczl_工价系数'];
  199. unset($rows2[$key]['sczl_yjno']);
  200. unset($rows2[$key]['sczl_gxmc']);
  201. }
  202. foreach ($rows1 as $key=>$value){
  203. $rows1[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  204. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  205. for ($i=2;$i<=6;$i++){
  206. if ($value['sczl_bh'.$i]){
  207. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  208. $rows1[$key]['name'.$i] = $rows1[$key]['name1'];
  209. }else{
  210. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  211. }
  212. }else{
  213. $rows1[$key]['name'.$i] = '';
  214. }
  215. }
  216. $rows1[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.trim($value['sczl_gxmc']);
  217. $rows1[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  218. $rows1[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : $value['sczl_cl'];
  219. $rows1[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : $value['sczl_ms'];
  220. $rows1[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : $value['sczl_zcfp'];
  221. $rows1[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : $value['sczl_zccp'];
  222. $rows1[$key]['sczl_来料少数'] = $value['sczl_来料少数'] == 0 ? '' : $value['sczl_来料少数'];
  223. $rows1[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : $value['sczl_装版工时'];
  224. $rows1[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : $value['sczl_保养工时'];
  225. $rows1[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : $value['sczl_打样工时'];
  226. $rows1[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : $value['sczl_异常停机工时'];
  227. $rows1[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : $value['sczl_设备运行工时'];
  228. $rows1[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : $value['sczl_工价系数'];
  229. unset($rows1[$key]['sczl_yjno']);
  230. unset($rows1[$key]['sczl_gxmc']);
  231. }
  232. $rows = array_merge($rows2,$rows1);
  233. $data = [
  234. 'total' => $total1+$total2,
  235. 'rows' => $rows,
  236. ];
  237. $this->success('成功',$data);
  238. }
  239. /**
  240. * 获取机台生产日报表信息
  241. * @ApiMethod (GET)
  242. * @param string $UniqId UniqId
  243. */
  244. public function getInfo()
  245. {
  246. //get请求
  247. if(!$this->request->isGet()){
  248. $this->error('请求方式错误');
  249. }
  250. $req = $this->request->param();
  251. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  252. $UniqId = $req['UniqId'];
  253. }else{
  254. $this->error('参数错误');
  255. }
  256. $rows = db()->table('db_sczl')->alias('d')
  257. ->field('d.*, ')
  258. ->join('工单_基本资料 g', 'd.')
  259. ->where('d.UniqId',$UniqId)
  260. ->select();
  261. $this->success('成功',$rows);
  262. }
  263. }