Model_logic_u9action.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <?php
  2. /**
  3. * 系统自动处理在途库存的香港问题
  4. */
  5. class Model_logic_u9action extends Lin_Model {
  6. //切记要修改token_120的token真正的token!!!!
  7. function __construct(){
  8. parent::__construct();
  9. $this->load->_model('Model_settingtest','settingtest');
  10. $this->load->_model("Model_apiyyv1","apiyyv1");
  11. $this->load->_model("Model_logic_order","logic_order");
  12. $this->load->_model("Model_logic_ding","logic_ding");
  13. $this->load->_model("Model_zzquque_u9","zzquque_u9");
  14. $this->load->_model("Model_systemtransfer","systemtransfer");
  15. $this->load->_model("Model_shop","shop");
  16. $this->load->_model("Model_zzququeu9_logs","zzququeu9_logs");
  17. $this->load->_model('Model_logic_tools','logic_tools');
  18. }
  19. public function getToken($type){
  20. $name = "get_yytoken_".$type;
  21. $token = $this->settingtest->$name();
  22. return $token;
  23. }
  24. /**
  25. * 工厂加工生产外销的订单
  26. */
  27. public function waixiao(){
  28. //入库单这里用字段标准收货单进行了 处理 主要是不想动u9队列的字段了 所以这里用收货单的字段
  29. $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 0 and xs_status = 0");
  30. if(!empty($list)){
  31. foreach($list as $k=>$v){
  32. $this->doRkd($v);
  33. }
  34. }
  35. sleep(3);
  36. //审核的不需要再等待了
  37. $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 1 and xs_status = 0 and bzch_status = 0");
  38. if(!empty($list)){
  39. foreach($list as $k=>$v){
  40. $this->checkRkd($v);
  41. }
  42. }
  43. $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 0 and bzch_status = 0");
  44. if(!empty($list)){
  45. foreach($list as $k=>$v){
  46. $this->createXsd($v);
  47. }
  48. }
  49. sleep(3);
  50. $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 1 and bzch_status = 0");
  51. if(!empty($list)){
  52. foreach($list as $k=>$v){
  53. $this->xcXsAndCreateScd($v);
  54. }
  55. }
  56. sleep(3);
  57. //审核标准出货单
  58. $list = $this->zzquque_u9->find_all("type = 20 and bzsh_status= 3 and xs_status = 3 and bzch_status = 1");
  59. if(!empty($list)){
  60. foreach($list as $k=>$v){
  61. $this->checkBzch($v);
  62. }
  63. }
  64. }
  65. //进行入库单操作
  66. public function doRkd($data){
  67. $token = $this->getToken(120);
  68. if(empty($data['child_order_no'])){
  69. $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[
  70. 'code'=>-1,
  71. 'msg'=>'没有找到子订单号'
  72. ]);
  73. return $this->logic_tools->ret_arr(-1,"没有找到子订单号");
  74. }
  75. $info = $this->systemtransfer->read($data['child_order_no']);
  76. $order_info = $this->logic_order->getInfo("number = '".$info['number']."'","number,shop");
  77. $shop_info = $this->shop->read($order_info['shop']);
  78. if(empty($shop_info)){
  79. $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[
  80. 'code'=>-1,
  81. 'msg'=>'没有找到子订单号'
  82. ]);
  83. return $this->logic_tools->ret_arr(-1,"没有找到子订单号");
  84. }
  85. $sc = explode('~',$info['scid']);
  86. $info['rkid'] = $sc[0];//配货的生产id
  87. $info['rkcode'] = $sc[1];//配货的生产单号
  88. $params = [
  89. 'org_code'=>'120',
  90. "org_wh_code"=>'02',
  91. 'rec_code'=>'120',
  92. 'rev_wh_code'=>'02',
  93. 'rkid'=>$info['rkid'],
  94. 'rkcode'=>$info['rkcode'],
  95. 'yyid'=>$shop_info['yyid'],
  96. 'number'=>$info['number'],
  97. 'shipremarks'=>$info['shipremarks'],
  98. 'list'=>[
  99. [
  100. 'sl'=>1,
  101. 'jm'=>$info['jm'],
  102. ]
  103. ]
  104. ];
  105. $res = $this->apiyyv1->cprkCreate($params,$token);
  106. if(isset($res[0]['Data'][0]['m_isSucess'])&& $res[0]['Data'][0]['m_isSucess'] == 1){
  107. $this->editData($data['id'],['bzsh_no'=>$res[0]['Data'][0]['m_code'],'bzsh_status'=>1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
  108. return $this->logic_tools->ret_arr(1,"成品入库单创建成功");
  109. }else{
  110. $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
  111. return $this->logic_tools->ret_arr(-1,"成品入库单创建失败");
  112. }
  113. }
  114. //对入库单进行检查
  115. public function checkRkd($info){
  116. $token = $this->getToken(120);
  117. $params = [
  118. [
  119. "DocNo"=>$info['bzsh_no']
  120. ]
  121. ];
  122. $res = $this->apiyyv1->cprkApprove($params,$token);
  123. //如果入库审核失败 先查询 如果不存在就标记 存在就再次审核
  124. if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
  125. //查询单子是否存在
  126. sleep(1);
  127. $res = $this->apiyyv1->cprkCx($params,$token);
  128. if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
  129. //查询失败 这里不做状态变更 只是做记录
  130. $this->editData($info['id'],['update_time'=>time()],$info['order_no'],20,2,'scrk_ck',$res[1],$res[0]);
  131. return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请稍后审核");
  132. }
  133. $res = $this->apiyyv1->cprkApprove($params,$token);
  134. }
  135. //如果再错误就 没办法了
  136. if(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1){
  137. $this->editData($info['id'],['bzsh_status'=>3,'update_time'=>time()],$info['order_no'],20,3,'scrk_sh',$res[1],$res[0]);
  138. return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请联系到u9核对成品入库单的状态");
  139. }
  140. }
  141. //进行销售单操作
  142. public function createXsd($info){
  143. $order_info = $this->logic_order->getInfo('number = "'.$info['order_no'].'"',"number,shop,shouldmoney");
  144. if(empty($order_info)){
  145. return [];
  146. }
  147. $shop = $this->shop->read($order_info['shop']);
  148. $tren_info = $this->systemtransfer->read($info['child_order_no']);
  149. $token = $this->getToken('120');
  150. $params = [
  151. 'yyid'=>$shop['yyid'],
  152. 'number'=>$info['order_no'],
  153. 'time'=>time(),
  154. 'list'=>[
  155. [
  156. 'jm'=>$tren_info['jm'],
  157. 'dcsl'=>1,
  158. 'final_price'=>1,
  159. ]
  160. ]
  161. ];
  162. //由于工厂自己的销售单 比外贸的多一些设置 所以又启用了一些新的方法
  163. $res = $this->apiyyv1->gcxsdWaiXiaoCreate($params,$token);
  164. if($res[0]['Data'][0]['m_isSucess'] != 1){
  165. $this->editData($info['id'],['xs_status'=>-1,'update_time'=>time()],$info['order_no'],2,1,'xs',$res[1],$res[0]);
  166. return $this->logic_tools->ret_arr(1,"销售单创建成功");
  167. }else{
  168. $this->editData($info['id'],['xs_no'=>$res[0]['Data'][0]['m_code'],'xs_status'=>1,'update_time'=>time()],$info['order_no'],2,1,'xs',$res[1],$res[0]);
  169. return $this->logic_tools->ret_arr(-1,"销售单创建失败");
  170. }
  171. }
  172. //
  173. public function checkXsd($info){
  174. }
  175. //对销售单进行检查 并创建标准出货单
  176. public function xcXsAndCreateScd($info){
  177. $token = $this->getToken(120);
  178. $res = $this->apiyyv1->xsdCxByNo($info['xs_no'],$token);
  179. //如果没审核 那么就不管
  180. if(empty($res[0]['Data'])){
  181. return ;
  182. }
  183. // 审核了
  184. $list = $res[0]['Data'];
  185. if($list[0]['status'] < 3){
  186. return ;
  187. }
  188. foreach($list as $k=>$v){
  189. $list[$k]['dcsl'] = 1;
  190. }
  191. $tran_info = $this->systemtransfer->read($info['child_order_no']);
  192. $drckbm = '';
  193. if(stripos($tran_info['features'],'-126-') !== false)
  194. {
  195. $drckbm = '12003';//进入发条库
  196. }
  197. else if(stripos($tran_info['features'],'-127-') !== false)
  198. {
  199. $drckbm = '12004';//进入发块库
  200. }
  201. else
  202. {
  203. $drckbm = '12006';//其它进入完成库
  204. }
  205. if(empty($drckbm)){
  206. $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',[],[
  207. 'code'=>-1,
  208. 'msg'=>'标准出库的信息异常,请查看'
  209. ]);
  210. return $this->logic_tools->ret_arr(-1,"标准出库的信息异常,请查看");
  211. }
  212. $tmp_info = [
  213. 'zq_u9_id'=>$info['id'],
  214. 'drckbm'=> $drckbm,
  215. 'number'=>$info['order_no'],
  216. 'order_no'=>$info['order_no'],
  217. 'xs_no'=>$info['xs_no'],
  218. 'xs_two_no'=>$info['xs_no'],
  219. 'list'=>$list
  220. ];
  221. $res = $this->apiyyv1->bzchCreate($tmp_info,$token);
  222. if($res[0]['Data'][0]['m_isSucess'] != 1){
  223. $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',$res[1],$res[0]);
  224. return $this->logic_tools->ret_arr(-1,"标准出库的信息异常,请查看");
  225. }else{
  226. $this->editData($info['id'],['bzch_no'=>$res[0]['Data'][0]['m_code'],'bzch_status'=>1,'xs_status'=>3,'update_time'=>time()],$info['order_no'],5,1,'bzch',$res[1],$res[0]);
  227. return $this->logic_tools->ret_arr(1,"标准出库创建成功");
  228. }
  229. }
  230. //对标准出货单进行审核
  231. public function checkBzch($info){
  232. $res = $this->apiyyv1->bzchSubmitAndApprove(['number'=>$info['bzch_no']],$this->getToken(120));
  233. // print_r($res[0]);
  234. // print_r($res[1]);
  235. if($res[0]['Data'][0]['m_isSucess'] != 1){
  236. $this->editData($info['id'],['bzch_status'=>-2,'update_time'=>time()],$info['order_no'],5,2,'bzch_sh',$res[1],$res[0]);
  237. }else{
  238. $this->editData($info['id'],['bzch_no'=>$res[0]['Data'][0]['m_code'],'bzch_status'=>3,'update_time'=>time()],$info['order_no'],5,2,'bzch_sh',$res[1],$res[0]);
  239. }
  240. }
  241. protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){
  242. $this->zzquque_u9->save($z_qu_arr,$zq_u9_id);
  243. $this->zzququeu9_logs->insert([
  244. 'oid'=>$zq_u9_id,
  245. 'number'=>$number,
  246. 'one_type'=>$one_type,
  247. 'two_type'=>$two_type,
  248. 'apply_api'=>$apply_api,
  249. 'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE),
  250. 'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE),
  251. 'create_time'=>time(),
  252. 'read_time'=>date("Y-m-d H:i:s")
  253. ]);
  254. }
  255. }