| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | <?php/** * 系统自动处理在途库存的香港问题 */class Model_logic_u9bh extends Lin_Model {       //切记要修改token_120的token真正的token!!!!    function __construct(){        parent::__construct();        $this->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")        ]);    }}
 |