ApplyBatchController.class.php 9.20 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <?php
  2. /**
  3. * author Gentle
  4. * intro 申请批次
  5. */
  6. namespace Admin\Controller;
  7. use Think\Page;
  8. class ApplyBatchController extends AdminController
  9. {
  10. /**
  11. * author Gentle
  12. * intro 类初始化方法
  13. * param
  14. * return
  15. */
  16. public function _initialize()
  17. {
  18. parent::_initialize(); // TODO: Change the autogenerated stub
  19. $this->uid = session('user_auth.uid');
  20. }
  21. /**
  22. * author Gentle
  23. * intro 获取用户组
  24. * param
  25. */
  26. public function GetGroups()
  27. {
  28. $uid = $this->uid;
  29. $admin_access_model = D(Admin_access);
  30. $groups = $admin_access_model->where('uid=' . $uid)->getField('group');//1 超级管理 2 印刷厂 3 中烟
  31. return $groups;
  32. }
  33. /**
  34. * author Gentle
  35. * intro 申请批次首页
  36. * param
  37. */
  38. public function Index()
  39. {
  40. /**
  41. * @author Gentle
  42. * @tro 遍历展示产品名称、盒型
  43. * @time 2017年9月11日09:35:58
  44. */
  45. $printer_list = M(Admin_access)
  46. ->join('__ADMIN_USER__ ON __ADMIN_USER__.id = __ADMIN_ACCESS__.uid')
  47. ->field('QR_ADMIN_USER.id printer_id,QR_ADMIN_USER.nickname printer_name')
  48. ->where('QR_ADMIN_ACCESS.group=2')->order('QR_ADMIN_USER.id asc')->select();
  49. foreach ($printer_list as $val) {
  50. $printer[] = $val;
  51. }
  52. $factory_model = D(Factory);
  53. $list2 = $factory_model->field('id,name')->where('id>0')->order('id asc')->select();
  54. foreach ($list2 as $val) {
  55. $factory_result[] = $val;
  56. $factory_id[] = $val['id'];
  57. }
  58. $product_model = D(Product);
  59. $list = $product_model->field('id,name')->where('factory_id IN (' . implode(',', $factory_id) . ')')->order('id asc')->select();
  60. foreach ($list as $val) {
  61. $product_result[] = $val;
  62. $product_id[] = $val['id'];
  63. }
  64. //暂时不使用
  65. $list2 = M(Product_box_type)
  66. ->join('__BOX_TYPE__ ON __BOX_TYPE__.id = __PRODUCT_BOX_TYPE__.box_type_id')
  67. ->field('QR_BOX_TYPE.id type_id,QR_BOX_TYPE.name box_type_name')
  68. ->where('QR_PRODUCT_BOX_TYPE.product_id>0')->order('QR_PRODUCT_BOX_TYPE.id asc')->select();
  69. foreach ($list2 as $val) {
  70. $box_type_result[] = $val['type_id'];
  71. }
  72. $this->assign('printer', $printer);
  73. $this->assign('product_result', $product_result);
  74. $this->assign('factory_result', $factory_result);
  75. $this->assign('meta_title', '申请批次');
  76. $this->display();
  77. }
  78. /**
  79. * author Gentle
  80. * intro 申请批次列表页面
  81. * param
  82. */
  83. public function ApplyList()
  84. {
  85. /**
  86. * @author Gentle
  87. * @tro 遍历展示申请批次列表
  88. * @time 2017年9月12日14:17:17
  89. */
  90. //分页
  91. $bach = M(Bach);
  92. $owner_id = $this->uid;
  93. $page = new Page(
  94. $bach->where('owner_id=' . $owner_id)->count(),
  95. C('ADMIN_PAGE_ROWS')
  96. );
  97. $show = $page->show();
  98. $groups = $this->GetGroups();
  99. if ($groups = '3') {
  100. $where = 'QR_BACH.owner_id';
  101. } else if ($groups = '2') {
  102. $where = 'QR_BACH.printer_id';
  103. } else {
  104. $where = 'QR_BACH.id > 0';
  105. }
  106. $bach_list = M(Bach)
  107. ->join('__ADMIN_USER__ ON __ADMIN_USER__.id = __BACH__.printer_id')
  108. ->field('QR_BACH.id bach_id,QR_BACH.name bach_name,QR_BACH.add_time,QR_ADMIN_USER.nickname printer_name')
  109. ->limit($page->firstRow . ',' . $page->listRows)
  110. ->where($where)->order('QR_BACH.id desc')->select();
  111. $this->assign('bach_page', $show);
  112. $this->assign('bach_list', $bach_list);
  113. $this->assign('meta_title', '批次列表');
  114. $this->display();
  115. }
  116. /**
  117. * author Gentle
  118. * intro 任务列表页面
  119. * param
  120. */
  121. public function TaskList()
  122. {
  123. /**
  124. * @author Gentle
  125. * @tro 遍历展示申请批次列表
  126. * @time 2017年9月15日13:17:17
  127. */
  128. $bach_id = $_GET['bach_id'];
  129. //分页
  130. $task = M(Task);
  131. $page = new Page(
  132. $task->where('bach_id=' . $bach_id)->count(),
  133. C('ADMIN_PAGE_ROWS')
  134. );
  135. $show = $page->show();
  136. $task_ids = $task->field('id,bach_id,product_id')->where('bach_id=' . $bach_id)->order('id desc')->select();
  137. foreach ($task_ids as $val) {
  138. $task_list[] = M(Task)
  139. ->join('__FACTORY__ ON __FACTORY__.id=__TASK__.factory_id ')
  140. ->join('__ADMIN_USER__ ON __ADMIN_USER__.id = __TASK__.printer_id')
  141. ->join('__PRODUCT_BOX_TYPE__ ON __PRODUCT_BOX_TYPE__.id=__TASK__.product_id')
  142. ->join('__PRODUCT__ ON __PRODUCT__.id=__PRODUCT_BOX_TYPE__.product_id')
  143. ->join('__BOX_TYPE__ ON __BOX_TYPE__.id=__PRODUCT_BOX_TYPE__.box_type_id')
  144. ->field('QR_PRODUCT_BOX_TYPE.product_id,QR_ADMIN_USER.nickname printer_name,QR_TASK.id task_id,QR_TASK.name task_name,QR_TASK.quality,QR_TASK.add_time,QR_TASK.is_verif,QR_TASK.bach_id,QR_TASK.status,QR_FACTORY.name factory_name,QR_PRODUCT.name product_name,QR_BOX_TYPE.name box_type_name')
  145. ->where('QR_TASK.id= ' . $val['id'])->select();
  146. }
  147. foreach ($task_list as $val) {
  148. foreach ($val as $v) {
  149. $v['filename'] = $v['bach_id'] . '_' . $v['task_id'] . '_' . $v['product_id'];
  150. $task_list2[] = $v;
  151. }
  152. }
  153. $this->assign('task_page', $show);
  154. $this->assign('task_list', $task_list2);
  155. $this->assign('meta_title', '批次列表');
  156. $this->display();
  157. }
  158. /**
  159. * author Gentle
  160. * intro 任务详情页面
  161. * param 2017年9月15日15:31:22
  162. */
  163. public function TaskDetail()
  164. {
  165. /**
  166. * @author Gentle
  167. * @tro 批次详情页面展示
  168. * @time 2017年9月13日19:27:28
  169. */
  170. $task_id = $_GET['task_id'];
  171. $task_detail = M(Task)
  172. ->join('__FACTORY__ ON __FACTORY__.id=__TASK__.factory_id ')
  173. ->join('__PRODUCT_BOX_TYPE__ ON __PRODUCT_BOX_TYPE__.id=__TASK__.product_id')
  174. ->join('__PRODUCT__ ON __PRODUCT__.id=__PRODUCT_BOX_TYPE__.product_id')
  175. ->join('__BOX_TYPE__ ON __BOX_TYPE__.id=__PRODUCT_BOX_TYPE__.box_type_id')
  176. ->field('QR_TASK.id task_id,QR_TASK.name task_name,QR_TASK.quality,QR_TASK.redundancy,QR_TASK.add_time,QR_TASK.is_verif,QR_TASK.bach_id,QR_TASK.status,QR_FACTORY.name factory_name,QR_PRODUCT.name product_name,QR_BOX_TYPE.name box_type_name')
  177. ->where('QR_TASK.id=' . $task_id)->order('QR_TASK.id asc')->select();
  178. $this->assign('task_detail', $task_detail);
  179. $this->assign('meta_title', '批次详情');
  180. $this->display();
  181. }
  182. /**
  183. * author Gentle
  184. * intro 申请批次方法
  185. * param
  186. * return bool
  187. */
  188. public function ApplyForm()
  189. {
  190. if (IS_POST) {
  191. $bach_object = D("Bach");
  192. $bach_product_object = D("Bach_product");
  193. $task_object = D("Task");
  194. //校验$_POST数据
  195. if (empty($_POST['product_id'])) {
  196. alert(array('info' => '产品不能为空', 'status' => 2));
  197. exit;
  198. }
  199. if (empty($_POST['factory_id'])) {
  200. alert(array('info' => '工厂名称不能为空', 'status' => 3));
  201. exit;
  202. }
  203. if (empty($_POST['printer_id'])) {
  204. alert(array('info' => '印刷厂名称不能为空', 'status' => 4));
  205. exit;
  206. }
  207. if (empty($_POST['code_num1']) and empty($_POST['code_num2'])) {
  208. alert(array('info' => '条盒、小包数量必须有一个大于0', 'status' => 5));
  209. exit;
  210. }
  211. $product_id = $_POST['product_id'];
  212. $factory_id = $_POST['factory_id'];
  213. $printer_id = $_POST['printer_id'];
  214. $is_verif = $_POST['is_verif'];
  215. $remark = $_POST['remark'];
  216. $code_num = [
  217. 'code_num1' => $_POST['code_num1'],
  218. 'code_num2' => $_POST['code_num2']
  219. ];
  220. //查找产品、类别关联表
  221. $product_box_type_ids = M(Product_box_type)
  222. ->field('id')
  223. ->where('product_id=' . $product_id)->order('box_type_id asc')->select();
  224. foreach ($product_box_type_ids as $val) {
  225. $product_box_type_id[] = $val['id'];
  226. }
  227. $data = [];
  228. $data['name'] = 'MNYH_' . date("Ymdhi", time());
  229. $data['add_time'] = time();
  230. $data['remark'] = $remark;
  231. $data['printer_id'] = $printer_id;
  232. $data['owner_id'] = $this->uid;
  233. $param = [];
  234. $param['product_id'] = $product_id;
  235. $param['is_verif'] = $is_verif;
  236. $param['add_time'] = time();
  237. $param['remark'] = $remark;
  238. $param1 = $param;
  239. $param2 = $param;
  240. $param1['num'] = $code_num['code_num1'];
  241. $param1['product_id'] = $product_box_type_id[0];
  242. $param2['num'] = $code_num['code_num2'];
  243. $param2['product_id'] = $product_box_type_id[1];
  244. $add_param = [
  245. $param1,
  246. $param2
  247. ];
  248. $params = [];
  249. $params['name'] = $data['name'];
  250. $params['factory_id'] = $factory_id;
  251. $redundancy_s = 0.1;//冗码率
  252. $params['is_verif'] = $is_verif;
  253. $params['add_time'] = time();
  254. $params['remark'] = $remark;
  255. $params['status'] = '0';
  256. $params['printer_id'] = $printer_id;
  257. $params['owner_id'] = $this->uid;
  258. $params1 = $params;
  259. $params2 = $params;
  260. $params1['quality'] = $code_num['code_num1'];
  261. $params1['redundancy'] = $code_num['code_num1'] * $redundancy_s;
  262. $params1['product_id'] = $product_box_type_id[0];
  263. $params2['quality'] = $code_num['code_num2'];
  264. $params2['redundancy'] = $code_num['code_num2'] * $redundancy_s;
  265. $params2['product_id'] = $product_box_type_id[1];
  266. if ($data && $add_param) {
  267. $bach_id = $bach_object->add($data);
  268. $param1['bach_id'] = $bach_id;
  269. $param2['bach_id'] = $bach_id;
  270. $add_param = [
  271. $param1,
  272. $param2
  273. ];
  274. $bach_product_id = $bach_product_object->addAll($add_param);
  275. if ($bach_id && $bach_product_id) {
  276. $params1['bach_id'] = $bach_id;
  277. $params2['bach_id'] = $bach_id;
  278. $add_params = [
  279. $params1,
  280. $params2
  281. ];
  282. $task_id = $task_object->addAll($add_params);
  283. if ($task_id) {
  284. alert(array('info' => '申请成功', 'url' => "index.php?s=/Admin/ApplyBatch/applylist.html", 'status' => 1));
  285. } else {
  286. alert(array('info' => '申请失败', 'url' => "__SELF__", 'status' => 0));
  287. }
  288. } else {
  289. $this->error($bach_object->getError());
  290. }
  291. } else {
  292. $this->error($bach_object->getError());
  293. }
  294. } else {
  295. // 跳转到申请批次页面
  296. header("Location: {:U('ApplyBatch/applylist')}");
  297. }
  298. }
  299. /**
  300. * author Gentle
  301. * intro 调用下载函数
  302. * param
  303. */
  304. public function DownloadZip()
  305. {
  306. $bach_id = $_GET['bach_id'];
  307. if (!downZip($bach_id)) {
  308. if (session('user_auth.uid') == 1) {
  309. $this->error('暂不支持管理员操作');
  310. } else {
  311. $this->error('文件不存在,请联系管理员');
  312. }
  313. }
  314. }
  315. }