MachineProductionReport.php 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013
  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('设备_产量计酬')->cache(true,300)
  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')->cache(true,300)
  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('设备_产量计酬')->cache(true,300)
  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')->cache(true,300)
  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{
  77. $result[$date][$sysId] = 0;
  78. }
  79. }
  80. // 将count累加到对应的记录中
  81. $result[$date][$sysId] += $count;
  82. }
  83. foreach($rows as $key=>$value){
  84. if(array_key_exists($value['date'],$rows1)){
  85. $rows[$key]['counts'] = $value['counts']+$rows1[$value['date']];
  86. }else{
  87. $rows[$key]['counts'] = $value['counts'];
  88. }
  89. $rows[$key]['sys'] = $result[$value['date']];
  90. $rows[$key]['date'] = str_replace('-', '.', $rows[$key]['date']);
  91. }
  92. $this->success('成功',$rows);
  93. }
  94. /**
  95. * 通过工单获取机台生产日报表侧边栏
  96. * @ApiMethod (GET)
  97. */
  98. public function getTabByGdbh()
  99. {
  100. //get请求
  101. if(!$this->request->isGet()){
  102. $this->error('请求方式错误');
  103. }
  104. $sql = 'SELECT t1.`sczl_gdbh`,t2.`yj_yjmc`
  105. FROM (
  106. SELECT `sczl_gdbh`, sczl_yjno FROM `db_sczl`
  107. UNION
  108. SELECT `sczl_gdbh`, sczl_yjno FROM `设备_产量计酬`
  109. GROUP BY `sczl_gdbh`
  110. ) AS t1
  111. JOIN `工单_印件资料` AS t2 ON t1.`sczl_gdbh` = t2.`Yj_Gdbh`
  112. WHERE t1.sczl_yjno = t2.yj_Yjno
  113. ORDER BY t1.`sczl_gdbh` DESC
  114. LIMIT 65';
  115. $rows = db()->cache(true,300)->query($sql);
  116. $arr1 = db()->table('设备_产量计酬')->cache(true,300)
  117. ->field('sczl_gdbh,rtrim(sys_id) as sys_id')
  118. ->where('sczl_gdbh','>=',$rows[64]['sczl_gdbh'])
  119. ->select();
  120. $arr2 = db()->table('db_sczl')->cache(true,300)
  121. ->field('sczl_gdbh,rtrim(sys_id) as sys_id')
  122. ->where('sczl_gdbh','>=',$rows[64]['sczl_gdbh'])
  123. ->select();
  124. $arr = array_merge($arr1,$arr2);
  125. $brr = [];
  126. foreach($arr as $k=>$v){
  127. if(array_key_exists($v['sczl_gdbh'],$brr)){
  128. if(array_key_exists($v['sys_id'],$brr[$v['sczl_gdbh']])){
  129. $brr[$v['sczl_gdbh']][$v['sys_id']] += 1;
  130. }else{
  131. $brr[$v['sczl_gdbh']][$v['sys_id']] = 1;
  132. }
  133. }else{
  134. $brr[$v['sczl_gdbh']][$v['sys_id']] = 1;
  135. }
  136. }
  137. foreach($rows as $key=>$value){
  138. $rows[$key]['sys'] = $brr[$value['sczl_gdbh']];
  139. $rows[$key]['yj_yjmc'] = trim($value['yj_yjmc']);
  140. }
  141. $this->success('成功',$rows);
  142. }
  143. /**
  144. * 获取机台生产日报表列表
  145. * @ApiMethod (GET)
  146. * @param string $date 时间
  147. * @param string $sys_id 用户
  148. */
  149. public function getList()
  150. {
  151. //get请求
  152. if(!$this->request->isGet()){
  153. $this->error('请求方式错误');
  154. }
  155. $req = $this->request->param();
  156. if (!isset($req['date']) || empty($req['date'])) $this->error('参数缺失');
  157. $page = 1;
  158. $limit = 15;
  159. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  160. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  161. if(strpos($req['date'],'-')){
  162. $where = ['a.sys_rq'=>['like','%'.$req['date'].'%']];
  163. $option = ['sys_rq'=>['like','%'.$req['date'].'%']];
  164. }else{
  165. $where = ['a.sczl_gdbh'=>$req['date']];
  166. $option = ['sczl_gdbh'=>$req['date']];
  167. }
  168. if (isset($req['sys_id']) && !empty($req['sys_id'])){
  169. $where['a.sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  170. $option['sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  171. }
  172. //拆片联拼系数 拆片条小盒系数
  173. $rows1 = db()->table('设备_产量计酬')->alias('a')
  174. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  175. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  176. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  177. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  178. d.日定额, d.千件工价, d.补产标准,
  179. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  180. ->where($where)
  181. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  182. ->order('a.sys_id asc, a.sczl_num asc')
  183. // ->page($page,$limit)
  184. ->select();
  185. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  186. //来料异常
  187. $rows2 = db()->table('db_sczl')->alias('a')
  188. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  189. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  190. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  191. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  192. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  193. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  194. ->where($where)
  195. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  196. ->order('a.sys_id asc, a.sczl_num asc')
  197. // ->page($page,$limit)
  198. ->select();
  199. $total2 = db()->table('db_sczl')->where($option)->count();
  200. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  201. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  202. foreach ($rows2 as $key=>$value){
  203. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  204. $rows2[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  205. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  206. for ($i=2;$i<=6;$i++){
  207. if ($value['sczl_bh'.$i]){
  208. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  209. $rows2[$key]['name'.$i] = $rows2[$key]['name1'];
  210. }else{
  211. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  212. }
  213. }else{
  214. $rows2[$key]['name'.$i] = '';
  215. }
  216. }
  217. $rows2[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  218. $rows2[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  219. $rows2[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  220. $rows2[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  221. $rows2[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  222. $rows2[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  223. $rows2[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  224. $rows2[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  225. $rows2[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  226. $rows2[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  227. $rows2[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  228. $rows2[$key]['拆片联拼系数'] = $value['拆片联拼系数'] == 0 ? '' : floatval($value['拆片联拼系数']);
  229. $rows2[$key]['拆片条小盒系数'] = $value['拆片条小盒系数'] == 0 ? '' : floatval($value['拆片条小盒系数']);
  230. $rows2[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  231. $rows2[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  232. $rows2[$key]['table_type']='db_sczl';
  233. unset($rows2[$key]['sczl_yjno']);
  234. unset($rows2[$key]['sczl_gxh']);
  235. unset($rows2[$key]['sczl_type']);
  236. }
  237. foreach ($rows1 as $key=>$value){
  238. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  239. $rows1[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  240. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  241. for ($i=2;$i<=6;$i++){
  242. if ($value['sczl_bh'.$i]){
  243. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  244. $rows1[$key]['name'.$i] = $rows1[$key]['name1'];
  245. }else{
  246. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  247. }
  248. }else{
  249. $rows1[$key]['name'.$i] = '';
  250. }
  251. }
  252. $rows1[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  253. $rows1[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  254. $rows1[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  255. $rows1[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  256. $rows1[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  257. $rows1[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  258. $rows1[$key]['sczl_来料少数'] = $value['sczl_来料少数'] == 0 ? '' : floatval($value['sczl_来料少数']);
  259. $rows1[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  260. $rows1[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  261. $rows1[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  262. $rows1[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  263. $rows1[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  264. $rows1[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  265. $rows1[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  266. $rows1[$key]['table_type']='设备_产量计酬';
  267. unset($rows1[$key]['sczl_yjno']);
  268. unset($rows1[$key]['sczl_gxh']);
  269. unset($rows1[$key]['sczl_type']);
  270. }
  271. $rows = array_merge($rows2,$rows1);
  272. $data = [
  273. 'total' => $total1+$total2,
  274. 'rows' => $rows,
  275. ];
  276. $this->success('成功',$data);
  277. }
  278. /**
  279. * 定位
  280. * @ApiMethod (GET)
  281. * @param string $gdbh 工单编号
  282. * @param string $cpmc 产品名称
  283. * @param string $page 页码
  284. * @param string $limit 数量
  285. */
  286. public function locate()
  287. {
  288. //get请求
  289. if(!$this->request->isGet()){
  290. $this->error('请求方式错误');
  291. }
  292. $req = $this->request->param();
  293. $page = 1;
  294. $limit = 15;
  295. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  296. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  297. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  298. $where = [
  299. 'a.sczl_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']
  300. ];
  301. $option = [
  302. 'sczl_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']
  303. ];
  304. //拆片联拼系数 拆片条小盒系数
  305. $rows1 = db()->table('设备_产量计酬')->alias('a')->cache(true)
  306. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  307. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  308. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  309. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  310. d.日定额, d.千件工价, d.补产标准,
  311. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  312. ->where($where)
  313. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  314. ->order('a.sczl_yjno asc, a.sczl_gxh asc, a.sczl_type asc, a.sczl_rq asc')
  315. ->page($page,$limit)
  316. ->select();
  317. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  318. //来料异常
  319. $rows2 = db()->table('db_sczl')->alias('a')
  320. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  321. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  322. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  323. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  324. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  325. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  326. ->where($where)
  327. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  328. ->order('a.sczl_yjno asc, a.sczl_gxh asc, a.sczl_type asc, a.sczl_rq asc')
  329. ->page($page,$limit)
  330. ->select();
  331. $total2 = db()->table('db_sczl')->where($option)->count();
  332. }else{
  333. if (isset($req['cpmc']) && !empty($req['cpmc'])){
  334. //查询工单表
  335. $gd = db()->table('工单_基本资料')
  336. ->where('Gd_cpmc', 'LIKE', '%'.$req['cpmc'].'%')
  337. ->column('Gd_gdbh');
  338. $where = [
  339. 'a.sczl_gdbh'=>['in', $gd]
  340. ];
  341. $option = [
  342. 'sczl_gdbh'=>['in', $gd]
  343. ];
  344. //拆片联拼系数 拆片条小盒系数
  345. $rows1 = db()->table('设备_产量计酬')->alias('a')->cache(true)
  346. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  347. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数,
  348. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  349. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6, a.sczl_工价系数,
  350. d.日定额, d.千件工价, d.补产标准,
  351. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  352. ->where($where)
  353. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  354. ->order('a.sczl_yjno asc, a.sczl_gxh asc, a.sczl_type asc, a.sczl_rq asc')
  355. ->page($page,$limit)
  356. ->select();
  357. $total1 = db()->table('设备_产量计酬')->where($option)->count();
  358. //来料异常
  359. $rows2 = db()->table('db_sczl')->alias('a')
  360. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  361. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  362. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  363. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  364. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准,
  365. rtrim(a.sys_id) as sys_id, a.sys_rq, a.mod_rq, a.UniqId')
  366. ->where($where)
  367. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  368. ->order('a.sczl_yjno asc, a.sczl_gxh asc, a.sczl_type asc, a.sczl_rq asc')
  369. ->page($page,$limit)
  370. ->select();
  371. $total2 = db()->table('db_sczl')->where($option)->count();
  372. }else{
  373. $this->error('参数错误');
  374. }
  375. }
  376. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  377. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  378. foreach ($rows2 as $key=>$value){
  379. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  380. $rows2[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  381. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  382. for ($i=2;$i<=6;$i++){
  383. if ($value['sczl_bh'.$i]){
  384. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  385. $rows2[$key]['name'.$i] = $rows2[$key]['name1'];
  386. }else{
  387. $rows2[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  388. }
  389. }else{
  390. $rows2[$key]['name'.$i] = '';
  391. }
  392. }
  393. $rows2[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  394. $rows2[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  395. $rows2[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  396. $rows2[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  397. $rows2[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  398. $rows2[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  399. $rows2[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  400. $rows2[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  401. $rows2[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  402. $rows2[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  403. $rows2[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  404. $rows2[$key]['拆片联拼系数'] = $value['拆片联拼系数'] == 0 ? '' : floatval($value['拆片联拼系数']);
  405. $rows2[$key]['拆片条小盒系数'] = $value['拆片条小盒系数'] == 0 ? '' : floatval($value['拆片条小盒系数']);
  406. $rows2[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  407. $rows2[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  408. $rows2[$key]['table_type']='db_sczl';
  409. unset($rows2[$key]['sczl_yjno']);
  410. unset($rows2[$key]['sczl_gxh']);
  411. unset($rows2[$key]['sczl_type']);
  412. }
  413. foreach ($rows1 as $key=>$value){
  414. $rows[$key]['mod_rq'] = $value['mod_rq']=='1900-01-01 00:00:00' ? '' :$value['mod_rq'];
  415. $rows1[$key]['Gd_cpmc'] = array_key_exists($value['sczl_gdbh'],$gd) ? trim($gd[$value['sczl_gdbh']]) : '';
  416. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  417. for ($i=2;$i<=6;$i++){
  418. if ($value['sczl_bh'.$i]){
  419. if ($value['sczl_bh'.$i]==$value['sczl_bh1']){
  420. $rows1[$key]['name'.$i] = $rows1[$key]['name1'];
  421. }else{
  422. $rows1[$key]['name1'] = array_key_exists($value['sczl_bh1'],$rs) ? trim($rs[$value['sczl_bh1']]) : '';
  423. }
  424. }else{
  425. $rows1[$key]['name'.$i] = '';
  426. }
  427. }
  428. $rows1[$key]['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  429. $rows1[$key]['sczl_num'] = $value['sczl_num'] == 0 ? '' : $value['sczl_num'];
  430. $rows1[$key]['sczl_cl'] = $value['sczl_cl'] == 0 ? '' : floatval($value['sczl_cl']);
  431. $rows1[$key]['sczl_ms'] = $value['sczl_ms'] == 0 ? 1 : floatval($value['sczl_ms']);
  432. $rows1[$key]['sczl_zcfp'] = $value['sczl_zcfp'] == 0 ? '' : floatval($value['sczl_zcfp']);
  433. $rows1[$key]['sczl_zccp'] = $value['sczl_zccp'] == 0 ? '' : floatval($value['sczl_zccp']);
  434. $rows1[$key]['sczl_来料少数'] = $value['sczl_来料少数'] == 0 ? '' : floatval($value['sczl_来料少数']);
  435. $rows1[$key]['sczl_装版工时'] = $value['sczl_装版工时'] == 0 ? '' : floatval($value['sczl_装版工时']);
  436. $rows1[$key]['sczl_保养工时'] = $value['sczl_保养工时'] == 0 ? '' : floatval($value['sczl_保养工时']);
  437. $rows1[$key]['sczl_打样工时'] = $value['sczl_打样工时'] == 0 ? '' : floatval($value['sczl_打样工时']);
  438. $rows1[$key]['sczl_异常停机工时'] = $value['sczl_异常停机工时'] == 0 ? '' : floatval($value['sczl_异常停机工时']);
  439. $rows1[$key]['sczl_设备运行工时'] = $value['sczl_设备运行工时'] == 0 ? '' : floatval($value['sczl_设备运行工时']);
  440. $rows1[$key]['sczl_工价系数'] = $value['sczl_工价系数'] == 0 ? '' : floatval($value['sczl_工价系数']);
  441. $rows1[$key]['千件工价'] = $value['千件工价'] == 0 ? '' : floatval($value['千件工价']);
  442. $rows1[$key]['table_type']='设备_产量计酬';
  443. unset($rows1[$key]['sczl_yjno']);
  444. unset($rows1[$key]['sczl_gxh']);
  445. unset($rows1[$key]['sczl_type']);
  446. }
  447. $rows = array_merge($rows1,$rows2);
  448. $data = [
  449. 'total' => $total1+$total2,
  450. 'rows' => $rows,
  451. ];
  452. $this->success('成功',$data);
  453. }
  454. /**
  455. * 获取机台生产日报表信息
  456. * @ApiMethod (GET)
  457. * @param string $UniqId UniqId
  458. */
  459. public function getInfo()
  460. {
  461. //get请求
  462. if(!$this->request->isGet()){
  463. $this->error('请求方式错误');
  464. }
  465. $req = $this->request->param();
  466. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  467. $UniqId = $req['UniqId'];
  468. }else{
  469. $this->error('参数错误');
  470. }
  471. $rows = db()->table('db_sczl')->alias('a')
  472. ->field('a.sczl_gdbh, rtrim(j.Gd_cpmc) as Gd_cpmc,
  473. a.sczl_yjno, rtrim(y.yj_yjmc) as yj_yjmc,
  474. rtrim(a.sczl_gxmc) as sczl_gxmc, a.sczl_gxh, rtrim(a.sczl_type) as sczl_type,
  475. LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh, a.sczl_bzdh,
  476. a.sczl_ms, a.sczl_ls, a.sczl_cl, a.sczl_fp as sczl_zcfp,
  477. a.sczl_装版总工时, a.sczl_装版工时, a.sczl_保养工时, a.sczl_异常停机工时,
  478. a.sczl_打样总工时, a.sczl_打样工时, a.sczl_设备运行工时,
  479. a.拆片联拼系数, a.拆片条小盒系数,
  480. a.sczl_dedh, a.sczl_工价系数, a.sczl_计产系数,
  481. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5,
  482. a.sczl_bh6, a.sczl_bh7, a.sczl_bh8, a.sczl_bh9, a.sczl_bh10,
  483. a.sczl_rate1, a.sczl_rate2, a.sczl_rate3, a.sczl_rate4, a.sczl_rate5,
  484. a.sczl_rate6, a.sczl_rate7, a.sczl_rate8, a.sczl_rate9, a.sczl_rate10
  485. ')
  486. ->where('a.UniqId', $UniqId)
  487. ->where('a.sczl_yjno = y.yj_Yjno')
  488. ->join(['工单_基本资料'=>'j'],'a.sczl_gdbh = j.Gd_gdbh')
  489. ->join(['工单_印件资料'=>'y'],'a.sczl_gdbh = y.Yj_Gdbh')
  490. ->find();
  491. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  492. for($i=1;$i<=10;$i++){
  493. if(trim($rows['sczl_bh'.$i])!=''){
  494. $rows['sczl_bh'.$i.'_name'] = array_key_exists($rows['sczl_bh'.$i],$rs) ? trim($rs[$rows['sczl_bh'.$i]]) : '';
  495. }else{
  496. $rows['sczl_bh'.$i.'_name'] = '';
  497. }
  498. }
  499. $this->success('成功',$rows);
  500. }
  501. /**
  502. * 获取工单名称
  503. * @ApiMethod (GET)
  504. * @param string $gdbh 工单编号
  505. */
  506. public function getGdmc()
  507. {
  508. //get请求
  509. if(!$this->request->isGet()){
  510. $this->error('请求方式错误');
  511. }
  512. $req = $this->request->param();
  513. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  514. $gdbh = $req['gdbh'];
  515. }else{
  516. $this->error('参数错误');
  517. }
  518. $row = db()->table('工单_基本资料')
  519. ->field('rtrim(Gd_cpmc) as Gd_cpmc')
  520. ->where('Gd_gdbh',$gdbh)
  521. ->find();
  522. if (!$row) $this->error('失败');
  523. $this->success('成功',$row);
  524. }
  525. /**
  526. * 获取印件名称
  527. * @ApiMethod (GET)
  528. * @param string $gdbh 工单编号
  529. * @param string $yjno 印件号
  530. */
  531. public function getYjmc()
  532. {
  533. //get请求
  534. if(!$this->request->isGet()){
  535. $this->error('请求方式错误');
  536. }
  537. $req = $this->request->param();
  538. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  539. $gdbh = $req['gdbh'];
  540. }else{
  541. $this->error('参数错误');
  542. }
  543. if (isset($req['yjno']) && !empty($req['yjno'])){
  544. $yjno = $req['yjno'];
  545. }else{
  546. $this->error('参数错误');
  547. }
  548. $row = db()->table('工单_印件资料')
  549. ->field('rtrim(yj_yjmc) as yj_yjmc')
  550. ->where(['Yj_Gdbh'=>$gdbh,'yj_Yjno'=>$yjno])
  551. ->find();
  552. if (!$row) $this->error('失败');
  553. $this->success('成功',$row);
  554. }
  555. /**
  556. * 获取工序
  557. * @ApiMethod (GET)
  558. * @param string $gdbh 工单编号
  559. * @param string $yjno 印件号
  560. * @param string $keyword 关键词
  561. */
  562. public function getGx()
  563. {
  564. //get请求
  565. if(!$this->request->isGet()){
  566. $this->error('请求方式错误');
  567. }
  568. $req = $this->request->param();
  569. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  570. $gdbh = $req['gdbh'];
  571. }else{
  572. $this->error('参数错误');
  573. }
  574. if (isset($req['yjno']) && !empty($req['yjno'])){
  575. $yjno = $req['yjno'];
  576. }else{
  577. $this->error('参数错误');
  578. }
  579. if (isset($req['keyword']) && !empty($req['keyword'])){
  580. $keyword = $req['keyword'];
  581. }else{
  582. $keyword = '';
  583. }
  584. $rows = db()->table('工单_工艺资料')
  585. ->field('Gy0_gxh as sczl_gxh, rtrim(Gy0_gxmc) as sczl_type, rtrim(Add_gxmc) as Add_gxmc,Gy0_ls as sczl_ls, Gy0_ms as sczl_ms')
  586. ->where(['Gy0_gdbh'=>$gdbh,'Gy0_yjno'=>$yjno])
  587. ->where('Gy0_gxh|Gy0_gxmc|Add_gxmc','like','%'.$keyword.'%')
  588. ->select();
  589. foreach ($rows as $key=>$value) {
  590. if($value['Add_gxmc'] != ''){
  591. $rows[$key]['sczl_gxmc'] = sprintf("%02d", $value['sczl_gxh']).'-'.$value['Add_gxmc'];
  592. }else{
  593. $rows[$key]['sczl_gxmc'] = sprintf("%02d", $value['sczl_gxh']).'-'.$value['sczl_type'];
  594. }
  595. unset($rows[$key]['Add_gxmc']);
  596. }
  597. if (!$rows) $this->error('失败');
  598. $this->success('成功',$rows);
  599. }
  600. /**
  601. * 查询定额代号
  602. * @ApiMethod (GET)
  603. */
  604. public function getDedh()
  605. {
  606. //get请求
  607. if(!$this->request->isGet()){
  608. $this->error('请求方式错误');
  609. }
  610. $row = db()->table('dic_lzde')
  611. ->field('Key_, sys_bh, rtrim(sys_mc) as sys_mc')
  612. ->where('sys_mc','人工作业计件定额')
  613. ->find();
  614. $rows = db()->table('dic_lzde')
  615. ->field('Key_, sys_bh, rtrim(sys_mc) as sys_mc')
  616. ->where('Parent',$row['Key_'])
  617. ->order('sys_bh asc')
  618. ->select();
  619. foreach ($rows as $key=>$value){
  620. $bool = db()->table('dic_lzde')
  621. ->field('Key_,sys_bh, rtrim(sys_mc) as sys_mc')
  622. ->where('Parent',$value['Key_'])
  623. ->order('sys_bh asc')
  624. ->select();
  625. if ($bool){
  626. foreach ($bool as $k=>$v){
  627. $bool1 = db()->table('dic_lzde')
  628. ->field('sys_bh, rtrim(sys_mc) as sys_mc')
  629. ->where('Parent',$v['Key_'])
  630. ->order('sys_bh asc')
  631. ->select();
  632. if ($bool1){
  633. $bool[$k]['bh_mc'] = $bool1;
  634. }
  635. }
  636. $rows[$key]['bh_mc'] = $bool;
  637. }
  638. }
  639. $row['bh_mc'] = $rows;
  640. $this->success('成功',$row);
  641. }
  642. /**
  643. * 新增
  644. * @ApiMethod (POST)
  645. * @param string
  646. */
  647. public function add()
  648. {
  649. if(!$this->request->isPost()){
  650. $this->error('请求方式错误');
  651. }
  652. $req = $this->request->param();
  653. $arr = [
  654. 'sys_id','sczl_gdbh','sczl_yjno',
  655. 'sczl_gxmc','sczl_gxh','sczl_type',
  656. 'sczl_rq','sczl_jtbh','sczl_bzdh',
  657. 'sczl_ms','sczl_ls','sczl_cl','sczl_fp',
  658. 'sczl_装版总工时','sczl_装版工时','sczl_保养工时','sczl_异常停机工时',
  659. 'sczl_打样总工时','sczl_打样工时','sczl_设备运行工时',
  660. '拆片联拼系数','拆片条小盒系数','sczl_dedh','sczl_工价系数','sczl_计产系数',
  661. 'sczl_bh1','sczl_bh2','sczl_bh3','sczl_bh4','sczl_bh5',
  662. 'sczl_bh6','sczl_bh7','sczl_bh8','sczl_bh9','sczl_bh10',
  663. 'sczl_rate1','sczl_rate2','sczl_rate3','sczl_rate4','sczl_rate5',
  664. 'sczl_rate6','sczl_rate7','sczl_rate8','sczl_rate9','sczl_rate10'
  665. ];
  666. $data = [];
  667. foreach ($arr as $key => $value){
  668. if (!(isset($req[$value]))){
  669. $this->error('参数错误',$value,$key+1);
  670. }
  671. $data[$value] = $req[$value];
  672. }
  673. $data['sys_rq'] = date('Y-m-d H:i:s');
  674. //查询UniqId
  675. $UniqId = db()->table('db_sczl')->max('UniqId');
  676. $data['UniqId'] = $UniqId+1;
  677. //开启事务
  678. db()->startTrans();
  679. try{
  680. $sql = db()->table('db_sczl')->fetchSql(true)->insert($data);
  681. $bool = db()->query($sql);
  682. // 提交事务
  683. db()->commit();
  684. } catch (\Exception $e) {
  685. // 回滚事务
  686. db()->rollback();
  687. $this->error($e->getMessage());
  688. }
  689. if($bool===false) $this->error('失败');
  690. $this->success('成功');
  691. }
  692. /**
  693. * 新增
  694. * @ApiMethod (POST)
  695. * @param string
  696. */
  697. public function edit()
  698. {
  699. if(!$this->request->isPost()){
  700. $this->error('请求方式错误');
  701. }
  702. $req = $this->request->param();
  703. $arr = [
  704. 'UniqId','sczl_gdbh','sczl_yjno',
  705. 'sczl_gxmc','sczl_gxh','sczl_type',
  706. 'sczl_rq','sczl_jtbh','sczl_bzdh',
  707. 'sczl_ms','sczl_ls','sczl_cl','sczl_fp',
  708. 'sczl_装版总工时','sczl_装版工时','sczl_保养工时','sczl_异常停机工时',
  709. 'sczl_打样总工时','sczl_打样工时','sczl_设备运行工时',
  710. '拆片联拼系数','拆片条小盒系数','sczl_dedh','sczl_工价系数','sczl_计产系数',
  711. 'sczl_bh1','sczl_bh2','sczl_bh3','sczl_bh4','sczl_bh5',
  712. 'sczl_bh6','sczl_bh7','sczl_bh8','sczl_bh9','sczl_bh10',
  713. 'sczl_rate1','sczl_rate2','sczl_rate3','sczl_rate4','sczl_rate5',
  714. 'sczl_rate6','sczl_rate7','sczl_rate8','sczl_rate9','sczl_rate10'
  715. ];
  716. $data = [];
  717. foreach ($arr as $key => $value){
  718. if (!(isset($req[$value]))){
  719. continue;
  720. }
  721. $data[$value] = $req[$value];
  722. }
  723. $data['mod_rq'] = date('Y-m-d H:i:s');
  724. //开启事务
  725. db()->startTrans();
  726. try{
  727. $sql = db()->table('db_sczl')->where('UniqId',$req['UniqId'])->fetchSql(true)->update($data);
  728. $bool = db()->query($sql);
  729. // 提交事务
  730. db()->commit();
  731. } catch (\Exception $e) {
  732. // 回滚事务
  733. db()->rollback();
  734. $this->error($e->getMessage());
  735. }
  736. if($bool===false) $this->error('失败');
  737. $this->success('成功');
  738. }
  739. /**
  740. * 修改
  741. * @ApiMethod (POST)
  742. * @param string 'UniqId'
  743. */
  744. public function del()
  745. {
  746. if(!$this->request->isPost()){
  747. $this->error('请求方式错误');
  748. }
  749. $req = $this->request->param();
  750. if (!(isset($req['UniqId']) && trim($req['UniqId'])!='')){
  751. $this->error('参数错误','UniqId',100);
  752. }
  753. //开启事务
  754. db()->startTrans();
  755. try{
  756. $bool = db()->table('db_sczl')->where('UniqId',$req['UniqId'])->delete();
  757. // 提交事务
  758. db()->commit();
  759. } catch (\Exception $e) {
  760. // 回滚事务
  761. db()->rollback();
  762. $this->error($e->getMessage());
  763. }
  764. if($bool===false) $this->error('失败');
  765. $this->success('成功');
  766. }
  767. /**
  768. * 工序汇总导出
  769. * @ApiMethod (GET)
  770. * @param string date
  771. * @param string sys_id
  772. * @param array fields
  773. */
  774. public function export(){
  775. if(!$this->request->isGet()){
  776. $this->error('请求方式错误');
  777. }
  778. $req = $this->request->param();
  779. $where = [];
  780. if (!isset($req['date']) || empty($req['date'])) $this->error('参数缺失');
  781. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  782. $this->error('参数错误','fields',100);
  783. }
  784. if(strpos($req['date'],'-')){
  785. $where = ['a.sys_rq'=>['like','%'.$req['date'].'%']];
  786. }else{
  787. $where = ['a.sczl_gdbh'=>$req['date']];
  788. }
  789. if (isset($req['sys_id']) && !empty($req['sys_id'])){
  790. $where['a.sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  791. }
  792. $arr = [
  793. 'sczl_gdbh' =>['工单编号'],
  794. 'Gd_cpmc' =>['产品名称'],
  795. 'jyno_gxmc' =>['印件及工序'],
  796. 'sczl_rq' =>['生产日期'],
  797. 'sczl_jtbh' =>['机台'],
  798. 'sczl_bzdh' =>['班组'],
  799. 'sczl_num' =>['流程单'],
  800. 'sczl_cl' =>['车头产量'],
  801. 'sczl_ms' =>['色度数'],
  802. 'sczl_zcfp' =>['制程废'],
  803. 'sczl_zccp' =>['次品'],
  804. 'sczl_来料异常' =>['来料异常'],
  805. 'sczl_装版工时' =>['装版工时'],
  806. 'sczl_保养工时' =>['保养工时'],
  807. 'sczl_打样工时' =>['打样工时'],
  808. 'sczl_异常停机工时' =>['异常停机工时'],
  809. 'sczl_设备运行工时' =>['设备运行工时'],
  810. 'sczl_bh1' =>['组员编号1'],
  811. 'sczl_bh1_name' =>['组员姓名1'],
  812. 'sczl_bh2' =>['组员编号2'],
  813. 'sczl_bh2_name' =>['组员姓名2'],
  814. 'sczl_bh3' =>['组员编号3'],
  815. 'sczl_bh3_name' =>['组员姓名3'],
  816. 'sczl_bh4' =>['组员编号4'],
  817. 'sczl_bh4_name' =>['组员姓名4'],
  818. 'sczl_bh5' =>['组员编号5'],
  819. 'sczl_bh5_name' =>['组员姓名5'],
  820. 'sczl_bh6' =>['组员编号6'],
  821. 'sczl_bh6_name' =>['组员姓名6'],
  822. '拆片联拼系数' =>['拆片联拼系数'],
  823. '拆片条小盒系数' =>['拆片条小盒系数'],
  824. 'sczl_工价系数' =>['工价系数'],
  825. '日定额' =>['日定额'],
  826. '千件工价' =>['千件工价'],
  827. '补产标准' =>['补产标准'],
  828. ];
  829. $data[0] = [];
  830. foreach ($req['fields'] as $k=>$v){
  831. if(array_key_exists($v,$arr)){
  832. array_push($data[0],$arr[$v][0]);
  833. }
  834. }
  835. //拆片联拼系数 拆片条小盒系数
  836. $rows1 = db()->table('设备_产量计酬')->alias('a')->cache(true)
  837. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  838. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_zcfp, a.sczl_zccp, a.sczl_来料少数 as sczl_来料异常,
  839. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  840. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  841. a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准
  842. ')
  843. ->where($where)
  844. ->join(['dic_lzde'=>'d'],'a.sczl_dedh = d.sys_bh')
  845. ->order('a.sys_id asc, a.sczl_num asc')
  846. ->select();
  847. $rows2 = db()->table('db_sczl')->alias('a')
  848. ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_type, LEFT(a.sczl_rq, 10) as sczl_rq, a.sczl_jtbh,
  849. a.sczl_bzdh, a.sczl_num, a.sczl_cl, a.sczl_ms, a.sczl_fp as sczl_zcfp, a.sczl_cp as sczl_zccp,
  850. a.sczl_装版工时, a.sczl_保养工时, a.sczl_打样工时, a.sczl_异常停机工时, a.sczl_设备运行工时,
  851. a.sczl_bh1, a.sczl_bh2, a.sczl_bh3, a.sczl_bh4, a.sczl_bh5, a.sczl_bh6,
  852. a.拆片联拼系数, a.拆片条小盒系数, a.sczl_工价系数, d.日定额, d.千件工价, d.补产标准
  853. ')
  854. ->where($where)
  855. ->join(['dic_lzde'=>'d'],'a.sczl_dedh=d.sys_bh')
  856. ->order('a.sys_id asc, a.sczl_num asc')
  857. ->select();
  858. $gd = db()->table('工单_基本资料')->column('Gd_gdbh, Gd_cpmc');
  859. $rs = db()->table('人事_基本资料')->column('员工编号, 员工姓名');
  860. foreach ($rows2 as $key=>$value){
  861. $subArray = [];
  862. foreach ($arr as $k=>$v){
  863. if($k=='sczl_来料异常'){
  864. $subArray[$k] = '';
  865. }else if($k=='Gd_cpmc'){
  866. if(trim($value['sczl_gdbh']) != '' && array_key_exists($value['sczl_gdbh'],$gd)){
  867. $subArray[$k] = trim($gd[$value['sczl_gdbh']]);
  868. }else{
  869. $subArray[$k] = '';
  870. }
  871. }else if($k=='sczl_bh1_name' || $k=='sczl_bh2_name' || $k=='sczl_bh3_name' || $k=='sczl_bh4_name' || $k=='sczl_bh5_name' || $k=='sczl_bh6_name'){
  872. if(trim($value[substr($k,0,8)]) != '' && array_key_exists($value[substr($k,0,8)],$rs)){
  873. $subArray[$k] = trim($rs[$value[substr($k,0,8)]]);
  874. }else{
  875. $subArray[$k] = '';
  876. }
  877. }else if($k=='sczl_num' || $k=='sczl_cl' || $k=='sczl_zcfp' || $k=='sczl_zccp' || $k=='sczl_装版工时' || $k=='sczl_保养工时' || $k=='sczl_打样工时' ||
  878. $k=='sczl_异常停机工时' || $k=='sczl_设备运行工时' || $k=='拆片联拼系数' || $k=='拆片条小盒系数' || $k=='sczl_工价系数' || $k=='千件工价'){
  879. $subArray[$k] = $value[$k] == 0 ? '' : floatval($value[$k]);
  880. }else if($k=='sczl_ms'){
  881. $subArray[$k] = $value[$k] == 0 ? 1 : floatval($value[$k]);
  882. }else if($k=='jyno_gxmc'){
  883. $subArray['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  884. }else{
  885. $subArray[$k] = $rows2[$key][$k];
  886. }
  887. }
  888. array_push($data,$subArray);
  889. }
  890. foreach ($rows1 as $key=>$value){
  891. $subArray = [];
  892. foreach ($arr as $k=>$v){
  893. if($k=='拆片联拼系数' || $k=='拆片条小盒系数'){
  894. $subArray[$k] = '';
  895. }else if($k=='Gd_cpmc'){
  896. if(trim($value['sczl_gdbh']) != '' && array_key_exists($value['sczl_gdbh'],$gd)){
  897. $subArray[$k] = trim($gd[$value['sczl_gdbh']]);
  898. }else{
  899. $subArray[$k] = '';
  900. }
  901. }else if($k=='sczl_bh1_name' || $k=='sczl_bh2_name' || $k=='sczl_bh3_name' || $k=='sczl_bh4_name' || $k=='sczl_bh5_name' || $k=='sczl_bh6_name'){
  902. if(trim($value[substr($k,0,8)]) != '' && array_key_exists($value[substr($k,0,8)],$rs)){
  903. $subArray[$k] = trim($rs[$value[substr($k,0,8)]]);
  904. }else{
  905. $subArray[$k] = '';
  906. }
  907. }else if($k=='sczl_num' || $k=='sczl_cl' || $k=='sczl_zcfp' || $k=='sczl_zccp' || $k=='sczl_来料异常' || $k=='sczl_装版工时' ||
  908. $k=='sczl_保养工时' || $k=='sczl_打样工时' || $k=='sczl_异常停机工时' || $k=='sczl_设备运行工时' || $k=='sczl_工价系数' || $k=='千件工价'){
  909. $subArray[$k] = $value[$k] == 0 ? '' : floatval($value[$k]);
  910. }else if($k=='sczl_ms'){
  911. $subArray[$k] = $value[$k] == 0 ? 1 : floatval($value[$k]);
  912. }else if($k=='jyno_gxmc'){
  913. $subArray['jyno_gxmc'] = sprintf("%02d", $value['sczl_yjno']).'-'.sprintf("%02d", $value['sczl_gxh']).'-->'.trim($value['sczl_type']);
  914. }else{
  915. $subArray[$k] = $rows1[$key][$k];
  916. }
  917. }
  918. array_push($data,$subArray);
  919. }
  920. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  921. }
  922. }