Product.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use \think\Request;
  5. use \think\Db;
  6. /**
  7. * 产品管理接口
  8. */
  9. class Product extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. /**
  14. * 首页
  15. *
  16. */
  17. public function index()
  18. {
  19. $this->success('请求成功');
  20. }
  21. /**
  22. * 获取产品资料
  23. *
  24. * @ApiMethod GET
  25. *@param string custom_code
  26. *@param string limit
  27. *@param string page
  28. */
  29. public function getProduct(){
  30. if (Request::instance()->isGet() == false){
  31. $this->error('非法请求');
  32. }
  33. $params = Request::instance()->param();
  34. $limit = $params['limit'];
  35. if (!isset($limit) == false){
  36. $limit = 15;
  37. }
  38. if (!isset($pages) == false){
  39. $pages = 0;
  40. }else{
  41. $pages = ($params['page']-1) * $limit;
  42. }
  43. $total = 0;
  44. if (isset($params['custom_code']) && !empty($params['custom_code'])){
  45. $customCode = $params['custom_code'];
  46. $sql = "SELECT rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称,客户料号,rtrim(产品编号) as 产品编号,rtrim(产品名称) as 产品名称,版本号,成品规格,
  47. rtrim(计量单位) as 计量单位,rtrim(产品类别) as 产品类别,生产类别,产品备注,投产日期,状态,U8UID,rtrim(Sys_id) as Sys_id,Sys_rq,Mod_rq,UniqID
  48. FROM `产品_基本资料` WHERE `客户编号` = '{$customCode}' ORDER BY CASE WHEN `状态` IS NULL THEN 0 ELSE 1 END,
  49. `客户编号`ASC,`状态` ASC,`产品编号` DESC LIMIT {$limit} OFFSET {$pages}";
  50. $total = db('产品_基本资料')->where('客户编号',$customCode)->count();
  51. }else{
  52. if (isset($params['search']) && !empty($params['search'])){
  53. $search = $params['search'];
  54. $sql = "SELECT rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称,客户料号,rtrim(产品编号) as 产品编号,rtrim(产品名称) as 产品名称,版本号,成品规格,
  55. rtrim(计量单位) as 计量单位,rtrim(产品类别) as 产品类别,生产类别,产品备注,投产日期,状态,U8UID,rtrim(Sys_id) as Sys_id,Sys_rq,Mod_rq,UniqID
  56. FROM `产品_基本资料` WHERE `产品名称` LIKE '%{$search}%' OR `产品编号` LIKE '%{$search}%' ORDER BY CASE WHEN `状态` IS NULL THEN 0 ELSE 1 END,
  57. `客户编号`ASC,`状态` ASC,`产品编号` DESC LIMIT {$limit} OFFSET {$pages}";
  58. $total = db('产品_基本资料')->where('产品名称','like','%'.$search.'%')->count();
  59. }else{
  60. $sql = "SELECT rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称,客户料号,rtrim(产品编号) as 产品编号,rtrim(产品名称) as 产品名称,版本号,成品规格,
  61. rtrim(计量单位) as 计量单位,rtrim(产品类别) as 产品类别,生产类别,产品备注,投产日期,状态,U8UID,rtrim(Sys_id) as Sys_id,Sys_rq,Mod_rq,UniqID
  62. FROM `产品_基本资料` ORDER BY CASE WHEN `状态` IS NULL THEN 0 ELSE 1 END,
  63. `客户编号`ASC,`状态` ASC,`产品编号` DESC LIMIT {$limit} OFFSET {$pages}";
  64. $total = db('产品_基本资料')->count();
  65. }
  66. }
  67. $list = Db::query($sql);
  68. foreach ($list as $key=>$value){
  69. $code = trim($value['产品编号']);
  70. $gd_sql = "SELECT `接单日期` FROM `工单_基本资料` WHERE `成品代号` = '{$code}' ORDER BY Uniqid DESC";
  71. $gdRes = Db::query($gd_sql);
  72. $list[$key]['receiveDate'] = '';
  73. if (!empty($gdRes)){
  74. $list[$key]['receiveDate'] = $gdRes[0]['接单日期'];
  75. }
  76. $gy_sql = "SELECT * FROM `产品_工艺资料` WHERE Gy0_cpdh = '{$code}'";
  77. $gyRes = Db::query($gy_sql);
  78. $list[$key]['gyData'] = '';
  79. if (empty($gyRes)){
  80. $list[$key]['gyData'] = '缺';
  81. }
  82. $yj_sql = "SELECT COUNT(*) as total FROM `产品_印件资料` WHERE `yj_cpdh` = '{$code}'";
  83. $yjRes = Db::query($yj_sql);
  84. $list[$key]['yjData'] = '无';
  85. if ($yjRes[0]['total'] > 0){
  86. $list[$key]['yjData'] = $yjRes[0]['total'];
  87. }
  88. }
  89. $data['data'] = $list;
  90. $data['total'] = $total;
  91. $this->success('请求成功',$data);
  92. }
  93. /**
  94. * 获取产品基础数据
  95. *
  96. * @ApiMethod POST
  97. *@param string product_code
  98. */
  99. public function getProductData(){
  100. if (Request::instance()->isGet() == false){
  101. $this->error('非法请求');
  102. }
  103. $params = Request::instance()->param();
  104. $code = $params['product_code'];
  105. if (!isset($code)){
  106. $this->error('参数不能为空');
  107. }
  108. //工艺资料
  109. $option['a.Gy0_cpdh'] = $code;
  110. $gy_field = 'rtrim(a.Gy0_方案) as 方案,a.Gy0_yjno,a.Gy0_gxh,rtrim(a.gy0_gxmc) as gy0_gxmc,rtrim(a.Add_gxmc) as add_gxmc,a.Gy0_Ks,a.Gy0_ls,rtrim(a.工序备注) as 备注,
  111. a.工价系数,a.损耗系数,a.Gy0_Ms,a.人工检_正品板,a.人工检_次品板,a.人工检_废检,a.机检_正品板,a.机检_次品板,a.机检_废检,rtrim(a.Gy0_sbmc) as Gy0_sbmc,rtrim(a.Sys_id) as Sys_id,
  112. a.Sys_rq,a.Mod_rq,b.sys_rate0 as 基础损耗,b.sys_rate1 as 损耗率';
  113. $gyRes = db('产品_工艺资料')->alias('a')
  114. ->join('dic_lzsh b','a.Gy0_shdh = b.sys_bh','left')
  115. ->where($option)->field($gy_field)->order('a.Gy0_yjno asc,a.Gy0_gxh asc')->select();
  116. //印件资料
  117. $where['yj_cpdh'] = $code;
  118. $field = 'yj_yjno,rtrim(yj_yjdh) as yj_yjdh,yj_yjmc,rtrim(yj_zzdh) as yj_zzdh,rtrim(yj_zzmc) as yj_zzmc,rtrim(yj_tlgg) as yj_tlgg,
  119. rtrim(yj_klgg) as yj_klgg,yj_ks,yj_ls,rtrim(yj_desc) as yj_desc,rtrim(sys_id) as sys_id,sys_rq,mod_rq';
  120. $yjRes = db('产品_印件资料')->where($where)->field($field)->select();
  121. //印版资料
  122. $filter['a.YB_Cpdh'] = $code;
  123. $yb_field = 'rtrim(a.YB_方案) as YB_方案,a.YB_Yjno,rtrim(a.存货编码) as 存货编码,a.考核印数,rtrim(a.Sys_id) as Sys_id,a.Mod_rq,rtrim(b.物料名称) as 印版名称';
  124. $ybRes = db('产品_印版资料')->alias('a')
  125. ->join('物料_存货编码 b','a.存货编码 = b.物料代码')
  126. ->where($filter)->field($yb_field)->select();
  127. $list = [];
  128. $list['yjData'] = $yjRes;
  129. $list['gyData'] = $gyRes;
  130. $list['ybData'] = $ybRes;
  131. $list['jsData'] = [];
  132. $this->success('请求成功',$list);
  133. }
  134. /**
  135. * 获取单个产品工艺数据
  136. *
  137. * @ApiMethod GET
  138. *@param string product_code
  139. */
  140. public function getProductGy(){
  141. if (Request::instance()->isGet() == false){
  142. $this->error('非法请求');
  143. }
  144. $params = Request::instance()->param();
  145. $code = $params['product_code'];
  146. if (!isset($code)){
  147. $this->error('参数不能为空');
  148. }
  149. $option['a.Gy0_cpdh'] = $code;
  150. if (!empty($params['plan'])){
  151. $option['a.Gy0_方案'] = $params['plan'];
  152. }
  153. $gy_field = 'rtrim(a.Gy0_方案) as programme,a.Gy0_yjno,a.Gy0_gxh,rtrim(a.gy0_gxmc) as gy0_gxmc,a.A类产能 as A_power,rtrim(a.Gy0_shdh) as Gy0_shdh,rtrim(a.Gy0_sbbh) as Gy0_sbbh,
  154. a.工价系数 as difficulty_coe,a.损耗系数 as loss_coe,a.Gy0_Ms as ms_coe,a.Gy0_Ks,a.Gy0_ls,rtrim(a.Gy0_site) as Gy0_site,rtrim(a.Add_gxmc) as Add_gxmc,a.UniqID,a.Gy0_辅助工时,
  155. rtrim(a.工序备注) as remark,a.人工检_正品板 as artificial_zp,a.人工检_次品板 as artificial_cp,a.人工检_废检 as artificial_fj,a.机检_正品板 as machine_zp,a.机检_次品板 as machine_cp,
  156. a.机检_废检 as machine_fj,rtrim(b.客户名称) as custom_name,rtrim(b.产品名称) as product_name';
  157. $gyRes = db('产品_工艺资料')->alias('a')
  158. ->join('产品_基本资料 b','a.Gy0_cpdh = b.产品编号','left')
  159. ->where($option)->field($gy_field)->order('a.Gy0_yjno asc,a.Gy0_gxh asc')->select();
  160. $this->success('请求成功',$gyRes);
  161. }
  162. /**
  163. * 修改工艺参数
  164. *
  165. * @ApiMethod
  166. * @params array data
  167. */
  168. public function editGy(){
  169. if (Request::instance()->isPost() == false){
  170. $this->error('非法请求');
  171. }
  172. $params = Request::instance()->post();
  173. if (!isset($params) || !isset($params[0]['UniqID'])){
  174. $this->error('参数不能为空');
  175. }
  176. $i = 0;
  177. foreach ($params as $key=>$value){
  178. $data = [];
  179. if (!empty($value['A_power'])){
  180. $data['A类产能'] = $value['A_power'];
  181. }
  182. if (!empty($value['shdh'])){
  183. $data['Gy0_shdh'] = $value['shdh'];
  184. }
  185. if (!empty($value['machine'])){
  186. $data['Gy0_sbbh'] = $value['machine'];
  187. }
  188. if (!empty($value['time'])){
  189. $data['Gy0_辅助工时'] = $value['time'];
  190. }
  191. if (!empty($value['difficulty_coe'])){
  192. $data['工价系数'] = $value['difficulty_coe'];
  193. }
  194. if (!empty($value['loss_coe'])){
  195. $data['损耗系数'] = $value['loss_coe'];
  196. }
  197. if (!empty($value['ms_coe'])){
  198. $data['Gy0_Ms'] = $value['ms_coe'];
  199. }
  200. $sql = db('产品_工艺资料')->where('UniqID',$value['UniqID'])->fetchSql(true)->update($data);
  201. $res = Db::query($sql);
  202. if ($res !== false){
  203. $i++;
  204. }
  205. }
  206. if ($i !== 0){
  207. $this->success('更新成功');
  208. }else{
  209. $this->error('更新失败');
  210. }
  211. }
  212. /**
  213. * 修改产品信息
  214. *
  215. * @ApiMethod POST
  216. *
  217. * @params object data
  218. */
  219. public function editProduct(){
  220. if (Request::instance()->isPost() == false){
  221. $this->error('非法请求');
  222. }
  223. $params = Request::instance()->post();
  224. if (empty($params)){
  225. $this->error('参数不能为空');
  226. }
  227. if (!isset($params['印品代号'])){
  228. $this->error('印品代号不能为空');
  229. }
  230. $code = $params['印品代号'];
  231. unset($params['印品代号']);
  232. $sql = db('产品_基本资料')->where('产品编号',$code)->fetchSql(true)->update($params);
  233. $res = Db::query($sql);
  234. if ($res !== false){
  235. $this->success('更新成功');
  236. }else{
  237. $this->error('更新失败');
  238. }
  239. }
  240. /**
  241. * 设置产品状态
  242. *
  243. * @ApiMethod POST
  244. * @params string status
  245. * @params string code
  246. */
  247. public function setProductStatus(){
  248. if (Request::instance()->isPost() == false){
  249. $this->error('非法请求');
  250. }
  251. $params = Request::instance()->post();
  252. if (empty($params['code']) || empty($params['status'])){
  253. $this->error('参数不能为空');
  254. }
  255. $code = $params['code'];
  256. $status = '';
  257. if ($params['status'] == 2){
  258. $status = '停产';
  259. }
  260. $sql = db('产品_基本资料')->where('产品编号',$code)->fetchSql(true)->setField('状态',$status);
  261. $res = Db::query($sql);
  262. if ($res !== false){
  263. $this->success('更新成功');
  264. }else{
  265. $this->error('更新失败');
  266. }
  267. }
  268. /**
  269. * 获取产品工艺数量
  270. *
  271. * @ApiMethod GET
  272. * @params string code
  273. */
  274. public function getGyTotal(){
  275. if (Request::instance()->isGet() == false){
  276. $this->error('非法请求');
  277. }
  278. $params = Request::instance()->param();
  279. $code = $params['code'];
  280. if (!isset($code)){
  281. $this->error('参数不能为空');
  282. }
  283. $res = db('产品_工艺资料')->where('Gy0_cpdh',$code)->distinct(true)->column('rtrim(Gy0_方案) as gy_plan');
  284. $data['gy'] = $res;
  285. $product = db('产品_基本资料')->where('产品编号',$code)->find();
  286. $data['name'] = rtrim($product['产品名称']);
  287. $this->success('请求成功',$data);
  288. }
  289. /**
  290. * 复制产品工艺信息
  291. *
  292. * @ApiMethod POST
  293. * @params string from_code
  294. * @params string from_pro
  295. * @params string to_code
  296. * @params string to_pro
  297. * @params int is_copy_gy
  298. */
  299. public function copyProductGy(){
  300. if (Request::instance()->isPost() == false){
  301. $this->error('非法请求');
  302. }
  303. $params = Request::instance()->post();
  304. if (empty($params['from_code']) || empty($params['from_pro']) || empty($params['to_code']) ){
  305. $this->error('参数不能为空');
  306. }
  307. if ($params['is_copy_gy'] == 1){
  308. if (empty($params['to_pro'])){
  309. $this->error('工艺方案不能为空');
  310. }
  311. //查出参考的工艺数据
  312. $where['Gy0_cpdh'] = $params['from_code'];
  313. $where['Gy0_方案'] = $params['from_pro'];
  314. $gyList = db('产品_工艺资料')->where($where)->select();
  315. if (empty($gyList)){
  316. $this->error('参考产品无工艺资料数据');
  317. }
  318. $UniqID = db('产品_工艺资料')->order('UniqID desc')->value('UniqID');
  319. foreach ($gyList as $key=>$value){
  320. unset($gyList[$key]['UniqID']);
  321. $UniqID ++;
  322. $gyList[$key]['Gy0_方案'] = $params['to_pro'];
  323. $gyList[$key]['Gy0_cpdh'] = $params['to_code'];
  324. $gyList[$key]['UniqID'] = $UniqID;
  325. }
  326. }
  327. if ($params['is_copy_yb'] == 1){
  328. $UniqId = db('产品_印版资料')->order('UniqID desc')->value('UniqID');
  329. $option['YB_Cpdh'] = $params['from_code'];
  330. $ybList = db('产品_印版资料')->where($option)->select();
  331. if (empty($ybList)){
  332. $this->error('参考产品无印版资料数据');
  333. }
  334. foreach ($ybList as $key=>$value){
  335. unset($ybList[$key]['UniqID']);
  336. $UniqId++;
  337. $ybList[$key]['YB_Cpdh'] = $params['to_code'];
  338. $ybList[$key]['UniqID'] = $UniqId;
  339. }
  340. }
  341. if ($params['is_copy_gy'] == 1 && $params['is_copy_yb'] == 1){
  342. $gyResult = db('产品_工艺资料')->insertAll($gyList);
  343. if (!$gyResult){
  344. $this->error('复制产品工艺资料数据失败');
  345. }
  346. $ybResult = db('产品_印版资料')->insertAll($ybList);
  347. if (!$ybResult){
  348. $this->error('复制产品印版资料数据失败');
  349. }
  350. }elseif ($params['is_copy_gy'] == 1 && $params['is_copy_yb'] == 0){
  351. $gyResult = db('产品_工艺资料')->insertAll($gyList);
  352. if (!$gyResult){
  353. $this->error('复制产品工艺资料数据失败');
  354. }
  355. }else{
  356. $ybResult = db('产品_印版资料')->insertAll($ybList);
  357. if (!$ybResult){
  358. $this->error('复制产品印版资料数据失败');
  359. }
  360. }
  361. $this->success('工艺复制成功');
  362. }
  363. /**
  364. * 工艺方案更名
  365. *
  366. * @ApiMethod POST
  367. * @params string code
  368. * @params string name
  369. */
  370. public function editGyName(){
  371. if (Request::instance()->isPost() == false){
  372. $this->error('非法请求');
  373. }
  374. $params = Request::instance()->post();
  375. if (empty($params['code']) || empty($params['old_name']) || empty($params['new_name'])){
  376. $this->error('参数不能为空');
  377. }
  378. $where['Gy0_cpdh'] = $params['code'];
  379. $where['Gy0_方案'] = $params['old_name'];
  380. $sql = db('产品_工艺资料')->where($where)->fetchSql(true)->setField('Gy0_方案',$params['new_name']);
  381. $res = Db::query($sql);
  382. if ($res !== false){
  383. $this->success('更新成功');
  384. }else{
  385. $this->error('更新失败');
  386. }
  387. }
  388. /**
  389. * 工艺方案附加
  390. *
  391. * @ApiMethod POST
  392. * @params object data
  393. */
  394. public function editGyNo(){
  395. if (Request::instance()->isPost() == false){
  396. $this->error('非法请求');
  397. }
  398. $params = Request::instance()->post();
  399. if (empty($params) || !isset($params[0]['UniqID'])){
  400. $this->error('参数不能为空');
  401. }
  402. $i = 0;
  403. foreach ($params as $key=>$value){
  404. $data = [];
  405. if (!empty($value['Gy0_yjno'])){
  406. $data['Gy0_yjno'] = $value['Gy0_yjno'];
  407. }
  408. if (!empty($value['Gy0_gxh'])){
  409. $data['Gy0_gxh'] = $value['Gy0_gxh'];
  410. }
  411. if (!empty($value['Gy0_Ks'])){
  412. $data['Gy0_Ks'] = $value['Gy0_Ks'];
  413. }
  414. if (!empty($value['Gy0_ls'])){
  415. $data['Gy0_ls'] = $value['Gy0_ls'];
  416. }
  417. $sql = db('产品_工艺资料')->where('UniqID',$value['UniqID'])->fetchSql(true)->update($data);
  418. $res = Db::query($sql);
  419. if ($res !== false){
  420. $i++;
  421. }
  422. }
  423. if ($i !== 0){
  424. $this->success('更新成功');
  425. }else{
  426. $this->error('更新失败');
  427. }
  428. }
  429. /**
  430. * 计损色数修正
  431. *
  432. * @ApiMethod POST
  433. * @params object data
  434. */
  435. public function editGyMs(){
  436. if (Request::instance()->isPost() == false){
  437. $this->error('非法请求');
  438. }
  439. $params = Request::instance()->post();
  440. if (empty($params) || !isset($params[0]['UniqID'])){
  441. $this->error('参数不能为空');
  442. }
  443. $i = 0;
  444. foreach ($params as $key=>$value){
  445. $data = [];
  446. if (!empty($value['Gy0_Ms'])){
  447. $data['Gy0_Ms'] = $value['Gy0_Ms'];
  448. }
  449. if (!empty($value['Gy0_Ks'])){
  450. $data['Gy0_Ks'] = $value['Gy0_Ks'];
  451. }
  452. if (!empty($value['Gy0_ls'])){
  453. $data['Gy0_ls'] = $value['Gy0_ls'];
  454. }
  455. $data['Add_gxmc'] = $value['Add_gxmc'];
  456. $data['工序备注'] = $value['remark'];
  457. $sql = db('产品_工艺资料')->where('UniqID',$value['UniqID'])->fetchSql(true)->update($data);
  458. $res = Db::query($sql);
  459. if ($res !== false){
  460. $i++;
  461. }
  462. }
  463. if ($i !== 0){
  464. $this->success('更新成功');
  465. }else{
  466. $this->error('更新失败');
  467. }
  468. }
  469. /**
  470. * 产品质检废品系数调整
  471. *
  472. * @ApiMethod POST
  473. * @params object data
  474. */
  475. public function editGyWaste(){
  476. if (Request::instance()->isPost() == false){
  477. $this->error('非法请求');
  478. }
  479. $params = Request::instance()->post();
  480. if (empty($params) || !isset($params[0]['UniqID'])){
  481. $this->error('参数不能为空');
  482. }
  483. $i = 0;
  484. foreach ($params as $key=>$value){
  485. $data = [];
  486. if (!empty($value['artificial_zp'])){
  487. $data['人工检_正品板'] = $value['artificial_zp'];
  488. }
  489. if (!empty($value['artificial_cp'])){
  490. $data['人工检_次品板'] = $value['artificial_cp'];
  491. }
  492. if (!empty($value['artificial_fj'])){
  493. $data['人工检_废检'] = $value['artificial_fj'];
  494. }
  495. if (!empty($value['machine_zp'])){
  496. $data['机检_正品板'] = $value['machine_zp'];
  497. }
  498. if (!empty($value['machine_cp'])){
  499. $data['机检_次品板'] = $value['machine_cp'];
  500. }
  501. if (!empty($value['machine_fj'])){
  502. $data['机检_废检'] = $value['machine_fj'];
  503. }
  504. $sql = db('产品_工艺资料')->where('UniqID',$value['UniqID'])->fetchSql(true)->update($data);
  505. $res = Db::query($sql);
  506. if ($res !== false){
  507. $i++;
  508. }
  509. }
  510. if ($i !== 0){
  511. $this->success('更新成功');
  512. }else{
  513. $this->error('更新失败');
  514. }
  515. }
  516. }