MachineProductionReport.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  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. */
  119. public function getTabByGdbh()
  120. {
  121. //get请求
  122. if(!$this->request->isGet()){
  123. $this->error('请求方式错误');
  124. }
  125. $sql = 'SELECT t1.`sczl_gdbh`,t2.`yj_yjmc`
  126. FROM (
  127. SELECT `sczl_gdbh`, sczl_yjno FROM `db_sczl`
  128. UNION
  129. SELECT `sczl_gdbh`, sczl_yjno FROM `设备_产量计酬`
  130. GROUP BY `sczl_gdbh`
  131. ) AS t1
  132. JOIN `工单_印件资料` AS t2 ON t1.`sczl_gdbh` = t2.`Yj_Gdbh`
  133. WHERE t1.sczl_yjno = t2.yj_Yjno
  134. ORDER BY t1.`sczl_gdbh` DESC
  135. LIMIT 65';
  136. $rows = db()->query($sql);
  137. $arr1 = db()->table('设备_产量计酬')
  138. ->field('sczl_gdbh,rtrim(sys_id) as sys_id')
  139. ->where('sczl_gdbh','>=',$rows[64]['sczl_gdbh'])
  140. ->select();
  141. $arr2 = db()->table('db_sczl')
  142. ->field('sczl_gdbh,rtrim(sys_id) as sys_id')
  143. ->where('sczl_gdbh','>=',$rows[64]['sczl_gdbh'])
  144. ->select();
  145. $arr = array_merge($arr1,$arr2);
  146. $brr = [];
  147. foreach($arr as $k=>$v){
  148. if(array_key_exists($v['sczl_gdbh'],$brr)){
  149. if(array_key_exists($v['sys_id'],$brr[$v['sczl_gdbh']])){
  150. $brr[$v['sczl_gdbh']][$v['sys_id']] += 1;
  151. }else{
  152. $brr[$v['sczl_gdbh']][$v['sys_id']] = 1;
  153. }
  154. }else{
  155. $brr[$v['sczl_gdbh']][$v['sys_id']] = 1;
  156. }
  157. }
  158. foreach($rows as $key=>$value){
  159. $rows[$key]['sys'] = $brr[$value['sczl_gdbh']];
  160. $rows[$key]['yj_yjmc'] = trim($value['yj_yjmc']);
  161. }
  162. $this->success('成功',$rows);
  163. }
  164. /**
  165. * 获取机台生产日报表列表
  166. * @ApiMethod (GET)
  167. * @param string $date 时间
  168. * @param string $sys_id 用户
  169. */
  170. public function getList()
  171. {
  172. //get请求
  173. if(!$this->request->isGet()){
  174. $this->error('请求方式错误');
  175. }
  176. $req = $this->request->param();
  177. $page = 1;
  178. $limit = 15;
  179. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  180. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  181. if(strpos($req['date'],'-')){
  182. $where = ['a.sys_rq'=>['like','%'.$req['date'].'%']];
  183. $option = ['sys_rq'=>['like','%'.$req['date'].'%']];
  184. }else{
  185. $where = ['a.sczl_gdbh'=>$req['date']];
  186. $option = ['sczl_gdbh'=>$req['date']];
  187. }
  188. if (isset($req['sys_id']) && !empty($req['sys_id'])){
  189. $where['a.sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  190. $option['sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  191. }
  192. //拆片联拼系数 拆片条小盒系数
  193. $rows1 = db()->table('设备_产量计酬')->alias('a')
  194. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  195. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  196. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  197. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  198. d.日定额, d.千件工价, d.补产标准,
  199. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  200. ->where($where)
  201. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  202. ->order('sys_id asc, sczl_num asc')
  203. ->page($page,$limit)
  204. ->select();
  205. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  206. //来料异常
  207. //制程废 次品
  208. $rows2 = db()->table('db_sczl')->alias('a')
  209. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  210. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  211. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  212. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  213. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  214. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  215. ->where($where)
  216. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  217. ->order('sys_id asc, sczl_num asc')
  218. ->page($page,$limit)
  219. ->select();
  220. $total2 = db()->table('db_sczl')->where($option)->count();
  221. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  222. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  223. foreach ($rows2 as $key=>$value){
  224. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  225. $rows2[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  226. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  227. for ($i=2;$i<=6;$i++){
  228. if ($value['sczl_bh'.$i]){
  229. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  230. $rows2[$key]['name'.$i] = $rows2[$key]['name1'];
  231. }else{
  232. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  233. }
  234. }else{
  235. $rows2[$key]['name'.$i] = '';
  236. }
  237. }
  238. $rows2[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  239. $rows2[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  240. $rows2[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  241. $rows2[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  242. $rows2[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  243. $rows2[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  244. $rows2[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  245. $rows2[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  246. $rows2[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  247. $rows2[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  248. $rows2[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  249. $rows2[$key]['拆片联拼系数'] = $value['拆片联拼系数'] == 0 ? '' : floatval($value['拆片联拼系数']);
  250. $rows2[$key]['拆片条小盒系数'] = $value['拆片条小盒系数'] == 0 ? '' : floatval($value['拆片条小盒系数']);
  251. $rows2[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  252. $rows2[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  253. $rows2[$key]['table_type']='db_sczl';
  254. unset($rows2[$key]['sczl_yjno']);
  255. unset($rows2[$key]['sczl_gxh']);
  256. unset($rows2[$key]['sczl_type']);
  257. }
  258. foreach ($rows1 as $key=>$value){
  259. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  260. $rows1[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  261. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  262. for ($i=2;$i<=6;$i++){
  263. if ($value['sczl_bh'.$i]){
  264. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  265. $rows1[$key]['name'.$i] = $rows1[$key]['name1'];
  266. }else{
  267. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  268. }
  269. }else{
  270. $rows1[$key]['name'.$i] = '';
  271. }
  272. }
  273. $rows1[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  274. $rows1[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  275. $rows1[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  276. $rows1[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  277. $rows1[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  278. $rows1[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  279. $rows1[$key]['sczl_来料少数'] = $value['sczl_来料少数'] == 0 ? '' : floatval($value['sczl_来料少数']);
  280. $rows1[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  281. $rows1[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  282. $rows1[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  283. $rows1[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  284. $rows1[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  285. $rows1[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  286. $rows1[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  287. $rows1[$key]['table_type']='设备_产量计酬';
  288. unset($rows1[$key]['sczl_yjno']);
  289. unset($rows1[$key]['sczl_gxh']);
  290. unset($rows1[$key]['sczl_type']);
  291. }
  292. $rows = array_merge($rows2,$rows1);
  293. $data = [
  294. 'total' => $total1+$total2,
  295. 'rows' => $rows,
  296. ];
  297. $this->success('成功',$data);
  298. }
  299. /**
  300. * 定位
  301. * @ApiMethod (GET)
  302. * @param string $gdbh 工单编号
  303. * @param string $cpmc 产品名称
  304. * @param string $page 页码
  305. * @param string $limit 数量
  306. */
  307. public function locate()
  308. {
  309. //get请求
  310. if(!$this->request->isGet()){
  311. $this->error('请求方式错误');
  312. }
  313. $req = $this->request->param();
  314. $page = 1;
  315. $limit = 15;
  316. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  317. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  318. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  319. $where = [
  320. 'a.sczl_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']
  321. ];
  322. $option = [
  323. 'sczl_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']
  324. ];
  325. //拆片联拼系数 拆片条小盒系数 日定额 千件工价 补产标准
  326. $rows1 = db()->table('设备_产量计酬')->alias('a')
  327. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  328. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  329. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  330. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  331. d.日定额, d.千件工价, d.补产标准,
  332. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  333. ->where($where)
  334. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  335. ->order('sczl_yjno asc, sczl_gxh asc, sczl_type asc, sczl_rq asc')
  336. ->page($page,$limit)
  337. ->select();
  338. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  339. //来料异常 日定额 千件工价 补产标准
  340. //制程废 次品
  341. $rows2 = db()->table('db_sczl')->alias('a')
  342. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  343. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  344. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  345. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  346. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  347. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  348. ->where($where)
  349. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  350. ->order('sczl_yjno asc, sczl_gxh asc, sczl_type asc, sczl_rq asc')
  351. ->page($page,$limit)
  352. ->select();
  353. $total2 = db()->table('db_sczl')->where($option)->count();
  354. }else{
  355. if (isset($req['cpmc']) && !empty($req['cpmc'])){
  356. //查询工单表
  357. $gd = db()->table('工单_基本资料')
  358. ->where('Gd_cpmc', 'LIKE', '%'.$req['cpmc'].'%')
  359. ->column('Gd_gdbh');
  360. $where = [
  361. 'a.sczl_gdbh'=>['in', $gd]
  362. ];
  363. $option = [
  364. 'sczl_gdbh'=>['in', $gd]
  365. ];
  366. //拆片联拼系数 拆片条小盒系数 日定额 千件工价 补产标准
  367. $rows1 = db()->table('设备_产量计酬')->alias('a')
  368. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  369. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  370. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  371. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  372. d.日定额, d.千件工价, d.补产标准,
  373. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  374. ->where($where)
  375. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  376. ->order('sczl_yjno asc, sczl_gxh asc, sczl_type asc, sczl_rq asc')
  377. ->page($page,$limit)
  378. ->select();
  379. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  380. //来料异常 日定额 千件工价 补产标准
  381. //制程废 次品
  382. $rows2 = db()->table('db_sczl')->alias('a')
  383. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  384. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  385. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  386. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  387. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  388. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  389. ->where($where)
  390. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  391. ->order('sczl_yjno asc, sczl_gxh asc, sczl_type asc, sczl_rq asc')
  392. ->page($page,$limit)
  393. ->select();
  394. $total2 = db()->table('db_sczl')->where($option)->count();
  395. }else{
  396. $this->error('参数错误');
  397. }
  398. }
  399. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  400. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  401. foreach ($rows2 as $key=>$value){
  402. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  403. $rows2[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  404. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  405. for ($i=2;$i<=6;$i++){
  406. if ($value['sczl_bh'.$i]){
  407. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  408. $rows2[$key]['name'.$i] = $rows2[$key]['name1'];
  409. }else{
  410. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  411. }
  412. }else{
  413. $rows2[$key]['name'.$i] = '';
  414. }
  415. }
  416. $rows2[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  417. $rows2[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  418. $rows2[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  419. $rows2[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  420. $rows2[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  421. $rows2[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  422. $rows2[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  423. $rows2[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  424. $rows2[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  425. $rows2[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  426. $rows2[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  427. $rows2[$key]['拆片联拼系数'] = $value['拆片联拼系数'] == 0 ? '' : floatval($value['拆片联拼系数']);
  428. $rows2[$key]['拆片条小盒系数'] = $value['拆片条小盒系数'] == 0 ? '' : floatval($value['拆片条小盒系数']);
  429. $rows2[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  430. $rows2[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  431. $rows2[$key]['table_type']='db_sczl';
  432. unset($rows2[$key]['sczl_yjno']);
  433. unset($rows2[$key]['sczl_gxh']);
  434. unset($rows2[$key]['sczl_type']);
  435. }
  436. foreach ($rows1 as $key=>$value){
  437. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  438. $rows1[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  439. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  440. for ($i=2;$i<=6;$i++){
  441. if ($value['sczl_bh'.$i]){
  442. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  443. $rows1[$key]['name'.$i] = $rows1[$key]['name1'];
  444. }else{
  445. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  446. }
  447. }else{
  448. $rows1[$key]['name'.$i] = '';
  449. }
  450. }
  451. $rows1[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  452. $rows1[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  453. $rows1[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  454. $rows1[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  455. $rows1[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  456. $rows1[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  457. $rows1[$key]['sczl_来料少数'] = $value['sczl_来料少数'] == 0 ? '' : floatval($value['sczl_来料少数']);
  458. $rows1[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  459. $rows1[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  460. $rows1[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  461. $rows1[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  462. $rows1[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  463. $rows1[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  464. $rows1[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  465. $rows1[$key]['table_type']='设备_产量计酬';
  466. unset($rows1[$key]['sczl_yjno']);
  467. unset($rows1[$key]['sczl_gxh']);
  468. unset($rows1[$key]['sczl_type']);
  469. }
  470. $rows = array_merge($rows1,$rows2);
  471. $data = [
  472. 'total' => $total1+$total2,
  473. 'rows' => $rows,
  474. ];
  475. $this->success('成功',$data);
  476. }
  477. /**
  478. * 获取机台生产日报表信息
  479. * @ApiMethod (GET)
  480. * @param string $UniqId UniqId
  481. */
  482. public function getInfo()
  483. {
  484. //get请求
  485. if(!$this->request->isGet()){
  486. $this->error('请求方式错误');
  487. }
  488. $req = $this->request->param();
  489. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  490. $UniqId = $req['UniqId'];
  491. }else{
  492. $this->error('参数错误');
  493. }
  494. $rows = db()->table('db_sczl')->alias('a')
  495. ->field('a.sczl_gdbh, rtrim(j.Gd_cpmc) as Gd_cpmc,
  496. a.sczl_yjno, rtrim(y.yj_yjmc) as yj_yjmc,
  497. rtrim(a.sczl_gxmc) as sczl_gxmc, a.sczl_gxh, rtrim(a.sczl_type) as sczl_type,
  498. LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh, a.sczl_bzdh,
  499. a.sczl_ms, a.sczl_ls, a.sczl_cl, a.sczl_fp as sczl_zcfp,
  500. a.sczl_装版总工时, a.sczl_装版工时, a.sczl_保养工时, a.sczl_异常停机工时,
  501. a.sczl_打样总工时, a.sczl_打样工时, a.sczl_设备运行工时,
  502. a.拆片联拼系数, a.拆片条小盒系数,
  503. a.sczl_dedh, a.sczl_工价系数, a.sczl_计产系数,
  504. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5,
  505. a.sczl_bh6, a.sczl_bh7, a.sczl_bh8, a.sczl_bh9, a.sczl_bh10,
  506. a.sczl_rate1, a.sczl_rate2, a.sczl_rate3, a.sczl_rate4, a.sczl_rate5,
  507. a.sczl_rate6, a.sczl_rate7, a.sczl_rate8, a.sczl_rate9, a.sczl_rate10
  508. ')
  509. ->where('a.UniqId', $UniqId)
  510. ->where('a.sczl_yjno = y.yj_yjno')
  511. ->join(['工单_基本资料'=>'j'],'a.sczl_gdbh = j.Gd_gdbh')
  512. ->join(['工单_印件资料'=>'y'],'a.sczl_gdbh = y.Yj_Gdbh')
  513. ->find();
  514. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  515. for($i=1;$i<=10;$i++){
  516. if(trim($rows['sczl_bh'.$i])!=''){
  517. $rows['sczl_bh'.$i.'_name'] = array_key_exists($rows['sczl_bh'.$i],$rs) ? trim($rs[$rows['sczl_bh'.$i]]) : '';
  518. }else{
  519. $rows['sczl_bh'.$i.'_name'] = '';
  520. }
  521. }
  522. $this->success('成功',$rows);
  523. }
  524. /**
  525. * 获取机台生产日报表信息
  526. * @ApiMethod (GET)
  527. * @param string $UniqId UniqId
  528. */
  529. public function add()
  530. {
  531. //get请求
  532. if(!$this->request->isGet()){
  533. $this->error('请求方式错误');
  534. }
  535. $req = $this->request->param();
  536. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  537. $UniqId = $req['UniqId'];
  538. }else{
  539. $this->error('参数错误');
  540. }
  541. $rows = db()->table('db_sczl')->alias('a')
  542. ->field('a.sczl_gdbh, rtrim(j.Gd_cpmc) as Gd_cpmc,
  543. a.sczl_yjno, rtrim(y.yj_yjmc) as yj_yjmc,
  544. rtrim(a.sczl_gxmc) as sczl_gxmc, a.sczl_gxh, rtrim(a.sczl_type) as sczl_type,
  545. LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh, a.sczl_bzdh,
  546. a.sczl_ms, a.sczl_ls, a.sczl_cl, a.sczl_fp as sczl_zcfp,
  547. a.sczl_装版总工时, a.sczl_装版工时, a.sczl_保养工时, a.sczl_异常停机工时,
  548. a.sczl_打样总工时, a.sczl_打样工时, a.sczl_设备运行工时,
  549. a.拆片联拼系数, a.拆片条小盒系数,
  550. a.sczl_dedh, a.sczl_工价系数, a.sczl_计产系数,
  551. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5,
  552. a.sczl_bh6, a.sczl_bh7, a.sczl_bh8, a.sczl_bh9, a.sczl_bh10,
  553. d.日定额, d.千件工价, d.补产标准
  554. ')
  555. ->where('a.UniqId', $UniqId)
  556. ->where('a.sczl_yjno = y.yj_yjno')
  557. ->join(['dic_lzde'=>'d'],'a.sczl_dedh = d.sys_bh')
  558. ->join(['工单_基本资料'=>'j'],'a.sczl_gdbh = j.Gd_gdbh')
  559. ->join(['工单_印件资料'=>'y'],'a.sczl_gdbh = y.Yj_Gdbh')
  560. ->find();
  561. $this->success('成功',$rows);
  562. }
  563. }