ExportController.class.php 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238
  1. <?php
  2. namespace Admin\Controller;
  3. use Think\Page;
  4. class ExportController extends AddonController
  5. {
  6. /*导出列表*/
  7. public function index(){
  8. $this->display('index');
  9. }
  10. /*获取需要导出大件标签*/
  11. public function exportDetail(){
  12. $field="product_name";
  13. if($_SESSION['ly_admin_']['user_auth']['uid']==1){
  14. $productlist = M('qcode_product')->field($field)->where('id!=0')->select();
  15. $user_list = array();
  16. $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  17. $user_list_1 = M('admin_user')
  18. ->alias('a')
  19. ->join('qr_admin_access access on a.id = access.uid')
  20. ->field('a.id,a.nickname')
  21. ->where('a.status = 1 and (access.group = 4 or access.group = 1)')
  22. ->select();
  23. $user_list = array_merge($user_list,$user_list_1);
  24. }else{
  25. $product_id = M('admin_user')->where('id = '.$_SESSION['ly_admin_']['user_auth']['uid'])->getField('product_id');
  26. $productlist = [];
  27. if(!empty($product_id)){
  28. $productlist = M('qcode_product')->where('id in ('.$product_id.')')->select();
  29. }
  30. $user_list = array();
  31. $user_list[0] = ['id'=>$_SESSION['ly_admin_']['user_auth']['uid'],'nickname'=>$_SESSION['ly_admin_']['user_auth']['nickname']];
  32. }
  33. $this->assign('productlist',$productlist);
  34. $this->assign('userlist',$user_list);
  35. $this->display('detail');
  36. }
  37. /*获取导出列表*/
  38. public function exportExcel(){
  39. $field="product_name";
  40. if($_SESSION['ly_admin_']['user_auth']['uid']==1){
  41. $productlist = M('qcode_product')->field($field)->where('id!=0')->select();
  42. $user_list = array();
  43. $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  44. $user_list_1 = M('admin_user')
  45. ->alias('a')
  46. ->join('qr_admin_access access on a.id = access.uid')
  47. ->field('a.id,a.nickname')
  48. ->where('a.status = 1 and (access.group = 4 or access.group = 1)')
  49. ->select();
  50. $user_list = array_merge($user_list,$user_list_1);
  51. }else{
  52. $product_id = M('admin_user')->where('id = '.$_SESSION['ly_admin_']['user_auth']['uid'])->getField('product_id');
  53. $productlist = [];
  54. if(!empty($product_id)){
  55. $productlist = M('qcode_product')->where('id in ('.$product_id.')')->select();
  56. }
  57. $user_list = array();
  58. $user_list[0] = ['id'=>$_SESSION['ly_admin_']['user_auth']['uid'],'nickname'=>$_SESSION['ly_admin_']['user_auth']['nickname']];
  59. }
  60. $this->assign('productlist',$productlist);
  61. $this->assign('userlist',$user_list);
  62. $this->display('excel');
  63. }
  64. /*此方法暂时搁置*/
  65. public function exportBach(){
  66. $field="product_name";
  67. if($_SESSION['ly_admin_']['user_auth']['uid']==1){
  68. $productlist = M('qcode_product')->field($field)->where('id!=0')->select();
  69. $user_list = array();
  70. $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  71. $user_list_1 = M('admin_user')
  72. ->alias('a')
  73. ->join('qr_admin_access access on a.id = access.uid')
  74. ->field('a.id,a.nickname')
  75. ->where('a.status = 1 and (access.group = 4 or access.group = 1)')
  76. ->select();
  77. $user_list = array_merge($user_list,$user_list_1);
  78. }else{
  79. $product_id = M('admin_user')->where('id = '.$_SESSION['ly_admin_']['user_auth']['uid'])->getField('product_id');
  80. $productlist = [];
  81. if(!empty($product_id)){
  82. $productlist = M('qcode_product')->where('id in ('.$product_id.')')->select();
  83. }
  84. $user_list = array();
  85. $user_list[0] = ['id'=>$_SESSION['ly_admin_']['user_auth']['uid'],'nickname'=>$_SESSION['ly_admin_']['user_auth']['nickname']];
  86. }
  87. $this->assign('productlist',$productlist);
  88. $this->assign('userlist',$user_list);
  89. $this->display('bach');
  90. }
  91. /*获取大件详情*/
  92. public function getBigData(){
  93. /*批次有正常和删除状态,0为未删除,1为已删除;大件0为未删除,1为已删除*/
  94. $session_config=I('session.ly_admin_');//获取登陆的session值
  95. $where = [];
  96. if($_POST['sysCdNm']){//有搜索产品名称
  97. $where['a.matter_name'] = $_POST['sysCdNm'];
  98. }
  99. if($_POST['startDate']){//有开始打印日期
  100. $statrtime=((int)date('Ymd',(strtotime($_POST['startDate'])))-20000000);
  101. $endtime=((int)date('Ymd',(strtotime($_POST['endDate'])))-20000000);
  102. $where['a.manufacture_date']=array(array('egt',$statrtime),array('elt',$endtime),'AND');
  103. }
  104. if($session_config['user_auth']['uid']==1){
  105. if($_POST['user_name']!=0){
  106. $where['a.userid']=$_POST['user_name'];
  107. }
  108. }else{
  109. $where['a.userid']=$session_config['user_auth']['uid'];
  110. }
  111. if($_POST['bach_num']!=''){
  112. $where['a.bach_num']=array('like','%'.trim($_POST['bach_num']).'%');
  113. }
  114. $where['a.bach_status']=0;
  115. $where['large.l_status']=0;
  116. $BatchList=M('qcode_bach')
  117. ->alias('a')
  118. ->join('qr_qcode_large large on large.bach_id=a.id')
  119. ->field('a.id bach_id,a.matter_name,a.manufacture_date,a.tray_num,a.bach_num,large.code_cp1,large.id large_id,large.code')
  120. ->order($_POST['sort'].' '.$_POST['order'])
  121. ->page($_POST['page'],$_POST['rows'])
  122. ->where($where)
  123. ->select();
  124. $total = M('qcode_bach')->alias('a')
  125. ->join('qr_qcode_large large on large.bach_id=a.id')
  126. ->where($where)
  127. ->count();
  128. /*查询第三个值*/
  129. foreach($BatchList as &$v){
  130. $v['count'] = M('qcode_small')->where('large_id = '.$v['large_id'].' and status = 0')->count();
  131. }
  132. $result = [];
  133. $result['total'] = $total;
  134. $result['rows'] = $BatchList;
  135. $bachlist = json_encode($result);
  136. echo $bachlist;
  137. }
  138. /*获取excel详情*/
  139. public function getExcelData(){
  140. /*批次有正常和删除状态,0为未删除,1为已删除;大件0为未删除,1为已删除*/
  141. $session_config=I('session.ly_admin_');//获取登陆的session值
  142. $where = [];
  143. if($_POST['sysCdNm']){//有搜索产品名称
  144. $where['matter_name'] = $_POST['sysCdNm'];
  145. }
  146. if($_POST['startDate']){//有开始打印日期
  147. $statrtime=strtotime($_POST['startDate']);
  148. $endtime=strtotime($_POST['endDate'])+86400-1;
  149. $where['date']=array(array('egt',$statrtime),array('elt',$endtime),'AND');
  150. }
  151. if($session_config['user_auth']['uid']==1){
  152. if($_POST['user_name']!='全部'){
  153. $where['username']=$_POST['user_name'];
  154. // $where['userid']=$session_config['user_auth']['uid'];
  155. }
  156. }else{
  157. $where['userid']=$session_config['user_auth']['uid'];
  158. // $where['username'] = $session_config['user_auth']['nickname'];
  159. }
  160. $where['status']=$_POST['status'];
  161. $BatchList=M('qcode_export')
  162. ->order($_POST['sort'].' '.$_POST['order'])
  163. ->page($_POST['page'],$_POST['rows'])
  164. ->where($where)
  165. ->select();
  166. $total = M('qcode_export')
  167. ->where($where)
  168. ->count();
  169. $result = [];
  170. $result['total'] = $total;
  171. $result['rows'] = $BatchList;
  172. $excellist = json_encode($result);
  173. echo $excellist;
  174. }
  175. /*获取小件列表*/
  176. public function getSmall(){
  177. $id = $_POST['largeId']!=0?$_POST['largeId']:0;
  178. $result=M('qcode_large')
  179. ->alias('l')
  180. ->join('qr_qcode_small s on s.large_id=l.id')
  181. ->field('s.code,s.code_cp1,s.p_nums,s.status,s.large_id,l.code_cp1 as l_code_sp1')
  182. ->where('l.id = '.$id)
  183. ->select();
  184. echo json_encode($result);
  185. }
  186. /*删除导出列表*/
  187. public function changeExcelData(){
  188. $id = $_POST['id'];
  189. /*查询导出记录*/
  190. $exportExcel = M('qcode_export')->find($id);
  191. /*修改大件的发货状态*/
  192. M()->startTrans();
  193. $update_ret = M('qcode_large')->where('id in ('.$exportExcel['large_str'].')')->setField('l_status',0);
  194. if($update_ret){
  195. //无导出excel
  196. // $return = M('qcode_export')->where('id = '.$id)->setField('status',1);
  197. // if($return){
  198. // M()->commit();
  199. // $this->ajaxReturn(['status'=>1,'msg'=>'删除成功']);
  200. // die;
  201. // }else {
  202. // M()->rollback();
  203. // $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  204. // }
  205. //插入数据库
  206. $return = M('qcode_export')->where('id = '.$id)->setField('status',1);
  207. if($return){
  208. if(strtoupper(substr(PHP_OS,0,3))==='WIN'){
  209. $dir = iconv("utf-8", "gb2312",$exportExcel['file_dir']);
  210. }else{
  211. $dir = $exportExcel['file_dir'];
  212. }
  213. $res = unlink($dir);
  214. if($res){
  215. M()->commit();
  216. $this->ajaxReturn(['status'=>1,'msg'=>'删除成功']);
  217. die;
  218. }else{
  219. M()->rollback();
  220. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  221. }
  222. }else {
  223. M()->rollback();
  224. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  225. }
  226. }
  227. }
  228. /*excel导出*/
  229. public function export(){
  230. header("Content-type: text/html; charset=utf-8");
  231. $bach = I('bach_id');
  232. $bach_list = M('qcode_bach')->find($bach);
  233. $manufacture_date = $bach_list['manufacture_date'];
  234. $print_date = $bach_list['print_date'];
  235. $bach_list['manufacture_date'] = $this->getData($bach_list['manufacture_date']);
  236. $bach_list['print_date'] = $this->getData($bach_list['print_date']);
  237. if(empty($bach_list)){
  238. $arr = array('status'=>0,'msg'=>'违法请求,请重新请求');
  239. }else{
  240. $bach_list['data'] = M('qcode_bach')
  241. ->alias('bach')
  242. ->join('qr_qcode_large large ON large.bach_id = bach.id')
  243. ->join('qr_qcode_small small ON small.large_id = large.id')
  244. ->field('large.code lcode,large.code_cp1 lcode_cp1,large.code_cp2 lcode_cp2,small.code scode,small.code_cp1 scode_cp1,small.code_cp2 scode_cp2')
  245. ->where('bach.id = '.$bach.' and small.status = 0')
  246. ->select();
  247. }
  248. $bach_list['count'] = count($bach_list['data']);
  249. $return = $this->excelExport($bach_list);
  250. if($return){
  251. $arr = array('status'=>1,'msg'=>'导出完成','url'=>$return);
  252. }
  253. $this->ajaxReturn($arr);
  254. }
  255. /*获取时间格式*/
  256. public function getData($date){
  257. return '20'.substr($date,0,2).'/'.substr($date,2,2).'/'.substr($date,4,2);
  258. }
  259. /*补0*/
  260. public function addZero($a,$le,$pos='left'){
  261. $str =$a;
  262. $len = substr($a);
  263. $cha = $le-$len;
  264. if($cha>0){
  265. if($pos=='left'){
  266. $str = str_pad($str,$le,"0",STR_PAD_LEFT);
  267. }else{
  268. $str = str_pad($str,$le,"0",STR_PAD_RIGHT);
  269. }
  270. }
  271. return $str;
  272. }
  273. /**
  274. * 支持多批次导出操作
  275. */
  276. // public function newexport(){
  277. // $session_config=I('session.ly_admin_');
  278. //
  279. // $id = substr($_POST['id'],0,-1);
  280. //
  281. // /*检查所有大件的状态*/
  282. //// $return = $this->checkStatus($id);
  283. //// if(!$return){
  284. //// $this->ajaxReturn(['status'=>0,'msg'=>'参数违法,请重新提交']);
  285. //// }
  286. //
  287. // $bach_id_arr = M('qcode_large')
  288. // ->where('l_status = 0 and id IN ('.$id.')')
  289. // ->group(true)
  290. // ->getField('bach_id',true);
  291. //
  292. // for ($i=0; $i<count($bach_id_arr);$i++){
  293. // /*获取基本数据*/
  294. // $res = M('qcode_bach')
  295. // ->field('file_no,order_no,supplier_name,supplier_code,supplier_id,matter_name,matter_no,manufacture_date,print_date,l_reservation,s_reservation,l_flow,s_flow,l_weight,s_weight,larger_num,tray_num,box_num,bach_num')
  296. // ->where('id ='.$bach_id_arr[$i])
  297. // ->find();
  298. //
  299. // $larger_id = M('qcode_large')
  300. // ->where('id in ('.$id.') and bach_id = '.$bach_id_arr[$i])
  301. // ->getField('id',true);
  302. //
  303. // $larger_id_str = implode(',',$larger_id);
  304. //
  305. // $res['larger_num'] = count($larger_id);
  306. // $res['small_num'] = M('qcode_small')->where('large_id in ('.$larger_id_str.')')->count();
  307. //
  308. // //插入数据库
  309. // $add = [];
  310. // if ($res['box_num']!=1){
  311. // $add['num'] = $res['box_num'];
  312. // $add['mater_type'] = 1;
  313. // }else{
  314. // $add['num'] = $res['s_weight'];
  315. // $add['mater_type'] = 2;
  316. // }
  317. // $add['userid'] = $session_config['user_auth']['uid'];
  318. // $add['username'] = $res['supplier_name'];
  319. // $add['matter_name'] = $res['matter_name'];
  320. // $add['matter_no'] = $res['matter_no'];
  321. // $add['large_str'] = $larger_id_str;
  322. // $add['large_num'] = $res['larger_num'];
  323. // $add['small_num'] = $res['small_num'];
  324. // $add['bach_num'] = $res['bach_num'];
  325. // $add['date'] = time();
  326. // $add['file_dir'] = '';
  327. // $add['status'] = 0;
  328. // $data[$i] = $add;
  329. //
  330. // }
  331. // M()->startTrans();
  332. // $update_ret = M('qcode_large')->where('id in ('.$id.')')->setField('l_status',1);
  333. //
  334. //
  335. // if($update_ret){
  336. //
  337. // $return = M('qcode_export')->addAll($data);
  338. //
  339. //
  340. // if($return){
  341. // M()->commit();
  342. //
  343. // $arr = ['status'=>1,'msg'=>'操作成功','url'=>''];
  344. // }else{
  345. // M()->rollback();
  346. // $arr = ['status'=>0,'msg'=>'系统飞走了,请稍后再试'];
  347. // }
  348. // }
  349. // $this->ajaxReturn($arr);
  350. //
  351. // }
  352. /*导出初版本*/
  353. public function export1(){
  354. $id = substr($_POST['id'],0,-1);
  355. $count = $_POST['sum'];
  356. /*检查数量是否正确*/
  357. $return = $this->checkCount($id,$count);
  358. if(!$return){
  359. $this->ajaxReturn(['status'=>0,'msg'=>'导出数量错误,请重新请求']);
  360. }
  361. /*检查所有大件的状态*/
  362. $return = $this->checkStatus($id);
  363. if(!$return){
  364. $this->ajaxReturn(['status'=>0,'msg'=>'参数违法,请重新提交']);
  365. }
  366. /*判断所选择的大件是否同一辅料名称,统一供应商,并且获取基本数据*/
  367. $return = $this->check($id);
  368. if($return['status']==0){
  369. $this->ajaxReturn($return);
  370. }
  371. /*获取大小件绑定的的数据*/
  372. $data = $return['data'];
  373. /*获取大件的重量*/
  374. $data['l_weight'] = $this->sumLarge($id);
  375. $data['small_num'] = $count;
  376. $data['id_str'] = $id;
  377. $data['data'] = M('qcode_large')
  378. ->alias('large')
  379. ->join('qr_qcode_small small ON small.large_id = large.id')
  380. ->field('large.code lcode,large.code_cp1 lcode_cp1,large.code_cp2 lcode_cp2,small.code scode,small.code_cp1 scode_cp1,small.code_cp2 scode_cp2')
  381. ->where('small.large_id in ('.$id.') and small.status = 0')
  382. ->select();
  383. $return = $this->excelExport1($data);
  384. if($return['status']==1){
  385. $arr = array('status'=>1,'msg'=>'导出完成','url'=>$return['msg']);
  386. }else{
  387. $arr = $return;
  388. }
  389. $this->ajaxReturn($arr);
  390. }
  391. /*excel导出方法2*/
  392. // public function export1(){
  393. //
  394. // $session_config=I('session.ly_admin_');
  395. //
  396. // $id = substr($_POST['id'],0,-1);
  397. //
  398. // /*检查所有大件的状态*/
  399. //// $return = $this->checkStatus($id);
  400. //// if(!$return){
  401. //// $this->ajaxReturn(['status'=>0,'msg'=>'参数违法,请重新提交']);
  402. //// }
  403. //
  404. // $bach_id_arr = M('qcode_large')
  405. // ->where('l_status = 0 and id IN ('.$id.')')
  406. // ->group(true)
  407. // ->getField('bach_id',true);
  408. //
  409. // for ($i=0; $i<count($bach_id_arr);$i++){
  410. // /*获取基本数据*/
  411. // $res = M('qcode_bach')
  412. // ->field('file_no,order_no,supplier_name,supplier_code,supplier_id,matter_name,matter_no,manufacture_date,print_date,l_reservation,s_reservation,l_flow,s_flow,l_weight,s_weight,larger_num,tray_num,box_num,bach_num')
  413. // ->where('id ='.$bach_id_arr[$i])
  414. // ->find();
  415. //
  416. // $larger_id = M('qcode_large')
  417. // ->where('id in ('.$id.') and bach_id = '.$bach_id_arr[$i])
  418. // ->getField('id',true);
  419. //
  420. // $larger_id_str = implode(',',$larger_id);
  421. //
  422. // $res['larger_num'] = count($larger_id);
  423. // $res['small_num'] = M('qcode_small')->where('large_id in ('.$larger_id_str.')')->count();
  424. //
  425. // //插入数据库
  426. // $add = [];
  427. // if ($res['box_num']!=1){
  428. // $add['num'] = $res['box_num'];
  429. // $add['mater_type'] = 1;
  430. // }else{
  431. // $add['num'] = $res['s_weight'];
  432. // $add['mater_type'] = 2;
  433. // }
  434. // $add['userid'] = $session_config['user_auth']['uid'];
  435. // $add['username'] = $res['supplier_name'];
  436. // $add['matter_name'] = $res['matter_name'];
  437. // $add['matter_no'] = $res['matter_no'];
  438. // $add['large_str'] = $larger_id_str;
  439. // $add['large_num'] = $res['larger_num'];
  440. // $add['small_num'] = $res['small_num'];
  441. // $add['bach_num'] = $res['bach_num'];
  442. // $add['date'] = time();
  443. // $add['file_dir'] = '';
  444. // $add['status'] = 0;
  445. // $data[$i] = $add;
  446. //
  447. // }
  448. // M()->startTrans();
  449. // $update_ret = M('qcode_large')->where('id in ('.$id.')')->setField('l_status',1);
  450. //
  451. //
  452. // if($update_ret){
  453. //
  454. // $return = M('qcode_export')->addAll($data);
  455. //
  456. //
  457. // if($return){
  458. // M()->commit();
  459. //
  460. // $arr = ['status'=>1,'msg'=>'操作成功','url'=>''];
  461. // }else{
  462. // M()->rollback();
  463. // $arr = ['status'=>0,'msg'=>'系统飞走了,请稍后再试'];
  464. // }
  465. // }
  466. // $this->ajaxReturn($arr);
  467. // }
  468. /*获取发货单页面*/
  469. public function exportFahuo(){
  470. $field="product_name";
  471. if($_SESSION['ly_admin_']['user_auth']['uid']==1){
  472. $productlist = M('qcode_product')->field($field)->where('id!=0')->select();
  473. $user_list = array();
  474. $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  475. $user_list_1 = M('admin_user')
  476. ->alias('a')
  477. ->join('qr_admin_access access on a.id = access.uid')
  478. ->field('a.id,a.nickname')
  479. ->where('a.status = 1 and (access.group = 4 or access.group = 1)')
  480. ->select();
  481. $user_list = array_merge($user_list,$user_list_1);
  482. }else{
  483. $product_id = M('admin_user')->where('id = '.$_SESSION['ly_admin_']['user_auth']['uid'])->getField('product_id');
  484. $productlist = [];
  485. if(!empty($product_id)){
  486. $productlist = M('qcode_product')->where('id in ('.$product_id.')')->select();
  487. }
  488. $user_list = array();
  489. $user_list[0] = ['id'=>$_SESSION['ly_admin_']['user_auth']['uid'],'nickname'=>$_SESSION['ly_admin_']['user_auth']['nickname']];
  490. }
  491. $this->assign('productlist',$productlist);
  492. $this->assign('userlist',$user_list);
  493. $this->display('fahuo');
  494. }
  495. /*得到发货页列表*/
  496. public function getFahuoData(){
  497. /*批次有正常和删除状态,0为未删除,1为已删除;大件0为未删除,1为已删除*/
  498. $session_config=I('session.ly_admin_');//获取登陆的session值
  499. $where = [];
  500. if($_POST['order_number']){//有搜索订单号
  501. $where['order_number'] = $_POST['order_number'];
  502. }
  503. if($_POST['startDate']){//有开始打印日期
  504. $statrtime=strtotime($_POST['startDate']);
  505. $endtime=strtotime($_POST['endDate'])+86400-1;
  506. $where['create_time']=array(array('egt',$statrtime),array('elt',$endtime),'AND');
  507. }
  508. if($session_config['user_auth']['uid']==1){
  509. if($_POST['user_name']!=0){
  510. $where['userid']=$_POST['user_name'];
  511. }
  512. }else{
  513. $where['userid']=$session_config['user_auth']['uid'];
  514. }
  515. $where['status']=$_POST['status'];
  516. $goodsList=M('goods')
  517. ->order($_POST['sort'].' '.$_POST['order'])
  518. ->page($_POST['page'],$_POST['rows'])
  519. ->where($where)
  520. ->select();
  521. $total = M('goods')
  522. ->where($where)
  523. ->count();
  524. $userinfo=M('admin_user')->where('id='.$session_config['user_auth']['uid'])->find();
  525. foreach ($goodsList as $key=>$value){
  526. $goodsList[$key]['user_type'] = $userinfo['user_type'];
  527. }
  528. $result = [];
  529. $result['total'] = $total;
  530. $result['rows'] = $goodsList;
  531. $fahuollist = json_encode($result);
  532. echo $fahuollist;
  533. }
  534. /*删除发货列表*/
  535. public function changeFahuoData(){
  536. $id = $_POST['id'];
  537. /*查询导出记录*/
  538. $exportExcel = M('goods')->find($id);
  539. /*修改大件的发货状态*/
  540. M()->startTrans();
  541. $update_ret = M('qcode_export')->where('id in ('.$exportExcel['export_ids'].')')->setField('status',0);
  542. if($update_ret){
  543. //插入数据库
  544. $return = M('goods')->where('id = '.$id)->setField('status',1);
  545. if($return){
  546. M()->commit();
  547. $this->ajaxReturn(['status'=>1,'msg'=>'删除成功']);
  548. die;
  549. }else {
  550. M()->rollback();
  551. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  552. }
  553. }
  554. }
  555. //发货申请
  556. public function addFahuo(){
  557. /*批次有正常和删除状态,0为未删除,1为已删除;大件0为未删除,1为已删除*/
  558. $id = substr($_POST['id'],0,-1);
  559. $session_config=I('session.ly_admin_');//获取登陆的session值
  560. $return = $this->checkExportStatus($id);
  561. if(!$return){
  562. $this->ajaxReturn(['status'=>0,'msg'=>'参数违法,请重新提交']);
  563. }
  564. /*修改发货状态*/
  565. M()->startTrans();
  566. $update_ret = M('qcode_export')->where('id in ('.$id.')')->setField('status',2);
  567. if($update_ret) {
  568. $export = M('qcode_export')->where('id in ('.$id.')')->select();
  569. $daterq = date("Ymd",time());
  570. //插入数据库
  571. $add = [];
  572. $add['userid'] = $session_config['user_auth']['uid'];
  573. $add['supplier_id'] = $add['userid'];
  574. $add['order_number'] = $_POST['order_num'];
  575. $add['deliveryman'] = $_POST['deliveryman'];
  576. $add['plate_number'] = $_POST['plate_number'];
  577. $add['shr_phone'] = $_POST['shr_phone'];
  578. $add['note'] = $_POST['note'];
  579. $add['supplier_name'] = $export[0]['username'];
  580. $add['export_ids'] = $id;
  581. $add['shdh'] = substr($daterq,2,2).' '.substr($daterq,2,6).mt_rand(1000,9999);
  582. $add['create_time'] = time();
  583. $add['qrcode_add'] = $this->qrcode($add['shdh']);
  584. $return = M('goods')->data($add)->add();
  585. if ($return) {
  586. M()->commit();
  587. } else {
  588. M()->rollback();
  589. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  590. }
  591. }
  592. $arr = array('status'=>1,'msg'=>'添加完成','url'=>'index.php?s=/Admin/Export/exportFahuo.html');
  593. $this->ajaxReturn($arr);
  594. }
  595. /*excel导出方法2*/
  596. public function export2(){
  597. $id = substr($_POST['id'],0,-1);
  598. $count = $_POST['sum'];
  599. /*检查数量是否正确*/
  600. $return = $this->checkCount($id,$count);
  601. if(!$return){
  602. $this->ajaxReturn(['status'=>0,'msg'=>'导出数量错误,请重新请求']);
  603. }
  604. /*检查所有大件的状态*/
  605. $return = $this->checkStatus($id);
  606. if(!$return){
  607. $this->ajaxReturn(['status'=>0,'msg'=>'参数违法,请重新提交']);
  608. }
  609. /*判断所选择的大件是否同一辅料名称,统一供应商,并且获取基本数据*/
  610. $return = $this->check($id);
  611. if($return['status']==0){
  612. $this->ajaxReturn($return);
  613. }
  614. /*获取大小件绑定的的数据*/
  615. $data = $return['data'];
  616. /*获取大件的重量*/
  617. $data['l_weight'] = $this->sumLarge($id);
  618. $data['small_num'] = $count;
  619. $data['id_str'] = $id;
  620. $data['data'] = M('qcode_large')
  621. ->alias('large')
  622. ->join('qr_qcode_small small ON small.large_id = large.id')
  623. ->field('large.code lcode,large.code_cp1 lcode_cp1,large.code_cp2 lcode_cp2,small.code scode,small.code_cp1 scode_cp1,small.code_cp2 scode_cp2')
  624. ->where('small.large_id in ('.$id.') and small.status = 0')
  625. ->select();
  626. $return = $this->excelExport1($data);
  627. if($return['status']==1){
  628. $arr = array('status'=>1,'msg'=>'导出完成','url'=>$return['msg']);
  629. }else{
  630. $arr = $return;
  631. }
  632. $this->ajaxReturn($arr);
  633. }
  634. /*检查数量 status有两种状态,0为正常,1为已删除*/
  635. public function checkCount($id,$count){
  636. $total = M('qcode_small')
  637. ->where('status = 0 and large_id IN ('.$id.')')
  638. ->count();
  639. if($total==$count){
  640. return true;
  641. }else{
  642. return false;
  643. }
  644. }
  645. /*检查状态*/
  646. public function checkStatus($id){
  647. $return = M('qcode_large')
  648. ->where('l_status = 1 and id IN ('.$id.')')
  649. ->count();
  650. if($return==0){
  651. return true;
  652. }else{
  653. return false;
  654. }
  655. }
  656. /*检查导出状态*/
  657. public function checkExportStatus($id){
  658. $return = M('qcode_export')
  659. ->where('status > 0 and id IN ('.$id.')')
  660. ->count();
  661. if($return==0){
  662. return true;
  663. }else{
  664. return false;
  665. }
  666. }
  667. /*其他数据验证,以及数据获取*/
  668. public function check($id){
  669. header("Content-type: text/html; charset=utf-8");
  670. $bach_return = M('qcode_large')
  671. ->where('l_status = 0 and id IN ('.$id.')')
  672. ->distinct(true)
  673. ->order("bach_id desc")
  674. ->getField('bach_id',true);
  675. $bach_str = implode(',',$bach_return);
  676. /*验证辅料名称是否为1*/
  677. $ret = M('qcode_bach')
  678. ->where('id IN ('.$bach_str.')')
  679. ->distinct(true)
  680. ->getField('matter_name',true);
  681. if(count($ret)>1){
  682. return ['status'=>0,'msg'=>'仅能选择一个辅料名称'];
  683. }
  684. /*验证供应商名称是否唯一*/
  685. $supplier= M('qcode_bach')
  686. ->where('id IN ('.$bach_str.')')
  687. ->distinct(true)
  688. ->getField('supplier_name',true);
  689. if(count($supplier)>1){
  690. return ['status'=>0,'msg'=>'仅能选择一个供应商'];
  691. }
  692. // if(count($bach_return)!=1){
  693. // return ['status'=>0,'msg'=>'仅能选择一个批次'];
  694. // }
  695. /*获取基本数据*/
  696. $data = M('qcode_bach')
  697. ->field('file_no,order_no,supplier_name,supplier_code,supplier_id,matter_name,matter_no,manufacture_date,print_date,l_reservation,s_reservation,l_flow,s_flow,l_weight,s_weight,larger_num,tray_num,box_num,bach_num')
  698. ->where('id ='.$bach_return['0'])
  699. ->find();
  700. $data['s_weight'] = $data['s_weight']/1000;
  701. if(count($bach_return)!=1){
  702. //
  703. $data['l_reservation'] = 0;
  704. $data['s_reservation'] = 0;
  705. // $data['l_flow'] = 0;
  706. // $data['s_flow'] = 0;
  707. // $data['s_weight'] = 0;
  708. // $data['tray_num'] = 0;
  709. }
  710. $data['larger_num'] = count(explode(',',$id));
  711. $data['l_weight'] *= $data['larger_num'];
  712. /*日期转化*/
  713. $data['manufacture_date'] = $this->getData( $data['manufacture_date']);
  714. $data['print_date'] = $this->getData($data['print_date']);
  715. return ['status'=>1,'data'=>$data];
  716. }
  717. /*计算大件重量*/
  718. public function sumLarge($id){
  719. $l_count = M('qcode_large')
  720. ->where('l_status = 0 and id IN ('.$id.')')
  721. ->sum('l_weight');
  722. return $l_count/100;
  723. }
  724. /**
  725. * 客户导出 生成excel
  726. *
  727. **/
  728. public function excelExport($data = false)
  729. {
  730. // $data['l_weight'] = $data['l_weight']/100;
  731. /*$fileName = iconv("utf-8", "gb2312", 'Data/'.date('Ymd', time()).$data['count'].$data['id'].'.xls');
  732. if(file_exists($fileName)){
  733. return $fileName;
  734. }else {*/
  735. //Vendor('Excel.Excel');//加载生成二维码的核心类
  736. $session_config=I('session.ly_admin_');
  737. $info=M('admin_user')->where('id='.$session_config['user_auth']['uid'])->field('nickname,username')->find();
  738. Vendor('Excel.PHPExcel');
  739. $objPHPExcel = new \PHPExcel();
  740. $fileName = iconv("utf-8", "gb2312", 'Data/'.$info['username'].date('Ymd', time()).$data['count'].$data['id'].'.xls');
  741. $objProps = $objPHPExcel->getProperties();
  742. /*设置列宽*/
  743. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(80);
  744. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
  745. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(80);
  746. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
  747. /*设置列宽结束*/
  748. /*设置文本格式*/
  749. $objPHPExcel->getActiveSheet()->getStyle('B')->getNumberFormat()->setFormatCode("@");
  750. /*设置文本格式*/
  751. /*第1~11 A行数据*/
  752. $colum = 'A';
  753. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', '文件流水号');
  754. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '2', '订单号');
  755. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', '供应商');
  756. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', '供应商代码');
  757. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', '物料名称');
  758. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', '物料代码');
  759. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', '生产日期');
  760. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', '打码日期');
  761. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', '大件数量');
  762. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', '托盘小件数量');
  763. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', '小件数量');
  764. /*第1~11行A数据结束*/
  765. $key = ord("A");
  766. $key++;
  767. $colum = chr($key);
  768. /*第1~11 B行数据*/
  769. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $data['file_no']);
  770. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '2', $data['order_no']);
  771. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', $data['supplier_name']);
  772. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', "'". $data['supplier_code']);
  773. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', $data['matter_name']);
  774. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', "'". $data['matter_no']);
  775. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', $data['manufacture_date']);
  776. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', $data['print_date']);
  777. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', $data['larger_num']);
  778. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', $data['tray_num']);
  779. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', $data['small_num']);
  780. /*第1~11行B数据结束*/
  781. /*第3-14行数据 开始*/
  782. $colum = 'C';
  783. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', '大件预留码:');
  784. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', $data['l_reservation']);
  785. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', '小件预留码:');
  786. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', $data['s_reservation']);
  787. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', '大件开始流水号:');
  788. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', $data['l_flow']);
  789. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', '小件开始流水号:');
  790. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', $data['s_flow']);
  791. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', '大件重量(KG)');
  792. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '12', $data['l_weight']);
  793. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '13', '小件重量(KG)');
  794. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '14', $data['s_weight']);
  795. /*第3-14行数据 结束*/
  796. /*第8行数据 开始*/
  797. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A15', '大件二维码');
  798. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B15', '大件条码(预留)');
  799. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C15', '小件二维码');
  800. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D15', '小件条码(预留)');
  801. /*第8行数据 结束*/
  802. foreach ($data['data'] as $i => $v) {
  803. $j = $i + 16;
  804. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . $j, "'" . $v['lcode']);
  805. //$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, '大件条码(预留)');
  806. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . $j, "'" . $v['scode']);
  807. //$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$j, '小件条码(预留)');
  808. }
  809. //$fileName = iconv("utf-8", "gb2312", 'Data/' . date('Y-m-d_', time()) . $data['id'] . '_.xls');
  810. //$saveName = iconv("utf-8", "gb2312", time() . '.xls');
  811. /*header('Content-Type: application/vnd.ms-excel');
  812. header("Content-Disposition: attachment;filename=\"$saveName\"");
  813. header('Cache-Control: max-age=0');*/
  814. /*$objWriter->save('php://output');
  815. return true;*/
  816. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  817. $objWriter->save($fileName);
  818. return $fileName;
  819. }
  820. /**
  821. * 客户导出 生成excel方法2
  822. *
  823. **/
  824. // public function excelExport1($data = false)
  825. // {
  826. //
  827. // $session_config=I('session.ly_admin_');
  828. // /*修改大件的发货状态*/
  829. // M()->startTrans();
  830. // $update_ret = M('qcode_large')->where('id in ('.$data['id_str'].')')->setField('l_status',1);
  831. // if($update_ret){
  832. // //插入数据库
  833. // $add = [];
  834. // if ($data['box_num']!=1){
  835. // $add['num'] = $data['box_num'];
  836. // $add['mater_type'] = 1;
  837. // }else{
  838. // $add['num'] = $data['s_weight'];
  839. // $add['mater_type'] = 2;
  840. // }
  841. // $add['userid'] = $session_config['user_auth']['uid'];
  842. // $add['username'] = $data['supplier_name'];
  843. // $add['matter_name'] = $data['matter_name'];
  844. // $add['matter_no'] = $data['matter_no'];
  845. // $add['large_str'] = $data['id_str'];
  846. // $add['large_num'] = $data['larger_num'];
  847. // $add['small_num'] = $data['small_num'];
  848. // $add['bach_num'] = $data['bach_num'];
  849. // $add['date'] = time();
  850. // $add['file_dir'] = '';
  851. // $add['status'] = 0;
  852. // $return = M('qcode_export')->data($add)->add();
  853. // if($return){
  854. // M()->commit();
  855. // }else{
  856. // M()->rollback();
  857. // return ['status'=>0,'msg'=>'系统飞走了,请稍后再试'];
  858. // }
  859. // }
  860. //
  861. // return ['status'=>1,'msg'=>'添加成功'];
  862. //
  863. // }
  864. // /**
  865. // * 客户导出 生成excel方法2
  866. // *
  867. // **/
  868. public function excelExport1($data = false)
  869. {
  870. // $data['l_weight'] = $data['l_weight']/100;
  871. /*$fileName = iconv("utf-8", "gb2312", 'Data/'.date('Ymd', time()).$data['count'].$data['id'].'.xls');
  872. if(file_exists($fileName)){
  873. return $fileName;
  874. }else {*/
  875. //Vendor('Excel.Excel');//加载生成二维码的核心类
  876. $session_config=I('session.ly_admin_');
  877. $info=M('admin_user')->where('id='.$session_config['user_auth']['uid'])->field('nickname,username')->find();
  878. Vendor('Excel.PHPExcel');
  879. $objPHPExcel = new \PHPExcel();
  880. // $fileName = 'Runtime/Data/'.date('Ymd', time()).rand(100,999).'_'.$info['nickname'].'_'.$data['matter_name'].'_'.$data['small_num'].'.xls';
  881. $fileName = 'Runtime/Data/'.date('Ymd', time()).rand(100,999).'_'.$info['nickname'].'_'.str_replace('/','_',$data['matter_name']).'_'.$data['small_num'].'.xls';
  882. /*修改大件的发货状态*/
  883. M()->startTrans();
  884. $update_ret = M('qcode_large')->where('id in ('.$data['id_str'].')')->setField('l_status',1);
  885. if($update_ret){
  886. //插入数据库
  887. $add = [];
  888. if ($data['box_num']!=1){
  889. $add['num'] = $data['box_num'];
  890. $add['mater_type'] = 1;
  891. }else{
  892. $add['num'] = $data['s_weight']*1000;
  893. $add['mater_type'] = 2;
  894. }
  895. //2023年4月6日 优化送货单单位,增加mater_type=3 => 万支 后续建议优化 直接从unit单位表中读取
  896. if (substr($data['matter_no'],2,2) == '04'){
  897. $add['mater_type'] = 3;
  898. }
  899. $add['userid'] = $session_config['user_auth']['uid'];
  900. $add['username'] = $data['supplier_name'];
  901. $add['matter_name'] = $data['matter_name'];
  902. $add['matter_no'] = $data['matter_no'];
  903. $add['large_str'] = $data['id_str'];
  904. $add['large_num'] = $data['larger_num'];
  905. $add['small_num'] = $data['small_num'];
  906. $add['bach_num'] = $data['bach_num'];
  907. $add['date'] = time();
  908. $add['file_dir'] = $fileName;
  909. $add['status'] = 0;
  910. $return = M('qcode_export')->data($add)->add();
  911. if($return){
  912. M()->commit();
  913. }else{
  914. M()->rollback();
  915. return ['status'=>0,'msg'=>'系统飞走了,请稍后再试'];
  916. }
  917. }
  918. $objProps = $objPHPExcel->getProperties();
  919. /*设置列宽*/
  920. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(80);
  921. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
  922. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(80);
  923. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
  924. /*设置列宽结束*/
  925. /*设置文本格式*/
  926. $objPHPExcel->getActiveSheet()->getStyle('B')->getNumberFormat()->setFormatCode("@");
  927. /*设置文本格式*/
  928. /*第1~11 A行数据*/
  929. $colum = 'A';
  930. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', '文件流水号');
  931. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '2', '订单号');
  932. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', '供应商');
  933. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', '供应商代码');
  934. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', '物料名称');
  935. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', '物料代码');
  936. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', '生产日期');
  937. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', '打码日期');
  938. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', '大件数量');
  939. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', '托盘小件数量');
  940. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', '小件总数量');
  941. /*第1~11行A数据结束*/
  942. $key = ord("A");
  943. $key++;
  944. $colum = chr($key);
  945. /*第1~11 B行数据*/
  946. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $data['file_no']);
  947. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '2', $data['order_no']);
  948. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', $data['supplier_name']);
  949. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', "'". $data['supplier_code']);
  950. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', $data['matter_name']);
  951. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', "'". $data['matter_no']);
  952. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', $data['manufacture_date']);
  953. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', $data['print_date']);
  954. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', $data['larger_num']);
  955. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', $data['tray_num']);
  956. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', $data['small_num']);
  957. /*第1~11行B数据结束*/
  958. /*第3-14行数据 开始*/
  959. $colum = 'C';
  960. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '3', '大件预留码:');
  961. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '4', $data['l_reservation']);
  962. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '5', '小件预留码:');
  963. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '6', $data['s_reservation']);
  964. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '7', '大件开始流水号:');
  965. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '8', $data['l_flow']);
  966. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '9', '小件开始流水号:');
  967. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '10', $data['s_flow']);
  968. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '11', '大件重量(KG)');
  969. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '12', $data['l_weight']);
  970. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '13', '小件重量(KG)');
  971. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '14', $data['s_weight']);
  972. /*第3-14行数据 结束*/
  973. /*第8行数据 开始*/
  974. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A15', '大件二维码');
  975. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B15', '大件条码(预留)');
  976. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C15', '小件二维码');
  977. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D15', '小件条码(预留)');
  978. /*第8行数据 结束*/
  979. foreach ($data['data'] as $i => $v) {
  980. $j = $i + 16;
  981. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . $j, "'" . $v['lcode']);
  982. //$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$j, '大件条码(预留)');
  983. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . $j, "'" . $v['scode']);
  984. //$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$j, '小件条码(预留)');
  985. }
  986. if(strtoupper(substr(PHP_OS,0,3))==='WIN'){
  987. $saveName = iconv("utf-8", "gb2312",$fileName);
  988. }else{
  989. $saveName = $fileName;
  990. }
  991. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  992. $objWriter->save($saveName);
  993. return ['status'=>1,'msg'=>$fileName];
  994. }
  995. //打印发货单
  996. public function print1($id){
  997. $model = new \Think\Model();
  998. $data = M('goods')->find($id);
  999. $export_ids = explode(',',$data['export_ids']);
  1000. $arr = [];
  1001. foreach($export_ids as $key=>$v){
  1002. $arr[$key] = M('qcode_export')->find($v);
  1003. $large_str = explode(',',$arr[$key]['large_str']);
  1004. $map = [];
  1005. $map['id'] = array('in',$large_str);
  1006. $large_num = M('qcode_large')->where($map)->sum('l_num');
  1007. $arr[$key]['l_num'] = $large_num / 10000;
  1008. }
  1009. $address = $model->query("select u.company_address as address from qr_goods g left join qr_admin_user u on u.id=g.supplier_id where g.id=".$id)[0]['address'];
  1010. $data['address']=$address;
  1011. $data['arr']=$arr;
  1012. $data['count']=count($arr);
  1013. $data['shrq_date']=date("Y-m-d",$data['create_time']);
  1014. if (empty($data['qrcode_add'])){
  1015. $data['qrcode_add'] = $this->qrcode($data['shdh']);
  1016. M('goods')->where('id='.$id)->setField('qrcode_add',$data['qrcode_add']);
  1017. }
  1018. echo json_encode($data);
  1019. }
  1020. public function qrcode($url)//二维码生成类
  1021. {
  1022. $level=2;
  1023. $size=5;
  1024. Vendor('phpqrcode.phpqrcode');//加载生成二维码的核心类
  1025. $errorCorrectionLevel =intval($level) ;//容错级别
  1026. $matrixPointSize = intval($size);//生成图片大小
  1027. //生成二维码图片
  1028. $object = new \QRcode();
  1029. //打开缓冲区
  1030. ob_start();
  1031. $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
  1032. //这里就是把生成的图片流从缓冲区保存到内存对象上,使用base64_encode变成编码字符串,通过json返回给页面。
  1033. $imageString = base64_encode(ob_get_contents());
  1034. //关闭缓冲区
  1035. ob_end_clean();
  1036. //把生成的base64字符串返回给前端
  1037. $data = array(
  1038. 'labelcode'=>$url,
  1039. 'code'=>200,
  1040. 'data'=>$imageString,
  1041. 'product_code'=>$url
  1042. );
  1043. return 'data:image/png;base64,'.$imageString;
  1044. // $this->ajaxReturn($data);
  1045. }
  1046. public function qrcode_up($qrcode_add,$ids){
  1047. $res = M('goods')->where('id='.$ids)->setField('qrcode_add',$qrcode_add);
  1048. return $res;
  1049. }
  1050. public function shouhuo(){
  1051. $this->display('shouhuo');
  1052. }
  1053. public function exportShouhuo(){
  1054. $field="product_name";
  1055. $productlist = M('qcode_product')->field($field)->where('id!=0')->select();
  1056. $user_list = array();
  1057. $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  1058. $user_list_1 = M('admin_user')
  1059. ->alias('a')
  1060. ->join('qr_admin_access access on a.id = access.uid')
  1061. ->field('a.id,a.nickname')
  1062. ->where('a.status = 1 and (access.group = 4 or access.group = 1 or access.group = 3)')
  1063. ->select();
  1064. $user_list = array_merge($user_list,$user_list_1);
  1065. // if($_SESSION['ly_admin_']['user_auth']['uid']==1){
  1066. // $user_list[0] = ['id'=>0,'nickname'=>'全部'];
  1067. // $user_list_1 = M('admin_user')
  1068. // ->alias('a')
  1069. // ->join('qr_admin_access access on a.id = access.uid')
  1070. // ->field('a.id,a.nickname')
  1071. // ->where('a.status = 1')
  1072. // ->select();
  1073. // $user_list = array_merge($user_list,$user_list_1);
  1074. // }else{
  1075. // $product_id = M('admin_user')->where('id = '.$_SESSION['ly_admin_']['user_auth']['uid'])->getField('product_id');
  1076. // $productlist = M('qcode_product')->where('id in ('.$product_id.')')->select();
  1077. // $user_list = array();
  1078. // $user_list[0] = ['id'=>$_SESSION['ly_admin_']['user_auth']['uid'],'nickname'=>$_SESSION['ly_admin_']['user_auth']['nickname']];
  1079. // }
  1080. $this->assign('productlist',$productlist);
  1081. $this->assign('userlist',$user_list);
  1082. $this->display('shouhuolist');
  1083. }
  1084. public function getShouhuoData(){
  1085. /*批次有正常和删除状态,0为未删除,1为已删除;大件0为未删除,1为已删除*/
  1086. $session_config=I('session.ly_admin_');//获取登陆的session值
  1087. $where = [];
  1088. if($_POST['order_number']){//有搜索订单号
  1089. $where['order_number'] = $_POST['order_number'];
  1090. }
  1091. if($_POST['startDate']){//有开始打印日期
  1092. $statrtime=strtotime($_POST['startDate']);
  1093. $endtime=strtotime($_POST['endDate'])+86400-1;
  1094. $where['create_time']=array(array('egt',$statrtime),array('elt',$endtime),'AND');
  1095. }
  1096. // if($session_config['user_auth']['uid']==1 ){
  1097. // if($_POST['user_name']!=0){
  1098. // $where['userid']=$_POST['user_name'];
  1099. // }
  1100. // }else{
  1101. // $where['userid']=$session_config['user_auth']['uid'];
  1102. // }
  1103. $where['status']=$_POST['status'];
  1104. $goodsList=M('goods')
  1105. ->order($_POST['sort'].' '.$_POST['order'])
  1106. ->page($_POST['page'],$_POST['rows'])
  1107. ->where($where)
  1108. ->select();
  1109. $total = M('goods')
  1110. ->where($where)
  1111. ->count();
  1112. $result = [];
  1113. $result['total'] = $total;
  1114. $result['rows'] = $goodsList;
  1115. $fahuollist = json_encode($result);
  1116. echo $fahuollist;
  1117. }
  1118. public function changeShouhuo(){
  1119. $where['shdh']=$_POST['shdh'];
  1120. $return = M('goods')->where($where)->setField('status',2);
  1121. if($return){
  1122. $this->ajaxReturn(['status'=>1,'msg'=> $where['shdh'].'发货单已收货','url' =>'index.php?s=/Admin/Export/exportShouhuo.html']);
  1123. die;
  1124. }else {
  1125. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  1126. }
  1127. }
  1128. public function dealShouhuo(){
  1129. $id = $_POST['id'];
  1130. $return = M('goods')->where('id = '.$id)->setField('status',0);
  1131. if($return){
  1132. $this->ajaxReturn(['status'=>1,'msg'=>'取消成功']);
  1133. die;
  1134. }else {
  1135. $this->ajaxReturn(['status' => 0, 'msg' => '系统飞走了,请稍后再试']);
  1136. }
  1137. }
  1138. }