Model_logic_u9action.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  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. $res = $this->apiyyv1->xsdCreate($params,$token);
  158. if($res[0]['Data'][0]['m_isSucess'] != 1){
  159. $this->editData($info['id'],['xs_status'=>-1,'update_time'=>time()],$info['order_no'],2,1,'xs',$res[1],$res[0]);
  160. }else{
  161. $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]);
  162. }
  163. }
  164. //
  165. private function checkXsd($info){
  166. }
  167. //对销售单进行检查 并创建标准出货单
  168. private function xcXsAndCreateScd($info){
  169. $token = $this->getToken(120);
  170. $res = $this->apiyyv1->xsdCxByNo($info['xs_no'],$token);
  171. //如果没审核 那么就不管
  172. if(empty($res[0]['Data'])){
  173. return ;
  174. }
  175. // 审核了
  176. $list = $res[0]['Data'];
  177. if($list[0]['status'] < 3){
  178. return ;
  179. }
  180. foreach($list as $k=>$v){
  181. $list[$k]['dcsl'] = 1;
  182. }
  183. $tran_info = $this->systemtransfer->read($info['child_order_no']);
  184. $drckbm = '';
  185. if(stripos($tran_info['features'],'-126-') !== false)
  186. {
  187. $drckbm = '12003';//进入发条库
  188. }
  189. else if(stripos($tran_info['features'],'-127-') !== false)
  190. {
  191. $drckbm = '12004';//进入发块库
  192. }
  193. else
  194. {
  195. $drckbm = '12006';//其它进入完成库
  196. }
  197. if(empty($drckbm)){
  198. $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',[],[
  199. 'code'=>-1,
  200. 'msg'=>'标准出库的信息异常,请查看'
  201. ]);
  202. return ;
  203. }
  204. $tmp_info = [
  205. 'zq_u9_id'=>$info['id'],
  206. 'drckbm'=> $drckbm,
  207. 'number'=>$info['order_no'],
  208. 'order_no'=>$info['order_no'],
  209. 'xs_no'=>$info['xs_no'],
  210. 'xs_two_no'=>$info['xs_no'],
  211. 'list'=>$list
  212. ];
  213. $res = $this->apiyyv1->bzchCreate($tmp_info,$token);
  214. if($res[0]['Data'][0]['m_isSucess'] != 1){
  215. $this->editData($info['id'],['bzch_status'=>-1,'update_time'=>time()],$info['order_no'],5,1,'bzch',$res[1],$res[0]);
  216. }else{
  217. $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]);
  218. }
  219. }
  220. //对标准出货单进行审核
  221. private function checkBzch($info){
  222. $res = $this->apiyyv1->bzchSubmitAndApprove(['number'=>$info['bzch_no']],$this->getToken(120));
  223. print_r($res[0]);
  224. print_r($res[1]);
  225. if($res[0]['Data'][0]['m_isSucess'] != 1){
  226. $this->editData($info['id'],['bzch_status'=>-2,'update_time'=>time()],$info['order_no'],5,2,'bzch_sh',$res[1],$res[0]);
  227. }else{
  228. $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]);
  229. }
  230. }
  231. protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){
  232. $this->zzquque_u9->save($z_qu_arr,$zq_u9_id);
  233. $this->zzququeu9_logs->insert([
  234. 'oid'=>$zq_u9_id,
  235. 'number'=>$number,
  236. 'one_type'=>$one_type,
  237. 'two_type'=>$two_type,
  238. 'apply_api'=>$apply_api,
  239. 'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE),
  240. 'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE),
  241. 'create_time'=>time(),
  242. 'read_time'=>date("Y-m-d H:i:s")
  243. ]);
  244. }
  245. }