FinishedProductWarehousing.php 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. /**
  5. * 成品入仓维护接口
  6. */
  7. class FinishedProductWarehousing 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(50)
  34. ->select();
  35. $num = db()->table('成品入仓')
  36. ->where('sys_rq','>=',$rows[49]['date'])
  37. ->count();
  38. $arr = db()->table('成品入仓')
  39. ->field('LEFT(sys_rq, 10) as date, rtrim(sys_id) as sys_id, COUNT(sys_id) as count')
  40. ->where('sys_rq','>=',$rows[49]['date'])
  41. ->group('date, sys_id')
  42. ->limit($num)
  43. ->select();
  44. foreach($rows as $key=>$value){
  45. $rows[$key]['sys'] = [];
  46. foreach($arr as $k=>$v){
  47. if($value['date'] == $v['date']){
  48. unset($v['date']);
  49. array_push($rows[$key]['sys'],$v);
  50. unset($arr[$k]);
  51. }
  52. }
  53. $rows[$key]['date'] = str_replace('-', '.', $rows[$key]['date']);
  54. }
  55. $this->success('成功',$rows);
  56. }
  57. /**
  58. * 侧边栏
  59. * @ApiMethod (GET)
  60. */
  61. public function getTabByGdbh()
  62. {
  63. //get请求
  64. if(!$this->request->isGet()){
  65. $this->error('请求方式错误');
  66. }
  67. $num = db()->table('成品入仓')->count();
  68. $rows = db()->table('成品入仓')
  69. ->field('jjcp_gdbh, rtrim(jjcp_cpdh) as jjcp_cpdh, LEFT(Sys_rq, 10) as Sys_rq')
  70. ->order('Sys_rq desc')
  71. ->limit($num)
  72. ->select();
  73. $num = db()->table('工单_基本资料')->count();
  74. $arr = db()->table('工单_基本资料')
  75. ->limit($num)
  76. ->column('CONCAT(Gd_gdbh, "-", rtrim(Gd_cpdh)) AS gdcp, CONCAT(rtrim(Gd_khdh), " 【", rtrim(Gd_khmc)) AS kh');
  77. $data = [];
  78. foreach ($rows as $value) {
  79. $key = $value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'];
  80. if (isset($arr[$key]) && !isset($data[$arr[$key]])) {
  81. $data[$arr[$key]] = $value['Sys_rq'];
  82. }
  83. }
  84. // 对键进行升序排序
  85. uksort($data, function($a, $b) use ($data) {
  86. if ($data[$a] == $data[$b]) {
  87. return ($a > $b) ? 1 : -1; // 在值相同的情况下,根据键进行升序排列
  88. }
  89. return ($data[$a] < $data[$b]) ? 1 : -1;
  90. });
  91. $this->success('成功',$data);
  92. }
  93. /**
  94. * 列表
  95. * @ApiMethod (GET)
  96. * @param string $date 时间
  97. * @param string $sys_id 用户
  98. */
  99. public function getList()
  100. {
  101. //get请求
  102. if(!$this->request->isGet()){
  103. $this->error('请求方式错误');
  104. }
  105. $req = $this->request->param();
  106. if (!isset($req['date'])) $this->error('参数缺失');
  107. $page = 1;
  108. $limit = 15;
  109. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  110. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  111. if(strpos($req['date'],'-')){
  112. $where = ['c.Sys_rq'=>['like','%'.$req['date'].'%']];
  113. $option = ['Sys_rq'=>['like','%'.$req['date'].'%']];
  114. }else{
  115. $where = [];
  116. $option = [];
  117. }
  118. if (isset($req['sys_id']) && !empty($req['sys_id'])){
  119. $where['c.Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  120. $option['Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  121. }
  122. //客户编号
  123. $rows = db()->table('成品入仓')->alias('c')
  124. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  125. rtrim(c.jjcp_num) as jjcp_num, c.jjcp_gdbh,
  126. c.jjcp_yjno, c.jjcp_sl, g.订单数量, rtrim(c.jjcp_dw) as jjcp_dw, LEFT(c.jjcp_sj, 10) as jjcp_sj,
  127. rtrim(c.jjcp_smb) as jjcp_smb, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  128. rtrim(c.成品编码) as 成品编码, rtrim(c.成品名称) as 成品名称,
  129. rtrim(c.客户料号) as 客户料号, rtrim(c.jjcp_desc) as jjcp_desc, LEFT(c.成品编码,4) as 客户编号, rtrim(g.Gd_客户名称) as Gd_客户名称,
  130. rtrim(c.机型备注) as 机型备注, rtrim(c.Sys_id) as Sys_id, c.Sys_rq, c.Mod_rq, c.UniqId')
  131. ->where($where)
  132. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  133. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  134. ->order('c.UniqId desc')
  135. ->page($page,$limit)
  136. ->select();
  137. $total = db()->table('成品入仓')->where($option)->count();
  138. foreach ($rows as $key=>$value) {
  139. $row = db()->table('成品入仓')
  140. ->field('LEFT(Sys_rq, 10) as Sys_rq,jjcp_sl')
  141. ->where(['jjcp_gdbh'=>$value['jjcp_gdbh'], 'jjcp_cpdh'=>$value['jjcp_cpdh']])
  142. ->order('Sys_rq desc')
  143. ->select();
  144. $rows[$key]['jjcp_sls'] = 0;
  145. foreach ($row as $k=>$v) {
  146. $rows[$key]['jjcp_sls'] += $v['jjcp_sl'];
  147. }
  148. if ($value['订单数量']!=0){
  149. $rows[$key]['完成率'] = number_format($rows[$key]['jjcp_sls']/$value['订单数量']/100,2);
  150. }else{
  151. $rows[$key]['完成率'] = '';
  152. }
  153. $rows[$key]['订单数量'] = floatval($value['订单数量']*10000);
  154. $rows[$key]['最近入仓日期'] = $row[0]['Sys_rq'];
  155. $rows[$key]['Mod_rq'] = $value['Mod_rq']=='1900-01-01 00:00:00' ? '' :$value['Mod_rq'];
  156. }
  157. $data = [
  158. 'total' => $total,
  159. 'rows' => $rows,
  160. ];
  161. $this->success('成功',$data);
  162. }
  163. /**
  164. * 定位
  165. * @ApiMethod (GET)
  166. * @param string $gdbh 工单编号
  167. * @param string $cpmc 产品名称
  168. * @param string $page 页码
  169. * @param string $limit 数量
  170. */
  171. public function locate()
  172. {
  173. //get请求
  174. if(!$this->request->isGet()){
  175. $this->error('请求方式错误');
  176. }
  177. $req = $this->request->param();
  178. $page = 1;
  179. $limit = 15;
  180. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  181. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  182. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  183. $where = ['c.jjcp_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']];
  184. $option = ['jjcp_gdbh'=>[ 'like', '%' . $req['gdbh'] . '%']];
  185. //客户编号
  186. $rows = db()->table('成品入仓')->alias('c')
  187. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  188. rtrim(c.jjcp_num) as jjcp_num, c.jjcp_gdbh,
  189. c.jjcp_yjno, c.jjcp_sl, g.订单数量, rtrim(c.jjcp_dw) as jjcp_dw, LEFT(c.jjcp_sj, 10) as jjcp_sj,
  190. rtrim(c.jjcp_smb) as jjcp_smb, rtrim(y.yj_Yjdh) as yj_Yjdh, rtrim(y.yj_yjmc) as yj_yjmc,
  191. rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  192. rtrim(c.客户料号) as 客户料号, rtrim(c.jjcp_desc) as jjcp_desc, LEFT(c.成品编码,4) as 客户编号, rtrim(g.Gd_客户名称) as Gd_客户名称,
  193. rtrim(c.机型备注) as 机型备注, rtrim(c.Sys_id) as Sys_id, c.Sys_rq, c.Mod_rq, c.UniqId')
  194. ->where($where)
  195. ->where('y.yj_Yjno=c.jjcp_yjno')
  196. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  197. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  198. ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
  199. ->order('c.UniqId desc')
  200. ->page($page,$limit)
  201. ->select();
  202. $total = db()->table('成品入仓')->where($option)->count();
  203. }else{
  204. if (isset($req['cpmc']) && !empty($req['cpmc'])){
  205. //查询工单表
  206. $gd = db()->table('工单_基本资料')
  207. ->where('Gd_cpmc', 'LIKE', '%'.$req['cpmc'].'%')
  208. ->column('Gd_gdbh');
  209. $where = ['c.jjcp_gdbh'=>['in', $gd]];
  210. $option = ['jjcp_gdbh'=>['in', $gd]];
  211. //客户编号
  212. $rows = db()->table('成品入仓')->alias('c')
  213. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  214. rtrim(c.jjcp_num) as jjcp_num, c.jjcp_gdbh,
  215. c.jjcp_yjno, c.jjcp_sl, g.订单数量, rtrim(c.jjcp_dw) as jjcp_dw, LEFT(c.jjcp_sj, 10) as jjcp_sj,
  216. rtrim(c.jjcp_smb) as jjcp_smb, rtrim(y.yj_Yjdh) as yj_Yjdh, rtrim(y.yj_yjmc) as yj_yjmc,
  217. rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  218. rtrim(c.客户料号) as 客户料号, rtrim(c.jjcp_desc) as jjcp_desc, LEFT(c.成品编码,4) as 客户编号, rtrim(g.Gd_客户名称) as Gd_客户名称,
  219. rtrim(c.机型备注) as 机型备注, rtrim(c.Sys_id) as Sys_id, c.Sys_rq, c.Mod_rq, c.UniqId')
  220. ->where($where)
  221. ->where('y.yj_Yjno=c.jjcp_yjno')
  222. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  223. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  224. ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
  225. ->order('c.UniqId desc')
  226. ->page($page,$limit)
  227. ->select();
  228. $total = db()->table('成品入仓')->where($option)->count();
  229. }else{
  230. $this->error('参数错误');
  231. }
  232. }
  233. foreach ($rows as $key=>$value) {
  234. $row = db()->table('成品入仓')
  235. ->field('LEFT(Sys_rq, 10) as Sys_rq,jjcp_sl')
  236. ->where(['jjcp_gdbh'=>$value['jjcp_gdbh'], 'jjcp_cpdh'=>$value['jjcp_cpdh']])
  237. ->order('Sys_rq desc')
  238. ->select();
  239. $rows[$key]['jjcp_sls'] = 0;
  240. foreach ($row as $k=>$v) {
  241. $rows[$key]['jjcp_sls'] += $v['jjcp_sl'];
  242. }
  243. if ($value['订单数量']!=0){
  244. $rows[$key]['完成率'] = number_format($rows[$key]['jjcp_sls']/$value['订单数量']/100,2);
  245. }else{
  246. $rows[$key]['完成率'] = '';
  247. }
  248. $rows[$key]['订单数量'] = floatval($value['订单数量']*10000);
  249. $rows[$key]['最近入仓日期'] = $row[0]['Sys_rq'];
  250. $rows[$key]['Mod_rq'] = $value['Mod_rq']=='1900-01-01 00:00:00' ? '' :$value['Mod_rq'];
  251. }
  252. $data = [
  253. 'total' => $total,
  254. 'rows' => $rows,
  255. ];
  256. $this->success('成功',$data);
  257. }
  258. /**
  259. * 获取信息
  260. * @ApiMethod (GET)
  261. * @param string $UniqId UniqId
  262. */
  263. public function getInfo()
  264. {
  265. //get请求
  266. if(!$this->request->isGet()){
  267. $this->error('请求方式错误');
  268. }
  269. $req = $this->request->param();
  270. if (isset($req['UniqId']) && !empty($req['UniqId'])){
  271. $UniqId = $req['UniqId'];
  272. }else{
  273. $this->error('参数错误');
  274. }
  275. //客户编号
  276. $rows = db()->table('成品入仓')->alias('c')
  277. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  278. rtrim(c.jjcp_num) as jjcp_num,
  279. c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.订单编号) as 订单编号,
  280. rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  281. rtrim(c.成品编码) as 成品编码, rtrim(c.成品名称) as 成品名称,
  282. rtrim(c.客户料号) as 客户料号,
  283. rtrim(c.jjcp_smb) as jjcp_smb, LEFT(c.jjcp_sj, 10) as jjcp_sj,
  284. c.jjcp_sl, rtrim(c.jjcp_dw) as jjcp_dw,
  285. g.订单数量*10000 as 订单数量, rtrim(c.机型备注) as 机型备注, rtrim(c.jjcp_desc) as jjcp_desc,
  286. rtrim(c.Sys_id) as Sys_id, c.Sys_rq, c.Mod_rq, c.UniqId')
  287. ->where('c.UniqId',$UniqId)
  288. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  289. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  290. ->find();
  291. $rows['jjcp_sls'] = db()->table('成品入仓')
  292. ->where(['jjcp_gdbh'=>$rows['jjcp_gdbh'], 'jjcp_cpdh'=>$rows['jjcp_cpdh']])
  293. ->sum('jjcp_sl');
  294. $this->success('成功',$rows);
  295. }
  296. /**
  297. * 获取仓库信息
  298. * @ApiMethod (GET)
  299. * @param string keyword 关键词
  300. */
  301. public function getCk()
  302. {
  303. //get请求
  304. if(!$this->request->isGet()){
  305. $this->error('请求方式错误');
  306. }
  307. $req = $this->request->param();
  308. $key_word = '';
  309. if (isset($req['key_word']) && !empty($req['key_word'])){
  310. $key_word = $req['key_word'];
  311. }
  312. $rs = db()->table('物料_仓库信息')
  313. ->field('rtrim(编号) as 编号, rtrim(名称) as 名称')
  314. ->where('编号|名称','like','%'.$key_word.'%')
  315. ->where('名称','in',['面材仓库','主要产成品'])
  316. ->select();
  317. $this->success('成功',$rs);
  318. }
  319. /**
  320. * 查询印件工序及产品名称
  321. * @ApiMethod (GET)
  322. * @param string $gdbh 工单编号
  323. */
  324. public function getGd()
  325. {
  326. //get请求
  327. if(!$this->request->isGet()){
  328. $this->error('请求方式错误');
  329. }
  330. $req = $this->request->param();
  331. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  332. $gdbh = $req['gdbh'];
  333. }else{
  334. $this->error('参数错误');
  335. }
  336. $rows = db()->table('工单_基本资料')->alias('g')
  337. ->field('g.Gd_gdbh, j.yj_yjno, rtrim(g.销售订单号) as 销售订单号, rtrim(j.yj_Yjdh) as yj_Yjdh, rtrim(j.yj_yjmc) as yj_yjmc, rtrim(g.成品代号) as 成品代号, rtrim(g.成品名称) as 成品名称, rtrim(g.客户料号) as 客户料号')
  338. ->where(['g.Gd_gdbh'=>$gdbh])
  339. ->join(['产品_印件资料'=>'j'],'g.Gd_cpdh=j.yj_yjdh and g.成品代号=j.yj_cpdh')
  340. ->order('j.yj_yjno asc')
  341. ->select();
  342. foreach ($rows as $key=>$value){
  343. $rows[$key]['gdyj'] = $value['Gd_gdbh'].' -'.sprintf("%02d", $value['yj_yjno']).'-'.$value['yj_yjmc'];
  344. }
  345. $this->success('成功',$rows);
  346. }
  347. /**
  348. * 查询工单数量
  349. * @ApiMethod (GET)
  350. * @param string $gdbh 工单编号
  351. * @param string $cpdh 产品代号
  352. * @param string $rcsl 入仓数量
  353. */
  354. public function getGdsl()
  355. {
  356. //get请求
  357. if(!$this->request->isGet()){
  358. $this->error('请求方式错误');
  359. }
  360. $req = $this->request->param();
  361. if (isset($req['gdbh']) && !empty($req['gdbh'])){
  362. $gdbh = $req['gdbh'];
  363. }else{
  364. $this->error('参数错误');
  365. }
  366. if (isset($req['cpdh']) && !empty($req['cpdh'])){
  367. $cpdh = $req['cpdh'];
  368. }else{
  369. $this->error('参数错误');
  370. }
  371. // if (isset($req['rcsl'])){
  372. // $rcsl = $req['rcsl'];
  373. // }else{
  374. // $this->error('参数错误');
  375. // }
  376. $rows = db()->table('工单_基本资料')->alias('g')
  377. ->field('订单数量*10000 as 订单数量, gd_statu')
  378. ->where(['Gd_gdbh'=>$gdbh, 'Gd_cpdh'=>$cpdh])
  379. ->find();
  380. if (!$rows) $this->error('未查询到记录');
  381. $rows['jjcp_sls'] = db()->table('成品入仓')
  382. ->where(['jjcp_gdbh'=>$gdbh, 'jjcp_cpdh'=>$cpdh])
  383. ->sum('jjcp_sl');
  384. // if ($rows['订单数量']<($rows['jjcp_sls']+$rcsl) || mb_substr($rows['gd_statu'],-3,3)=='已完工'){
  385. // $this->error('已完工或入仓数量超过订单数量',$rows);
  386. // }
  387. $this->success('成功',$rows);
  388. }
  389. /**
  390. * 新增
  391. * @ApiMethod (POST)
  392. * @param string
  393. */
  394. public function add()
  395. {
  396. if(!$this->request->isPost()){
  397. $this->error('请求方式错误');
  398. }
  399. $req = $this->request->param();
  400. $arr = [
  401. 'Sys_id',
  402. '入仓类型', '仓库编号', '仓库名称',
  403. 'jjcp_num',
  404. 'jjcp_gdbh', 'jjcp_yjno', '订单编号',
  405. 'jjcp_cpdh', 'jjcp_cpmc',
  406. '成品编码', '成品名称',
  407. '客户料号',
  408. 'jjcp_smb', 'jjcp_sj',
  409. 'jjcp_sl', 'jjcp_dw',
  410. '机型备注',
  411. 'jjcp_desc'
  412. ];
  413. $data = [];
  414. foreach ($arr as $key => $value){
  415. if (!isset($req[$value])){
  416. $this->error('参数错误',$value,$key+1);
  417. }
  418. $data[$value] = $req[$value];
  419. }
  420. $data['Sys_rq'] = date('Y-m-d H:i:s');
  421. //开启事务
  422. db()->startTrans();
  423. try{
  424. $sql = db()->table('成品入仓')->fetchSql(true)->insert($data);
  425. $bool = db()->query($sql);
  426. // 提交事务
  427. db()->commit();
  428. } catch (\Exception $e) {
  429. // 回滚事务
  430. db()->rollback();
  431. $this->error($e->getMessage());
  432. }
  433. if($bool===false) $this->error('失败');
  434. $this->success('成功');
  435. }
  436. /**
  437. * 修改
  438. * @ApiMethod (POST)
  439. */
  440. public function edit()
  441. {
  442. if(!$this->request->isPost()){
  443. $this->error('请求方式错误');
  444. }
  445. $req = $this->request->param();
  446. $arr = [
  447. '入仓类型', '仓库编号', '仓库名称',
  448. 'jjcp_num',
  449. 'jjcp_gdbh', 'jjcp_yjno', '订单编号',
  450. 'jjcp_cpdh', 'jjcp_cpmc',
  451. '成品编码', '成品名称',
  452. '客户料号',
  453. 'jjcp_smb', 'jjcp_sj',
  454. 'jjcp_sl', 'jjcp_dw',
  455. '机型备注',
  456. 'jjcp_desc'
  457. ];
  458. $data = [];
  459. foreach ($arr as $key => $value){
  460. if (!isset($req[$value])){
  461. continue;
  462. }
  463. $data[$value] = $req[$value];
  464. }
  465. if (!(isset($req['UniqId']) && trim($req['UniqId'])!='')){
  466. $this->error('参数错误','UniqId',100);
  467. }
  468. if (count($data)==0){
  469. $this->error('参数错误','',111);
  470. }
  471. $data['Mod_rq'] = date('Y-m-d H:i:s');
  472. //开启事务
  473. db()->startTrans();
  474. try{
  475. $sql = db()->table('成品入仓')->where('UniqId',$req['UniqId'])->fetchSql(true)->update($data);
  476. $bool = db()->query($sql);
  477. // 提交事务
  478. db()->commit();
  479. } catch (\Exception $e) {
  480. // 回滚事务
  481. db()->rollback();
  482. $this->error($e->getMessage());
  483. }
  484. if($bool===false) $this->error('失败');
  485. $this->success('成功');
  486. }
  487. /**
  488. * 修改
  489. * @ApiMethod (POST)
  490. * @param string 'UniqId'
  491. */
  492. public function del()
  493. {
  494. if(!$this->request->isPost()){
  495. $this->error('请求方式错误');
  496. }
  497. $req = $this->request->param();
  498. if (!(isset($req['UniqId']) && trim($req['UniqId'])!='')){
  499. $this->error('参数错误','UniqId',100);
  500. }
  501. //开启事务
  502. db()->startTrans();
  503. try{
  504. $bool = db()->table('成品入仓')->where('UniqId',$req['UniqId'])->delete();
  505. // 提交事务
  506. db()->commit();
  507. } catch (\Exception $e) {
  508. // 回滚事务
  509. db()->rollback();
  510. $this->error($e->getMessage());
  511. }
  512. if($bool===false) $this->error('失败');
  513. $this->success('成功');
  514. }
  515. /**
  516. * excel导出
  517. * @ApiMethod (POST)
  518. * @param string date
  519. * @param string sys_id
  520. * @param array fields
  521. */
  522. public function export(){
  523. if(!$this->request->isGet()){
  524. $this->error('请求方式错误');
  525. }
  526. $req = $this->request->param();
  527. if (!isset($req['date']) || empty($req['date'])) $this->error('参数缺失');
  528. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  529. $this->error('参数错误','fields',100);
  530. }
  531. if(strpos($req['date'],'-')){
  532. $where = ['c.Sys_rq'=>['like','%'.$req['date'].'%']];
  533. }else{
  534. $where = ['c.jjcp_gdbh'=>$req['date']];
  535. }
  536. if (isset($req['sys_id']) && !empty($req['sys_id'])){
  537. $where['c.Sys_id'] = ['LIKE','%'.$req['sys_id'].'%'];
  538. }
  539. $arr = [
  540. '入仓类型' =>['入仓类型'],
  541. '仓库编号' =>['仓库编号'],
  542. '仓库名称' =>['仓库名称'],
  543. 'jjcp_num' =>['入仓单号'],
  544. 'jjcp_gdbh' =>['工单编号'],
  545. 'jjcp_yjno' =>['印件号'],
  546. 'jjcp_sl' =>['入仓数量'],
  547. 'jjcp_sls' =>['累计入仓数量'],
  548. '订单数量' =>['订单数量'],
  549. '完成率' =>['完成率'],
  550. 'jjcp_dw' =>['单位'],
  551. 'jjcp_sj' =>['入仓时间'],
  552. 'jjcp_smb' =>['首末板'],
  553. 'jjcp_cpdh' =>['印件代号'],
  554. 'jjcp_cpmc' =>['印件名称'],
  555. '成品编码' =>['产品编号'],
  556. '成品名称' =>['产品名称'],
  557. '客户料号' =>['客户料号'],
  558. 'jjcp_desc' =>['备注'],
  559. '客户编号' =>['客户编号'],
  560. 'Gd_客户名称' =>['客户名称'],
  561. '最近入仓日期' =>['最近入仓日期'],
  562. '机型备注' =>['机型备注'],
  563. ];
  564. $data[0] = [];
  565. foreach ($req['fields'] as $k=>$v){
  566. if(array_key_exists($v,$arr)){
  567. array_push($data[0],$arr[$v][0]);
  568. }
  569. }
  570. //客户编号
  571. $rows = db()->table('成品入仓')->alias('c')
  572. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  573. rtrim(c.jjcp_num) as jjcp_num, c.jjcp_gdbh,
  574. c.jjcp_yjno, c.jjcp_sl, g.订单数量, rtrim(c.jjcp_dw) as jjcp_dw, LEFT(c.jjcp_sj, 10) as jjcp_sj,
  575. rtrim(c.jjcp_smb) as jjcp_smb, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  576. rtrim(c.成品编码) as 成品编码, rtrim(c.成品名称) as 成品名称,
  577. rtrim(c.客户料号) as 客户料号, rtrim(c.jjcp_desc) as jjcp_desc, LEFT(c.成品编码,4) as 客户编号, rtrim(g.Gd_客户名称) as Gd_客户名称,
  578. rtrim(c.机型备注) as 机型备注')
  579. ->where($where)
  580. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  581. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  582. ->order('c.UniqId desc')
  583. ->select();
  584. foreach ($rows as $key=>$value) {
  585. $row = db()->table('成品入仓')
  586. ->field('LEFT(Sys_rq, 10) as Sys_rq,jjcp_sl')
  587. ->where(['jjcp_gdbh'=>$value['jjcp_gdbh'], 'jjcp_cpdh'=>$value['jjcp_cpdh']])
  588. ->order('Sys_rq desc')
  589. ->select();
  590. $subArray = [];
  591. foreach ($arr as $k=>$v){
  592. if($k=='jjcp_sls'){
  593. $subArray[$k] = 0;
  594. foreach ($row as $n) {
  595. $subArray[$k] += $n['jjcp_sl'];
  596. }
  597. }else if($k=='完成率'){
  598. if ($value['订单数量']!=0){
  599. $subArray[$k] = 0;
  600. foreach ($row as $n) {
  601. $subArray[$k] += $n['jjcp_sl'];
  602. }
  603. $subArray[$k] = number_format($subArray[$k]/$value['订单数量']/100,2);
  604. }else{
  605. $subArray[$k] = '';
  606. }
  607. }else if($k=='最近入仓日期'){
  608. $subArray[$k] = $row[0]['Sys_rq'];
  609. }else{
  610. $subArray[$k] = $rows[$key][$k];
  611. }
  612. }
  613. array_push($data,$subArray);
  614. }
  615. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  616. }
  617. /**
  618. * 月度A
  619. * @ApiMethod (POST)
  620. * @param string start_time
  621. * @param string end_time
  622. * @param string file_name
  623. * @param array fields
  624. */
  625. public function monthExportA(){
  626. if(!$this->request->isGet()){
  627. $this->error('请求方式错误');
  628. }
  629. $req = $this->request->param();
  630. $arr = [
  631. 'start_time', 'end_time', 'file_name'
  632. ];
  633. foreach ($arr as $key => $value){
  634. if (!isset($req[$value])){
  635. $this->error('参数错误',$value,$key+1);
  636. }
  637. }
  638. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  639. $this->error('参数错误','fields',100);
  640. }
  641. $arr = [
  642. '入仓类型' =>['入仓类型'],
  643. '仓库编号' =>['仓库编号'],
  644. '仓库名称' =>['仓库名称'],
  645. 'jjcp_gdbh' =>['工单编号'],
  646. 'jjcp_cpdh' =>['入仓存货编号'],
  647. 'jjcp_cpmc' =>['入仓存货名称'],
  648. 'jjcp_sl' =>['入仓数量'],
  649. 'jjcp_dw' =>['单位'],
  650. 'jjcp_sj' =>['入仓时间'],
  651. 'jjcp_smb' =>['首末板'],
  652. 'jjcp_num' =>['单据编号'],
  653. '订单编号' =>['订单编号'],
  654. ];
  655. $data[0] = [];
  656. foreach ($req['fields'] as $k=>$v){
  657. if(array_key_exists($v,$arr)){
  658. array_push($data[0],$arr[$v][0]);
  659. }
  660. }
  661. //客户编号
  662. $rows = db()->table('成品入仓')->alias('c')
  663. ->field('rtrim(c.入仓类型) as 入仓类型, rtrim(c.仓库编号) as 仓库编号, rtrim(c.仓库名称) as 仓库名称,
  664. c.jjcp_gdbh, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  665. c.jjcp_sl, rtrim(c.jjcp_dw) as jjcp_dw, c.jjcp_sj,
  666. rtrim(c.jjcp_smb) as jjcp_smb,
  667. rtrim(c.jjcp_num) as jjcp_num, rtrim(c.订单编号) as 订单编号
  668. ')
  669. ->where('c.jjcp_sj','between time',[$req['start_time'], $req['end_time']])
  670. ->order('c.jjcp_sj asc')
  671. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  672. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  673. ->select();
  674. foreach ($rows as $key=>$value) {
  675. $subArray = [];
  676. foreach ($arr as $k=>$v){
  677. $subArray[$k] = $rows[$key][$k];
  678. }
  679. array_push($data,$subArray);
  680. }
  681. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  682. }
  683. /**
  684. * 月度B
  685. * @ApiMethod (POST)
  686. * @param string start_time
  687. * @param string end_time
  688. * @param string file_name
  689. * @param array fields
  690. */
  691. public function monthExportB(){
  692. if(!$this->request->isGet()){
  693. $this->error('请求方式错误');
  694. }
  695. $req = $this->request->param();
  696. $arr = [
  697. 'start_time', 'end_time', 'file_name'
  698. ];
  699. foreach ($arr as $key => $value){
  700. if (!isset($req[$value])){
  701. $this->error('参数错误',$value,$key+1);
  702. }
  703. }
  704. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  705. $this->error('参数错误','fields',100);
  706. }
  707. $arr = [
  708. '入仓类型' =>['入仓类型'],
  709. '客户编号' =>['客户编号'],
  710. '客户名称' =>['客户名称'],
  711. '产品类别' =>['产品类别'],
  712. 'jjcp_gdbh' =>['工单编号'],
  713. '成品编码' =>['成品编码'],
  714. '成品名称' =>['成品名称'],
  715. 'jjcp_sls' =>['入仓数量'],
  716. '大箱产量' =>['大箱产量'],
  717. '产品单价' =>['万张单价'],
  718. '产值万元' =>['产值万元'],
  719. ];
  720. $data[0] = [];
  721. foreach ($req['fields'] as $k=>$v){
  722. if(array_key_exists($v,$arr)){
  723. array_push($data[0],$arr[$v][0]);
  724. }
  725. }
  726. $rows1 = db()->table('成品入仓')->alias('c')
  727. ->field('rtrim(c.入仓类型) as 入仓类型, LEFT(c.成品编码,4) as 客户编号, rtrim(b.客户名称) as 客户名称,
  728. rtrim(b.产品类别) as 产品类别, c.jjcp_gdbh,
  729. rtrim(c.成品编码) as 成品编码, rtrim(c.成品名称) as 成品名称
  730. ')
  731. ->where('c.jjcp_sj','between time',[$req['start_time'], $req['end_time']])
  732. ->order('客户编号 asc,b.产品类别 desc,c.成品编码 asc,c.jjcp_gdbh asc')
  733. ->join('产品_基本资料 b','b.产品编号=c.jjcp_cpdh')
  734. ->group('c.jjcp_gdbh')
  735. ->select();
  736. $rows2 = db()->table('成品入仓')
  737. ->field('rtrim(入仓类型) as 入仓类型, rtrim(成品编码) as 客户编号,
  738. rtrim(成品编码) as 客户名称, rtrim(成品编码) as 产品类别,
  739. jjcp_gdbh,rtrim(成品编码) as 成品编码, rtrim(成品名称) as 成品名称
  740. ')
  741. ->where('jjcp_sj','between time',[$req['start_time'], $req['end_time']])
  742. ->where('成品编码','')
  743. ->order('jjcp_gdbh asc')
  744. ->group('jjcp_gdbh')
  745. ->select();
  746. $rows = array_merge($rows2,$rows1);
  747. $num = db()->table('工单_基本资料')->count();
  748. $arr1 = db()->table('工单_基本资料')->limit($num)
  749. ->column('CONCAT(Gd_gdbh, "-", rtrim(Gd_cpdh)) AS gdcp, 产品单价 as 万张单价');
  750. $brr = array_column($rows,'jjcp_gdbh');
  751. $brr = db()->table('成品入仓')
  752. ->where('jjcp_gdbh', 'in', $brr)
  753. ->group('jjcp_gdbh')
  754. ->column('jjcp_gdbh, sum(jjcp_sl)');
  755. foreach ($rows as $key=>$value) {
  756. $subArray = [];
  757. foreach ($arr as $k=>$v){
  758. if($k=='jjcp_sls'){
  759. $subArray[$k] = $brr[$value['jjcp_gdbh']];
  760. }else if ($k=='大箱产量'){
  761. if($value['产品类别']=='条盒'){
  762. $subArray[$k] = $brr[$value['jjcp_gdbh']]/250;
  763. }else if($value['产品类别']=='小盒'){
  764. $subArray[$k] = $brr[$value['jjcp_gdbh']]/2500;
  765. }else{
  766. $subArray[$k] = 0;
  767. }
  768. }else if ($k=='产品单价'){
  769. if($value['产品类别']!=''){
  770. if (array_key_exists($value['jjcp_gdbh'].'-'.$value['成品编码'],$arr1)){
  771. $subArray[$k] = floatval(number_format($arr1[$value['jjcp_gdbh'].'-'.$value['成品编码']],4));
  772. }
  773. }else{
  774. $subArray[$k] = 0;
  775. }
  776. }else if ($k=='产值万元'){
  777. if($value['产品类别']!=''){
  778. if (array_key_exists($value['jjcp_gdbh'].'-'.$value['成品编码'],$arr1)){
  779. $subArray[$k] = floatval(number_format($arr1[$value['jjcp_gdbh'].'-'.$value['成品编码']]*$brr[$value['jjcp_gdbh']]/100000000,2));
  780. }
  781. }else{
  782. $subArray[$k] = 0;
  783. }
  784. }else{
  785. $subArray[$k] = $rows[$key][$k];
  786. }
  787. }
  788. array_push($data,$subArray);
  789. }
  790. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  791. }
  792. /**
  793. * 各日统计列表
  794. * @ApiMethod (GET)
  795. * @param string $date 时间
  796. * @param string $sys_id 用户
  797. */
  798. public function getDayList()
  799. {
  800. //get请求
  801. if(!$this->request->isGet()){
  802. $this->error('请求方式错误');
  803. }
  804. $req = $this->request->param();
  805. $page = 1;
  806. $limit = 15;
  807. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  808. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  809. $where = [
  810. 'c.jjcp_smb'=>['<>',''],
  811. ];
  812. if (isset($req['key_word']) && !empty($req['key_word'])){
  813. $where['c.jjcp_sj | c.jjcp_gdbh | c.jjcp_cpmc | c.jjcp_cpdh | g.实际投料'] = ['like','%'.$req['key_word'].'%'];
  814. }
  815. //客户编号
  816. $rows = db()->table('成品入仓')->alias('c')
  817. ->field('LEFT(c.jjcp_sj, 10) as jjcp_sj, c.jjcp_gdbh, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  818. rtrim(c.jjcp_cpdh) as jjcp_cpdh, g.实际投料')
  819. ->where($where)
  820. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  821. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  822. ->order('c.jjcp_sj desc')
  823. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  824. ->page($page,$limit)
  825. ->select();
  826. $total = db()->table('成品入仓')->alias('c')
  827. ->where($where)
  828. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  829. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  830. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  831. ->count();
  832. $brr = db()->table('成品入仓')
  833. ->group('jjcp_gdbh,jjcp_cpdh')
  834. ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
  835. foreach ($rows as $key=>$value) {
  836. $rows[$key]['实际投料'] = (string)floatval($value['实际投料']*10000);
  837. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
  838. $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
  839. if($rows[$key]['实际投料']!=0){
  840. $rows[$key]['投入产出率'] = number_format($rows[$key]['入仓数量']/$rows[$key]['实际投料']*100,2);
  841. }else{
  842. $rows[$key]['投入产出率'] = '';
  843. }
  844. }else{
  845. $rows[$key]['入仓数量'] = '';
  846. $rows[$key]['投入产出率'] = '';
  847. }
  848. }
  849. $data = [
  850. 'total' => $total,
  851. 'rows' => $rows,
  852. ];
  853. $this->success('成功',$data);
  854. }
  855. /**
  856. * 各日统计列表excel导出
  857. * @ApiMethod (POST)
  858. * @param string file_name
  859. * @param array fields
  860. */
  861. public function dayExport()
  862. {
  863. //get请求
  864. if(!$this->request->isPost()){
  865. $this->error('请求方式错误');
  866. }
  867. $req = $this->request->param();
  868. if (!isset($req['file_name'])){
  869. $this->error('参数错误','file_name');
  870. }
  871. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  872. $this->error('参数错误','fields',100);
  873. }
  874. if (isset($req['key_word']) && !empty($req['key_word'])){
  875. $where['c.jjcp_sj | c.jjcp_gdbh | c.jjcp_cpmc | c.jjcp_cpdh | g.实际投料'] = ['like','%'.$req['key_word'].'%'];
  876. }
  877. $arr = [
  878. 'jjcp_gdbh' =>['jjcp_gdbh'],
  879. 'jjcp_yjno' =>['jjcp_yjno'],
  880. 'jjcp_cpmc' =>['印件名称'],
  881. '成品编码' =>['成品编码'],
  882. '成品名称' =>['成品名称'],
  883. '实际投料' =>['实际投料'],
  884. 'jjcp_sls' =>['入仓数量'],
  885. 'jjcp_sj' =>['完工日期'],
  886. ];
  887. $data[0] = [];
  888. foreach ($req['fields'] as $k=>$v){
  889. if(array_key_exists($v,$arr)){
  890. array_push($data[0],$arr[$v][0]);
  891. }
  892. }
  893. $where = [
  894. 'c.jjcp_smb'=>['<>','']
  895. ];
  896. //客户编号
  897. $rows = db()->table('成品入仓')->alias('c')
  898. ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc, rtrim(c.jjcp_cpdh) as jjcp_cpdh,
  899. rtrim(c.成品编码) as 成品编码, rtrim(c.成品名称) as 成品名称, sum(jjcp_sl) as jjcp_sls,
  900. g.实际投料, LEFT(c.jjcp_sj, 10) as jjcp_sj
  901. ')
  902. ->where($where)
  903. ->where('g.Gd_cpdh=c.jjcp_cpdh')
  904. ->join('工单_基本资料 g','g.Gd_gdbh=c.jjcp_gdbh')
  905. ->order('c.jjcp_sj desc')
  906. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  907. ->select();
  908. foreach ($rows as $key=>$value) {
  909. $subArray = [];
  910. foreach ($arr as $k=>$v){
  911. if($k=='实际投料'){
  912. $subArray[$k] = (string)floatval($value['实际投料']*10000);
  913. }else{
  914. $subArray[$k] = $rows[$key][$k];
  915. }
  916. }
  917. array_push($data,$subArray);
  918. }
  919. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  920. }
  921. /**
  922. * 入仓末板数据统计列表
  923. * @ApiMethod (GET)
  924. * @param string $date 时间
  925. * @param string $sys_id 用户
  926. */
  927. public function mbList()
  928. {
  929. //get请求
  930. if(!$this->request->isGet()){
  931. $this->error('请求方式错误');
  932. }
  933. $req = $this->request->param();
  934. $page = 1;
  935. $limit = 15;
  936. if (isset($req['page']) && !empty($req['page'])) $page = $req['page'];
  937. if (isset($req['limit']) && !empty($req['limit'])) $limit = $req['limit'];
  938. $where = [
  939. ];
  940. $rows = db()->table('成品入仓')->alias('c')
  941. ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  942. y.yj_成品数量, y.yj_实际投料, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_smb) as jjcp_smb,
  943. sum(c.jjcp_sl) as jjcp_sls, left(max(c.Sys_rq),10) as Sys_rq')
  944. ->where($where)
  945. ->where('y.yj_Yjdh=c.jjcp_cpdh')
  946. ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
  947. ->order('c.jjcp_gdbh desc, c.jjcp_yjno asc')
  948. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  949. ->page($page,$limit)
  950. ->select();
  951. $total = db()->table('成品入仓')->alias('c')
  952. ->where($where)
  953. ->where('y.yj_Yjdh=c.jjcp_cpdh')
  954. ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
  955. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  956. ->count();
  957. $brr = db()->table('成品入仓')
  958. ->group('jjcp_gdbh,jjcp_cpdh')
  959. ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
  960. $num = db()->table('db_包装产量预报')->count();
  961. $arr1 = db()->table('db_包装产量预报')
  962. ->field('sczl_gdbh1, sczl_gdbh2, sczl_gdbh3, sczl_gdbh4, sczl_gdbh5, sczl_gdbh6,
  963. substr(sczl_yjGx1,2,1) as sczl_yjGx1, substr(sczl_yjGx2,2,1) as sczl_yjGx2,
  964. substr(sczl_yjGx3,2,1) as sczl_yjGx3, substr(sczl_yjGx4,2,1) as sczl_yjGx4,
  965. substr(sczl_yjGx5,2,1) as sczl_yjGx5, substr(sczl_yjGx6,2,1) as sczl_yjGx6,
  966. (sczl_cl1*sczl_PgCl1+sczl_clAdd1) as sczl_cls1,
  967. (sczl_cl2*sczl_PgCl2+sczl_clAdd2) as sczl_cls2,
  968. (sczl_cl3*sczl_PgCl3+sczl_clAdd3) as sczl_cls3,
  969. (sczl_cl4*sczl_PgCl4+sczl_clAdd4) as sczl_cls4,
  970. (sczl_cl5*sczl_PgCl5+sczl_clAdd5) as sczl_cls5,
  971. (sczl_cl6*sczl_PgCl6+sczl_clAdd6) as sczl_cls6
  972. ')
  973. ->limit($num)
  974. ->select();
  975. $data1 = [];
  976. foreach ($arr1 as $k=>$v){
  977. for ($i=1;$i<=6;$i++){
  978. if(array_key_exists($v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i],$data1)){
  979. $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] += $v['sczl_cls'.$i];
  980. }else{
  981. $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] = $v['sczl_cls'.$i];
  982. }
  983. }
  984. }
  985. foreach ($rows as $key=>$value) {
  986. $rows[$key]['yj_成品数量'] = (string)floatval($value['yj_成品数量']*10000);
  987. $rows[$key]['yj_实际投料'] = (string)floatval($value['yj_实际投料']*10000);
  988. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
  989. $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
  990. }else{
  991. $rows[$key]['包装产量'] = '';
  992. }
  993. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
  994. $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
  995. }else{
  996. $rows[$key]['入仓数量'] = '';
  997. }
  998. if($value['jjcp_smb'] !=''){
  999. $rows[$key]['状态'] = '完工';
  1000. $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
  1001. }else{
  1002. $rows[$key]['状态'] = '';
  1003. $rows[$key]['缺数'] = '';
  1004. }
  1005. }
  1006. $data = [
  1007. 'total' => $total,
  1008. 'rows' => $rows,
  1009. ];
  1010. $this->success('成功',$data);
  1011. }
  1012. /**
  1013. * 入仓末板数据统计列表excel导出
  1014. * @ApiMethod (POST)
  1015. * @param string file_name
  1016. * @param array fields
  1017. */
  1018. public function mbExport()
  1019. {
  1020. //get请求
  1021. if(!$this->request->isPost()){
  1022. $this->error('请求方式错误');
  1023. }
  1024. $req = $this->request->param();
  1025. if (!isset($req['file_name'])){
  1026. $this->error('参数错误','file_name');
  1027. }
  1028. if (!(isset($req['fields']) && count($req['fields'])!=0)){
  1029. $this->error('参数错误','fields',100);
  1030. }
  1031. if (isset($req['key_word']) && !empty($req['key_word'])){
  1032. $where['c.jjcp_sj | c.jjcp_gdbh | c.jjcp_cpmc | c.jjcp_cpdh | g.实际投料'] = ['like','%'.$req['key_word'].'%'];
  1033. }
  1034. $arr = [
  1035. 'jjcp_gdbh' =>['jjcp_gdbh'],
  1036. 'jjcp_yjno' =>['jjcp_yjno'],
  1037. 'jjcp_cpmc' =>['印件名称'],
  1038. 'yj_成品数量' =>['计划交货数量'],
  1039. 'yj_实际投料' =>['印件投料'],
  1040. 'sczl_cls' =>['包装产量'],
  1041. 'Sys_rq' =>['最近入仓时间'],
  1042. 'jjcp_sls' =>['入仓数量'],
  1043. 'status' =>['完工'],
  1044. '缺数' =>['缺数'],
  1045. ];
  1046. $data[0] = [];
  1047. foreach ($req['fields'] as $k=>$v){
  1048. if(array_key_exists($v,$arr)){
  1049. array_push($data[0],$arr[$v][0]);
  1050. }
  1051. }
  1052. $where = [
  1053. 'c.jjcp_smb'=>['<>','']
  1054. ];
  1055. $rows = db()->table('成品入仓')->alias('c')
  1056. ->field('c.jjcp_gdbh, c.jjcp_yjno, rtrim(c.jjcp_cpmc) as jjcp_cpmc,
  1057. y.yj_成品数量, y.yj_实际投料, rtrim(c.jjcp_cpdh) as jjcp_cpdh, rtrim(c.jjcp_smb) as jjcp_smb,
  1058. sum(c.jjcp_sl) as jjcp_sls, left(max(c.Sys_rq),10) as Sys_rq')
  1059. ->where($where)
  1060. ->where('y.yj_Yjdh=c.jjcp_cpdh')
  1061. ->join('工单_印件资料 y','y.Yj_Gdbh=c.jjcp_gdbh')
  1062. ->order('c.jjcp_gdbh desc, c.jjcp_yjno asc')
  1063. ->group('c.jjcp_gdbh, c.jjcp_cpdh')
  1064. ->select();
  1065. $brr = db()->table('成品入仓')
  1066. ->group('jjcp_gdbh,jjcp_cpdh')
  1067. ->column('CONCAT(jjcp_gdbh, "-", rtrim(jjcp_cpdh)), sum(jjcp_sl)');
  1068. $num = db()->table('db_包装产量预报')->count();
  1069. $arr1 = db()->table('db_包装产量预报')
  1070. ->field('sczl_gdbh1, sczl_gdbh2, sczl_gdbh3, sczl_gdbh4, sczl_gdbh5, sczl_gdbh6,
  1071. substr(sczl_yjGx1,2,1) as sczl_yjGx1, substr(sczl_yjGx2,2,1) as sczl_yjGx2,
  1072. substr(sczl_yjGx3,2,1) as sczl_yjGx3, substr(sczl_yjGx4,2,1) as sczl_yjGx4,
  1073. substr(sczl_yjGx5,2,1) as sczl_yjGx5, substr(sczl_yjGx6,2,1) as sczl_yjGx6,
  1074. (sczl_cl1*sczl_PgCl1+sczl_clAdd1) as sczl_cls1,
  1075. (sczl_cl2*sczl_PgCl2+sczl_clAdd2) as sczl_cls2,
  1076. (sczl_cl3*sczl_PgCl3+sczl_clAdd3) as sczl_cls3,
  1077. (sczl_cl4*sczl_PgCl4+sczl_clAdd4) as sczl_cls4,
  1078. (sczl_cl5*sczl_PgCl5+sczl_clAdd5) as sczl_cls5,
  1079. (sczl_cl6*sczl_PgCl6+sczl_clAdd6) as sczl_cls6
  1080. ')
  1081. ->limit($num)
  1082. ->select();
  1083. $data1 = [];
  1084. foreach ($arr1 as $k=>$v){
  1085. for ($i=1;$i<=6;$i++){
  1086. if(array_key_exists($v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i],$data1)){
  1087. $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] += $v['sczl_cls'.$i];
  1088. }else{
  1089. $data1[$v['sczl_gdbh'.$i].'-'.$v['sczl_yjGx'.$i]] = $v['sczl_cls'.$i];
  1090. }
  1091. }
  1092. }
  1093. foreach ($rows as $key=>$value) {
  1094. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
  1095. $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
  1096. }else{
  1097. $rows[$key]['包装产量'] = '';
  1098. }
  1099. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_cpdh'],$brr)){
  1100. $rows[$key]['入仓数量'] = $brr[$value['jjcp_gdbh'].'-'.$value['jjcp_cpdh']];
  1101. }else{
  1102. $rows[$key]['入仓数量'] = '';
  1103. }
  1104. if($value['jjcp_smb'] !=''){
  1105. $rows[$key]['状态'] = '完工';
  1106. $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
  1107. }else{
  1108. $rows[$key]['状态'] = '';
  1109. $rows[$key]['缺数'] = '';
  1110. }
  1111. $subArray = [];
  1112. foreach ($arr as $k=>$v){
  1113. if($k=='yj_成品数量' || $k=='yj_实际投料'){
  1114. $subArray[$k] = (string)floatval($value['实际投料']*10000);
  1115. }else if($k=='sczl_cls'){
  1116. if(array_key_exists($value['jjcp_gdbh'].'-'.$value['jjcp_yjno'],$data1)){
  1117. $rows[$key]['包装产量'] = $data1[$value['jjcp_gdbh'].'-'.$value['jjcp_yjno']];
  1118. }else{
  1119. $rows[$key]['包装产量'] = '';
  1120. }
  1121. }else if($k=='status'){
  1122. if($value['jjcp_smb'] !=''){
  1123. $rows[$key]['状态'] = '完工';
  1124. }else{
  1125. $rows[$key]['状态'] = '';
  1126. }
  1127. }else if($k=='缺数'){
  1128. if($value['jjcp_smb'] !=''){
  1129. $rows[$key]['缺数'] = (int)$rows[$key]['yj_成品数量']-(int)$rows[$key]['包装产量'];
  1130. }else{
  1131. $rows[$key]['缺数'] = '';
  1132. }
  1133. }else{
  1134. $subArray[$k] = $rows[$key][$k];
  1135. }
  1136. }
  1137. array_push($data,$subArray);
  1138. }
  1139. $this->success('成功',['file_name'=>$req['file_name'],'data'=>$data]);
  1140. }
  1141. }