Model_logic_u9action.php 10 KB

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