ProcessDocument.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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 ProcessDocument 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. * @params string order
  26. */
  27. public function getData(){
  28. if (Request::instance()->isGet() == false){
  29. $this->error('非法请求');
  30. }
  31. $params = Request::instance()->param();
  32. $order = $params['order'];
  33. if (!isset($order)){
  34. $this->error('参数不能为空');
  35. }
  36. $map = array();
  37. $map['a.Gd_gdbh'] = $order;
  38. //胶印车间计量单位为”张“,凹印车间计量单位一般为”吨“
  39. $info = db('工单_基本资料')->alias('a')
  40. ->join('工单_bom资料 b ',' a.Gd_gdbh=b.BOM_工单编号','left')
  41. ->field('a.成品代号,a.产品版本号,b.BOM_计划用量,b.BOM_物料名称')
  42. ->where($map)
  43. ->where('b.BOM_产出单位',['eq','张'],['eq','吨'],'or')
  44. ->select();
  45. if(empty($info)){
  46. $this->success('请求成功');
  47. }
  48. $res =array();
  49. $product_number = '';
  50. if (count($info) > 1){
  51. foreach ($info as $k=>$v){
  52. $product_number = rtrim($v['成品代号']);
  53. $str = rtrim($v['BOM_物料名称']);
  54. $res['paper'][$k] ['bom_物料名称'] = $str;
  55. $res['paper'][$k] ['产品版本号'] = rtrim($v['产品版本号']);
  56. $res['paper'][$k] ['bom_计划用量'] = intval($v['BOM_计划用量']);
  57. }
  58. $list = Db::connect('db2')->name('qr_history_peijian')
  59. ->where('FIND_IN_SET(:product_number, product_number)')
  60. ->bind(['product_number' => $product_number])
  61. ->field('id,peijian_name')->select();
  62. $res['peijian'] = $list;
  63. }else{
  64. $res['paper'][0]['bom_物料名称'] = rtrim($info[0]['BOM_物料名称']);
  65. $res['paper'][0]['产品版本号'] = rtrim($info[0]['产品版本号']);
  66. $res['paper'][0]['bom_计划用量'] = intval($info[0]['BOM_计划用量']);
  67. }
  68. $res['num'] = count($info);
  69. $this->success('请求成功',$res);
  70. }
  71. /**
  72. * 获取历史工艺信息
  73. *
  74. * @ApiMethod GET
  75. * @params string order
  76. */
  77. public function getHistory(){
  78. if (Request::instance()->isGet() == false){
  79. $this->error('非法请求');
  80. }
  81. $params = Request::instance()->param();
  82. $order = $params['order'];
  83. if (!isset($params['order'])){
  84. $this->error('参数不能为空');
  85. }
  86. $where = array();
  87. $where['Gd_gdbh'] = $order;
  88. $where['行号'] = 1;
  89. $product = db('工单_基本资料')
  90. ->where($where)
  91. ->field('成品代号')
  92. ->find();
  93. $map =array();
  94. $map['product_number'] = rtrim($product['成品代号']);
  95. if ($params['peijian'] > 0){
  96. $map['peijian'] = $params['peijian'];
  97. }
  98. $res = Db::connect('db2')->name('qr_history')->where($map)->order('id desc')->field('data,update')->find();
  99. $result = array();
  100. $result['update'] = '暂无';
  101. $result['data'] = '';
  102. $result['num'] = 0;
  103. $result['department'] = '车间';
  104. if ($res){
  105. $data = explode(',',$res['data']);
  106. $result['num'] = 1;
  107. $result['data'] = $data;
  108. $result['update'] = $res['update'];
  109. }
  110. $this->success('请求成功',$result);
  111. }
  112. /**
  113. * 保存产品工艺信息
  114. *
  115. * @ApiMethod POST
  116. * @params
  117. */
  118. public function saveData(){
  119. if (Request::instance()->isPost() == false){
  120. $this->error('非法请求');
  121. }
  122. $params = Request::instance()->param();
  123. if (empty($params['order'])){
  124. $this->error('参数不能为空');
  125. }
  126. $ip = request()->ip();
  127. //定义各部门ip地址
  128. $JYarray=array('20.0.3.253','60.190.242.28','127.0.0.1');
  129. $WYarray=array('20.0.3.110','60.190.242.26');
  130. $MQarray=array('20.0.2.200','60.190.242.29');
  131. $department = -1;
  132. //确认是不是凹印车间,ip确认部门不准
  133. $explode_data = explode(',',$params['data']);
  134. if (in_array($ip,$MQarray)){
  135. $department = 3;
  136. }elseif (in_array($ip,$WYarray) || $explode_data[0] == '卷凹' || $explode_data[0] == '凹印'){
  137. $department = 2;
  138. }else{
  139. $department = 1;
  140. }
  141. $data = [];
  142. $data['department'] = $department;
  143. $data['data'] = substr($params['data'],0,-1);
  144. $where = array();
  145. $where['Gd_gdbh'] = $params['order'];
  146. $where['行号'] = 1;
  147. $product = db('工单_基本资料')
  148. ->where($where)
  149. ->field('成品代号')
  150. ->find();
  151. $data['product_number'] = rtrim($product['成品代号']);
  152. $map['product_number'] = $data['product_number'];
  153. $map['department'] = $department;
  154. if ($params['peijian']){
  155. $map['peijian'] = $params['peijian'];
  156. }
  157. $data['update'] = date('Y-m-d H:i:s');
  158. $data['ip'] =$ip;
  159. $isNull = Db::connect('db2')->name('qr_history')->where($map)->find();
  160. if ($isNull){//去更新工艺及时间
  161. $res = Db::connect('db2')->name('qr_history')->where('id',$isNull['id'])->update($data);
  162. }else{//新增
  163. $res = Db::connect('db2')->name('qr_history')->insert($data);
  164. }
  165. if ($res){
  166. $this->success('更新成功');
  167. }else{
  168. $this->error('更新失败');
  169. }
  170. }
  171. /**
  172. * 获取流程单头部信息
  173. *
  174. * @ApiMethod POST
  175. * @params string order
  176. */
  177. public function getInfo(){
  178. if (Request::instance()->isPost() == false){
  179. $this->error('非法请求');
  180. }
  181. $data = Request::instance()->param();
  182. if (!isset($data['order'])){
  183. $this->error('参数不能为空');
  184. }
  185. $str = '原纸';
  186. $where = [
  187. 'Gd_gdbh'=> $data['order'],
  188. ];
  189. $field = 'Gd_gdbh,rtrim(销售订单号) as 销售订单号,rtrim(Gd_cpmc) as Gd_cpmc,rtrim(成品名称) as 成品名称,计划投料,实际投料,rtrim(产品版本号) as 产品版本号,rtrim(警语版面) as 警语版面,
  190. rtrim(Gd_desc) as Gd_desc';
  191. $gdinfo = db('工单_基本资料')
  192. ->where($where)
  193. ->field($field)
  194. ->select();
  195. $length = count($gdinfo);
  196. if (!empty($data['num'])){
  197. $gdinfo[0]['计划投料'] = $data['num'];
  198. }
  199. if (rtrim($gdinfo[0]['成品名称']) == ''){
  200. $cpmc = trim($gdinfo[0]['Gd_cpmc']);
  201. $gdinfo[0]['成品名称'] = $cpmc;
  202. }
  203. $gdinfo[0]['mabao'] = $data['mabao'];
  204. $gdinfo[0]['version'] = $data['version'];
  205. $gdinfo[0]['liucheng_num'] = '';
  206. $newdata = explode(',',$data['string']);
  207. $gdinfo['gy_data'] = array_filter($newdata);
  208. $gdinfo['technique_sequence'] = trim($gdinfo[0]['version']).'、'.trim($gdinfo[0]['警语版面']).'、'.trim($gdinfo[0]['Gd_desc']);
  209. $gdinfo['total_liuchen'] = ceil(($gdinfo[0]['计划投料']?$gdinfo[0]['计划投料']:$gdinfo[0]['实际投料']*10000)/$data['tldx']); //总的流程数
  210. $gdinfo['length'] = $length;
  211. $this->success('请求成功',$gdinfo);
  212. }
  213. }