load->_model('Model_settingtest','settingtest'); $this->load->_model("Model_apiyyv1","apiyyv1"); $this->load->_model("Model_logic_ding","logic_ding"); $this->load->_model("Model_zzquque_u9","zzquque_u9"); $this->load->_model("Model_zzququeu9_logs","zzququeu9_logs"); $this->load->_model('Model_logic_tools','logic_tools'); $this->load->_model('Model_whlabel_bh_transfer','whlabel_bh_transfer'); } public function getToken($type){ $name = "get_yytoken_".$type; $token = $this->settingtest->$name(); return $token; } public function doAction(){ $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 0 and dc_status = 0 and dr_status = 0"); foreach ($list as $key => $value) { $this->dpCprk($value); } sleep(3); $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 1 and dc_status = 0 and dr_status = 0"); foreach ($list as $key => $value) { $this->checkCprk($value); } $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 0 and dr_status = 0"); foreach ($list as $key => $value) { $this->doDcd($value); } $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 1 and dr_status = 0"); foreach ($list as $key => $value) { $this->cxDrd($value); } $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 3 and dr_status = 0"); foreach ($list as $key => $value) { $this->checkDrd($value); } } public function dpCprk($data){ $token = $this->getToken(120); if(empty($data['child_order_no'])){ $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[ 'code'=>-1, 'msg'=>'没有找到子订单号' ]); return $this->logic_tools->ret_arr(-1,"没有找到子订单号"); } $info = $this->whlabel_bh_transfer->read($data['child_order_no']); $sc = explode('~',$info['scid']); $info['rkid'] = $sc[0];//配货的生产id $info['rkcode'] = $sc[1];//配货的生产单号 $params = [ 'org_code'=>'120', "org_wh_code"=>'02', 'rec_code'=>'120', 'rev_wh_code'=>'02', 'rkid'=>$info['rkid'], 'rkcode'=>$info['rkcode'], 'number'=>$info['number'], 'shipremarks'=>$info['shipremarks'], 'list'=>[ [ 'sl'=>1, 'jm'=>$info['jm'], ] ] ]; $res = $this->apiyyv1->cprkCreate($params,$token); if(isset($res[0]['Data'][0]['m_isSucess'])&& $res[0]['Data'][0]['m_isSucess'] == 1){ $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]); return $this->logic_tools->ret_arr(1,"成品入库单创建成功"); }else{ $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]); return $this->logic_tools->ret_arr(-1,"成品入库单创建失败"); } } public function checkCprk($info){ $token = $this->getToken(120); $params = [ [ "DocNo"=>$info['bzsh_no'] ] ]; $res = $this->apiyyv1->cprkApprove($params,$token); //如果入库审核失败 先查询 如果不存在就标记 存在就再次审核 if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){ //查询单子是否存在 sleep(1); $res = $this->apiyyv1->cprkCx($params,$token); if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){ //查询失败 这里不做状态变更 只是做记录 $this->editData($info['id'],['update_time'=>time()],$info['order_no'],20,2,'scrk_ck',$res[1],$res[0]); return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请稍后审核"); } $res = $this->apiyyv1->cprkApprove($params,$token); } //如果再错误就 没办法了 if(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1){ $this->editData($info['id'],['bzsh_status'=>3,'update_time'=>time()],$info['order_no'],20,3,'scrk_sh',$res[1],$res[0]); return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请联系到u9核对成品入库单的状态"); } } public function doDcd($data){ $info = $this->whlabel_bh_transfer->read($data['child_order_no']); $time = time(); $list = [ [ 'jm'=>$info['jm'], 'bm'=>$info['bm'], 'zh'=>$info['pm'], 'final_price'=>1,//目前先不设置 等后期财务说了再说 'title'=>$info['title'], 'dcsl'=>1, 'is_register'=>0,//商品是否被注册 先都当没注册 后面会先确认下 ] ]; $sc = explode('~',$info['scid']); $info['rkid'] = $sc[0];//配货的生产id $info['rkcode'] = $sc[1];//配货的生产单号 $dcck = $sc[2]; $dc_params = [ 'gys'=>'98001',//供应商 龙盈 'number'=>$info['orderinfo'],//erp订单编码 "TransOutDocType_Code"=>"TransOut001",//组织间调拨 "time"=>$time, 'TransferDirection'=>0,//普通 'yyid'=>'98001',//备货都是卖给了龙熠 'shipremarks'=>$info['shipremarks'],//订单的备注 'dcckbm'=>$dcck,//调出仓库编码 完成库 'drckbm'=>"13001",//调入仓库编码 成品库 'drzz_code'=>"130",//调入组织Code 'owner_code'=>"120",//货主组织Code //'ztcode'=>$this->ztcode,//账套 //'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表 'list'=>$list ]; //创建调出单 $dcd_res = $this->apiyyv1->dcdCrate($dc_params,$this->getToken(120)); if(empty($dcd_res[0]['Data'][0]["Code"])){ $this->editData($data['id'],['dc_status'=>-1,'update_time'=>time()],$info['orderinfo'],1,1,'dc',$dcd_res[1],$dcd_res[0]); return ; } //更新 $dcd_no = $dcd_res[0]['Data'][0]["Code"]; $this->editData($data['id'],['dc_no'=>$dcd_no,'dc_status'=>1,'update_time'=>time()],$info['orderinfo'],1,1,'dc',$dcd_res[1],$dcd_res[0]); } public function cxDrd($info){ $r = $this->apiyyv1->xdlsCxDcd($info['dc_no'],$this->getToken(130)); if(empty($r[0]['Data'])){ return ; } //更新销售单数据 //$xs_no = json_encode($r[0]['Data']); $this->editData($info['id'],['dc_status'=>3,'update_time'=>time()],$info['order_no'],8,1,'dc_xc',$r[1],$r[0]); } public function checkDrd($info){ $r = $this->apiyyv1->drdcxBydcd($info['dc_no'],$this->getToken(130)); //如果获取对应调入单没有成功 if(empty($r[0]['Data'][0]['docno'])){ $this->editData($info['id'],['dr_status'=>-1,'update_time'=>time()],$info['order_no'],6,1,'dr',$r[1],$r[0]); return ; } $dr_no = $r[0]['Data'][0]["docno"]; $this->editData($info['id'],['dr_no'=>$dr_no,'dr_status'=>1,'update_time'=>time()],$info['order_no'],6,1,'dr',$r[1],$r[0]); //提交调入单 $rr = $this->apiyyv1->drdSubmit(['number'=>$dr_no],$this->getToken(130)); if(!$rr[0]['Data'][0]['IsSucess']){ $this->editData($info['id'],['dr_status'=>-2,'update_time'=>time()],$info['order_no'],6,2,'dr',$rr[1],$rr[0]); return; } $this->editData($info['id'],['dr_status'=>2,'update_time'=>time()],$info['order_no'],6,2,'dr',$rr[1],$rr[0]); //审核调入单 $rrr = $this->apiyyv1->drdApprove(['number'=>$dr_no],$this->getToken(130)); if(!$rrr[0]['Data'][0]['IsSucess']){ $this->editData($info['id'],['dr_status'=>-3,'update_time'=>time()],$info['order_no'],6,3,'dr',$rrr[1],$rrr[0]); return; } $this->editData($info['id'],['dr_status'=>3,'update_time'=>time()],$info['order_no'],6,3,'dr',$rrr[1],$rrr[0]); } protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){ $this->zzquque_u9->save($z_qu_arr,$zq_u9_id); $this->zzququeu9_logs->insert([ 'oid'=>$zq_u9_id, 'number'=>$number, 'one_type'=>$one_type, 'two_type'=>$two_type, 'apply_api'=>$apply_api, 'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE), 'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE), 'create_time'=>time(), 'read_time'=>date("Y-m-d H:i:s") ]); } }