<?php
/**
 * @todo 生成差异数据
 */
require_once('../config.php');

$str = 'a:8:{s:7:"send_id";s:5:"C0426";s:10:"message_id";s:36:"3a81ba5c-679f-47cc-a9d8-f4df2d88e0b6";s:12:"message_type";s:4:"json";s:14:"message_method";s:5:"order";s:4:"data";s:2224:"eyJIZWFkZXJSZXF1ZXN0Ijp7ImFwcEtleSI6ImRmZjY1NzM2ZWYwOTQ3NDlhNTIyYjY5ZDM4YjU2OTkwIiwiYXBwVG9rZW4iOiIzOEJCN0E2RUM5RkQyNEQ1IiwiY3VzdG9tZXJDb2RlIjoiQzA0MjYifSwiT3JkZXJJbmZvIjp7ImFtb3VudCI6IjMwMDUuNzYiLCJidXllck5hbWUiOiLmnY7kvJrpnJ4iLCJjdXJyZW5jeUNvZGUiOiJSTUIiLCJkZWxpdmVyeUZlZSI6IjAuMDAiLCJkaXNjb3VudFJhdGUiOiIwLjAyIiwiZWJjQ29kZSI6IjMzMDI0NjA5SEYiLCJlYmNOYW1lIjoi5a6B5rOi5a+w5piO5Zu96ZmF6LS45piT5pyJ6ZmQ5YWs5Y+4IiwiZWJwQ29kZSI6IjMzMDE5NjBUOVMiLCJlYnBOYW1lIjoi5p2t5bee5ZSv5aCC55S15a2Q5ZWG5Yqh5pyJ6ZmQ5YWs5Y+4IiwiaWROdW1iZXIiOiIxMTAyMjMxOTg0MDYwOTE4ODciLCJpZFR5cGUiOiIxIiwib2FiQ291bnR5IjoiQ04iLCJvYWJOYW1lIjoi5p2O5Lya6ZyeIiwib2FiUGhvbmUiOiIxMzkxMTAyMDk2NyIsIm9hYlN0YXRlTmFtZSI6IuWMl+S6rCIsIm9hYlN0cmVldEFkZHJlc3MxIjoi5YyX5Lqs5YyX5Lqs5biC6aG65LmJ5Yy65p2O5qGl6ZWH6YCa6aG66LevMznlj7fok53nm77lronkv53pm4blm6LmnInpmZDlhazlj7giLCJvcmRlck1vZGVsIjowLCJvcmRlclByb2R1Y3QiOlt7ImRlYWxQcmljZSI6NjIuOTAwMDAsIm9wUXVhbnRpdHkiOjIuMDAwMDAsInByb2R1Y3RTa3UiOiIxMDAwNDE5IiwidHJhbnNhY3Rpb25QcmljZSI6NjIuOTAwMDB9LHsiZGVhbFByaWNlIjozNDQuNzAwMDAsIm9wUXVhbnRpdHkiOjIuMDAwMDAsInByb2R1Y3RTa3UiOiIxMDAwMTkzIiwidHJhbnNhY3Rpb25QcmljZSI6MzQ0LjcwMDAwfSx7ImRlYWxQcmljZSI6MzQ0Ljc1MDAwLCJvcFF1YW50aXR5IjozLjAwMDAwLCJwcm9kdWN0U2t1IjoiMTAwMDE5MSIsInRyYW5zYWN0aW9uUHJpY2UiOjM0NC43NTAwMH0seyJkZWFsUHJpY2UiOjQ4LjEyMDAwLCJvcFF1YW50aXR5Ijo0LjAwMDAwLCJwcm9kdWN0U2t1IjoiMTIwMjEwOTA4Nzc0NzU2IiwidHJhbnNhY3Rpb25QcmljZSI6NDguMTIwMDB9LHsiZGVhbFByaWNlIjo4OS44MzAwMCwib3BRdWFudGl0eSI6NC4wMDAwMCwicHJvZHVjdFNrdSI6IjEyMDIxMDcwNTYwOTU5MyIsInRyYW5zYWN0aW9uUHJpY2UiOjg5LjgzMDAwfSx7ImRlYWxQcmljZSI6ODguNDUwMDAsIm9wUXVhbnRpdHkiOjQuMDAwMDAsInByb2R1Y3RTa3UiOiIxMjAyMTA3MDk4NTY0ODYiLCJ0cmFuc2FjdGlvblByaWNlIjo4OC40NTAwMH0seyJkZWFsUHJpY2UiOjAuMDAwMDAsIm9wUXVhbnRpdHkiOjIuMDAwMDAsInByb2R1Y3RTa3UiOiIxMjAyMTA5MDI5Mjk5ODgiLCJ0cmFuc2FjdGlvblByaWNlIjowLjAwMDAwfSx7ImRlYWxQcmljZSI6MC4wMDAwMCwib3BRdWFudGl0eSI6Mi4wMDAwMCwicHJvZHVjdFNrdSI6IjEyMDIxMTIwMTgzODY3NSIsInRyYW5zYWN0aW9uUHJpY2UiOjAuMDAwMDB9XSwib3JkZXJUYXgiOiIyNTAuNzMiLCJwYXlDb2RlIjoiMzEwNTk4MjAwMiIsInBheU5vIjoiMjAyMTEyMjIyMjAwMTQ4NDk5MTQwMDc3ODc4MCIsInJlZmVyZW5jZU5vIjoiSzIxMTIyMjE1MzMwODQ0NjAwMDAzODU5NzA4NyIsInNob3BJZCI6IkRDSVNFTEYiLCJzbUNvZGUiOiJTRiIsInRyYWNraW5nTnVtYmVyIjoiU0YxMzQxMzA3NTQ1NDQ2Iiwid2FyZWhvdXNlQ29kZSI6IkRHU1QtWVoifX0=";s:6:"expand";s:30:"[K211222153308446000038597087]";s:4:"sign";s:32:"17f4003683ce1527ce114b40488f62a8";s:5:"queue";s:8:"apivhque";}';


$data = unserialize($str);

$parm = base64_decode($data['data']);



print_r($parm);


exit;

$flagFile = APPLICATION_PATH . '/../data/log/fixhs.lock';
if (@file_exists($flagFile)) {
    echo 'The running.'."\r\n";
    echo $flagFile."\r\n";
    //exit();
}
$strings = array_map("chr", $bytes);
$string = implode(" ", $strings);

exit;


function creatediff($rowlbx){
    try {
        $db = Common_Common::getAdapter();
        $lbx = $rowlbx['lbxrelcode'];
        if(empty($rowlbx)){
            throw new Exception("lbx 数据为空");
        }
        if(strstr($lbx,'LBX')===false){
            throw new Exception("lbx单号{$lbx}");
        }
        if($rowlbx['optype']=='收货入库'){
            //$sqlbx = "select * from lbx_cainiaowarehouse where 1 and lbxrelcode='$lbx' and optype in('收货入库','2B单出库') and kucunchenci='仓储物理库存';";
        }else{
            //$sqlbx = "select * from lbx_cainiaowarehouse where 1 and lbxrelcode='$lbx' and optype in('收货入库','2B单出库');";
        }
        $sqlbx = "select * from lbx_cainiaowarehouse where 1 and lbxrelcode='$lbx' and optype in('收货入库','2B单出库') and kucunchenci='仓储物理库存';";

        //echo $sqlbx;
        //exit;
        //exit;


        //$sqlbx = "select * from lbx_cainiaowarehouse where 1 and lbxrelcode='$lbx' and status='0' and optype in('收货入库','2B单出库');";
        //echo $sqlbx;exit;
        $lbxs = $db->fetchAll($sqlbx);
        //print_r($lbxs);
        //exit;
        if(!empty($lbxs)){
            $glbxs = array(); //这个是仓库的lbx信息
            foreach ($lbxs as $k=>$rowlbx){
                //echo "rowbox";
                //print_r($rowlbx);
                if(isset($glbxs[$rowlbx['outid']])){
                    $glbxs[$rowlbx['outid']]['opqutity'] += $rowlbx['opqutity'];
                    $glbxs[$rowlbx['outid']]['lbxs'][] = $rowlbx;
                }else{
                    $glbxs[$rowlbx['outid']] = $rowlbx;
                    $glbxs[$rowlbx['outid']]['lbxs'][] = $rowlbx;
                }
                //exit;
            }
            //echo "lbx";
            //print_r($glbxs);
            //exit;

            if(!empty($glbxs)){
                //查询关务的数据
                foreach ($glbxs as $k=>$glbx){
                    $huopinid = $glbx['outid'];
                    $sqlgw = "select * from qg_detail_cainiao where 1 and lbx='$lbx' and huopinid='$huopinid' ";
                    $cbs = getqgdetails($db,$sqlgw); //这个是汇总关务cb单的数据信息
                    $glbxs[$k]['cbs'] = $cbs; //把仓库的数据和关务的数据关联起来
                }
            }
            /*echo "glbex ceb";
            print_r($glbxs);*/
            //exit;


            if(!empty($glbxs)){
                foreach ($glbxs as $k=>$glbx){
                    createonediff($glbx,$k);
                }
            }


        }else{
            throw new Exception("lbx的{$lbx}数据为空");
        }
    }catch (Exception $e){
        $upRow = array(
            //'differ_id'=>$differ_id,
            'diffe_message'=>'数据异常:'.$e->getMessage(),
            'status'=>'3'
        );
        $db->update('lbx_cainiaowarehouse',$upRow,"id={$lbx['id']}");
    }
}
//生产一个lbx一个品的差异
function createonediff($glbx,$outid){
    $createfile = APPLICATION_PATH."/../data/diffcreate2.txt";
    $errorfile = APPLICATION_PATH."/../data/differror2.txt";
    if(!file_exists($createfile)){

    }
    $lbxcode = $glbx['lbxrelcode'];
    try {
        $db = Common_Common::getAdapter();
        $db->beginTransaction();

        $lbxs = $glbx['lbxs'];
        $cbs = array();
        $cbsDetail = array();
        //echo "ddddd";
        if(isset($glbx['cbs']) && isset($glbx['cbs'][$outid])){
            $cbs = $glbx['cbs'][$outid];
            $cbsDetail = $glbx['cbs'][$outid]['cbs'];
        }
        //print_r($glbx);
        //exit;
        //var_dump($cbsDetail);


        $lbx_ids = "";
        $qdc_ids = "";
        if(!empty($lbxs)){
            $ids = array();
            foreach ($lbxs as $k=>$lbx){
                $ids[]=$lbx['id'];
            }
            $lbx_ids = implode("|",$ids);
        }
        $g_status = 1; //表示全部服务完成
        $deal_status = 1;
        $xuhaos = "";
        //echo "cblllll";
        //print_r($cbsDetail);
        //exit;
        if(!empty($cbsDetail)){
            $ids = array();
            //$cbRow = [];
            $stansNames=[];
            $invtStatusName=[];
            $xuhaoArr = [];
            //print_r($cbsDetail);
            //exit;
            foreach ($cbsDetail as $k=>$cb){
                $ids[]=$cb['qdc_id'];
                $stansNames[]=$cb['standardStatusName'];
                $invtStatusName[] =$cb['invtStatusName'];
                if($cb['standardStatusName']!='服务完成'){
                    $g_status = -1; //表示有未服务完成的单证
                }
                $xuhaoArr[]=$cb['xuhao'];
            }
            $qdc_ids = implode("|",$ids);
            $xuhaos = implode("|",$xuhaoArr);


            //找到通关子单清关信息
            $diff_numer = $cbs['shuliang']-$glbx['opqutity']; //关务-仓库的数量
            //var_dump($diff_numer);
            if($cbs['shuliang']>0&&$diff_numer==0){
                $deal_status = -1;
            }
            //echo '6666';
            $db->delete("diff_cainiao","1 and lbx='$lbxcode'");
            //echo "777";
            //exit;

            $diffRow = array(
                'lbx_ids'=>$lbx_ids,
                'qdc_ids'=>$qdc_ids,
                'lbx'=>$glbx['lbxrelcode'],
                'huozhu'=>$glbx['huozhu'],
                'mingcheng'=>$glbx['mingcheng'],
                'barcode'=>$glbx['barcode'],
                'outid'=>$glbx['outid'],
                'w_create_time'=>$glbx['createtime'],
                'w_update_time'=>$glbx['updatetime'],
                'optype'=>$glbx['optype'],
                'danjutype'=>$glbx['danjutype'],
                'opqutity'=>$glbx['opqutity'],
                'g_cbCode'=>$cbs['shuliang'],
                'g_dstStoreCode'=>$cbs['dstStoreCode'],
                'g_qg'=>$cbs['qg'],
                'g_cnInvtNo'=>$cbs['cnInvtNo'],
                'g_standardStatusName'=>implode("|",$stansNames),//$cbs[''],
                'g_invtStatusName'=>implode("|",$stansNames),//$cbs['invtStatusName'],
                'g_quantity'=>$cbs['shuliang'],
                'g_status'=>$g_status,
                'g_houpinid'=>$cbs['huopinid'],
                'g_xuhao'=>$xuhaos, //所有的序号
                'g_message'=>"",
                'g_dealtime'=>date("Y-m-d H:i:s",time()),
                'diff_numer'=>$diff_numer,
            );
            //echo "difff";
            //print_r($diffRow);
            $db->insert('diff_cainiao',$diffRow);
            $differ_id = $db->lastInsertId();
            //var_dump($differ_id);
            //var_dump($diff_numer);
            if(!empty($differ_id)){
                //处理qg_detail_cainiao表数据和lbx_cainiaowarehouse表数据
                if(!empty($lbxs)){
                    $ids = array();
                    $lbxstatus = 5;
                    if($cbs['shuliang']>0&&$diff_numer==0){
                        $lbxstatus = 1;
                    }elseif($cbs['shuliang']>0&&abs($diff_numer)>0){
                        $lbxstatus = 2;
                    }
                    foreach ($lbxs as $k=>$lbx){
                        $ids[]=$lbx['id'];
                        if(!strstr($lbx['lbxrelcode'],'LBX')){
                            $lbxstatus = 3;
                        }
                        //更新lbx_cainiaowarehouse
                        $upRow = array(
                            'differ_id'=>$differ_id,
                            'diffe_message'=>'生产差异单证差异数:'.$diff_numer,
                            'status'=>$lbxstatus,
                            'guanwucbcode'=>$cbs['cbCode'],
                        );
                        $luruLbx = $db->fetchRow("select * from lbx_cainiao where ru_lbx='".$lbx['lbxrelcode']."'");
                        if($luruLbx) {
                            $upRow['jilucbcode']=$luruLbx['cb_code'];
                        }
                        echo "lbx-cainiaowareshouse";
                        print_r($upRow);
                        $db->update('lbx_cainiaowarehouse',$upRow,"id={$lbx['id']}");
                    }
                    //更新qg_detail_cainiao
                    if(!empty($cbsDetail)){
                        $qgstatus = -1;
                        if($cbs['shuliang']>0&&$diff_numer==0){
                            $qgstatus = 1;
                        }elseif($cbs['shuliang']>0&&abs($diff_numer)>0){
                            $qgstatus = 2;
                        }
                        foreach ($cbsDetail as $k=>$cb){
                            //更新更新qg_detail_cainiao
                            $upRow = array(
                                'deal_status'=>$qgstatus,
                                'diff_id'=>$differ_id,
                                'deal_message'=>"生产差异单证差异数:".$diff_numer,
                                'lbx_ids'=>$lbx_ids,
                            );
                            $db->update('qg_detail_cainiao',$upRow,"qdc_id={$cb['qdc_id']}");
                        }
                    }
                    //$lbx_ids = implode("|",$ids);
                }
            }

        }else{
            //找不到通关子单申报的信息，更新仓库的数据。
            if(!empty($lbxs)){
                $ids = array();
                $lbxstatus = 4;
                foreach ($lbxs as $k=>$lbx){
                    $ids[]=$lbx['id'];
                    //更新lbx_cainiaowarehouse
                    $upRow = array(
                        //'differ_id'=>$differ_id,
                        'diffe_message'=>'没找到通关信息:'.$glbx['lbxrelcode'],
                        'status'=>$lbxstatus
                    );
                    //echo "ssssffff";
                    //var_dump($upRow);
                    $db->update('lbx_cainiaowarehouse',$upRow,"id={$lbx['id']}");
                }
                //$lbx_ids = implode("|",$ids);
            }
        }
        file_put_contents($createfile,"lbx code:{$lbxcode},处理完成"."\r\n",FILE_APPEND);
        //exit;
        $db->commit();
        //$db->rollBack();
    }catch (Exception $e){
        $db->rollBack();
        file_put_contents($errorfile,"lbx code:{$lbxcode},处理失败"."\r\n",FILE_APPEND);
    }
}


function getqgdetails($db,$sql){
    $qgdetails = $db->fetchAll($sql);
    $rowsliaohao = array();
    foreach ($qgdetails as $k=>$row){
        if(isset($rowsliaohao[$row['huopinid']])){
            $rowsliaohao[$row['huopinid']]['shuliang'] += $row['shuliang'];
            $rowsliaohao[$row['huopinid']]['cbs'][] = $row;
        }else{
            $rowsliaohao[$row['huopinid']] = $row;
            $rowsliaohao[$row['huopinid']]['cbs'][] = $row;
        }
    }
    return $rowsliaohao;
}


function execreatediff(){
    //exit;
    $db = Common_Common::getAdapter();
    echo "<pre>";
    echo "rows";
    //print_r($rows);
    //exit;
    $total = 4335;
    for($i=1;$i<=$total;$i++){
        $sql = "select * from lbx_cainiaowarehouse where 1 and status='0' and optype in('收货入库','2B单出库') and kucunchenci='仓储物理库存' GROUP BY lbxrelcode limit 1;";
        //$sql = "select * from lbx_cainiaowarehouse where 1 and lbxrelcode='LBX0221375890146614' and optype in('收货入库','2B单出库') GROUP BY lbxrelcode limit 1;";
        echo $sql."\r\n";
        $rows = $db->fetchRow($sql);
        print_r($rows);
        //exit;
        if(!empty($rows)){
            creatediff($rows);
        }else{
            echo $i."无对比数据"."\r\n";
        }
        //exit;
        //exit;
    }
    /*if(!empty($rows)){
        foreach ($rows as $k=>$row){
            creatediff($row);
            //exit;
        }
    }*/
}

//execreatediff();
function jiluLbx(){
    $db = Common_Common::getAdapter();
    $sql = "SELECT count(*) FROM lbx_cainiaowarehouse WHERE `status`=0 AND kucunchenci='仓储物理库存'";
    $total = $db->fetchOne($sql);
    $page = ceil($total/1000);
    for($i=1;$i<=$page;$i++){
        $listSql = "SELECT * FROM lbx_cainiaowarehouse WHERE `status`=0 AND kucunchenci='仓储物理库存' limit ".(($i-1)*1000).',1000';
        $list = $db->fetchAll($listSql);
        echo $i;
        echo PHP_EOL;
        foreach ($list as $li){
            if($li['lbxrelcode']) {
                echo $li['lbxrelcode'];
                echo PHP_EOL;
                $lbxSql = "select * from qg_detail_cainiao where lbx='" . $li['lbxrelcode'] . "'";
                $lbxInfo =$db->fetchRow($lbxSql);
                if(empty($lbxInfo)){
                    $luruLbx = $db->fetchRow("select * from lbx_cainiao where ru_lbx='".$li['lbxrelcode']."'");
                    if($luruLbx) {
                            $db->update('lbx_cainiaowarehouse', [
                                'jilu_code'=>$li['lbxrelcode'],
                            ],'id='.$li['id']);
                    }
                }
            }

        }
    }
}
// jiluLbx();

//检查lbx的货品数量和通关子单里面的lbx里面的数量
function checklbxgroup(){
    $db = Common_Common::getAdapter();
    $sql = "select * from lbx_cainiaowarehousegrop ";
    $wareRows = $db->fetchAll($sql);
    if(!empty($wareRows)){
        foreach ($wareRows as $k=>$rows){
            $lbx = $rows['lbxrelcode'];
            $sqlbx = "c";
            $lbxRows = $db->fetchAll($sqlbx);
            $lbxhuopin = [];
            foreach ($lbxRows as $klb=>$rlb){
                $outid = $rlb['outid']+0;
                if(!in_array($outid,$lbxhuopin)){
                    $lbxhuopin[] = $outid;
                }
            }
            $lbxhuopin = array_unique($lbxhuopin);
            sort($lbxhuopin);
            //查找qg_detail_cainiao
            $sqlqg = "select * from qg_detail_cainiao where lbx='$lbx';";
            $qgRows = $db->fetchAll($sqlqg);
            $cbCodes = [];
            if(!empty($qgRows)){
                $qghuopin = [];
                foreach ($qgRows as $kg=>$rg){
                    $huopinid = $rg['huopinid']+0;
                    $cbcode = $rg['cbCode'];
                    if(!in_array($huopinid,$qghuopin)){
                        $qghuopin[] = $huopinid;
                    }
                    if(!in_array($cbcode,$cbCodes)){
                        $cbCodes[] = $cbcode;
                    }
                }
                $qghuopin = array_unique($qghuopin);
                sort($qghuopin);
                sort($cbCodes);
            }
            //查关务记录的数据
            $sqljilu = "select * from lbx_cainiao where 1 and ru_lbx='$lbx';";
            echo $sqljilu;
            $rowjilu = $db->fetchAll($sqljilu);
            $jiluCbs = [];
            if(!empty($rowjilu)){
                foreach ($rowjilu as $kr=>$vkr){
                    $jilucbcode = $vkr['cb_code'];
                    if(!in_array($jilucbcode,$jiluCbs)){
                        $jiluCbs[]=$jilucbcode;
                    }
                }
                sort($jiluCbs);
            }


            $upRow = array(
                'lbxhuopinid'=>!empty($lbxhuopin)?implode("|",$lbxhuopin):"",
                'cbhuopinid'=>!empty($qghuopin)?implode("|",$qghuopin):"",
                'guanwucbcode'=>!empty($cbCodes)?implode("|",$cbCodes):"",
                'jilucbcode'=>!empty($jiluCbs)?implode("|",$jiluCbs):"",
            );
            $db->update("lbx_cainiaowarehousegrop",$upRow,"lbxrelcode='$lbx'");
            echo $lbx."over \r\n";
        }
    }
}

//checklbxgroup();

class diffbycb{

    function getCBs(){
        $db = Common_Common::getAdapter();
        $sql = "select * from lbx_cainiao";
        $rows = $db->fetchAll($sql);
        /*if(!empty($rows)){

        }*/
    }
    function checkcb(){

    }
    function getCb($row){
        //找到所有

    }
}

/*`shenjinlbx` varchar(255) DEFAULT NULL,
  `guanwulbx` varchar(255) DEFAULT NULL,
  `sjcbcodes` varchar(255) DEFAULT NULL,
  `sjnumber` varchar(255) DEFAULT NULL,
  `gwcbcodes` varchar(255) DEFAULT NULL,
  `gwjilunumber` varchar(255) DEFAULT NULL,
  `sjuserqdc_ids` text NOT NULL,
  `gwusergdc_ids` text NOT NULL,
  `msg` text,*/


//获取神鲸lbx
function getsjlbx($row,$db){
    $lbx = $row["lbx"];
    $result = array(
        'msg'=>'qg_detail_cainiao的lbx无数据',
        'data'=>[],
    );
    $huopinid = $row['huopinid'];
    if(!empty($lbx)){
        $sql = "select * from qg_detail_cainiao where lbx='$lbx'";
        $rows = $db->fetchAll($sql);
        $lbxs = [];
        if(!empty($rows)){
            $cb = [];
            foreach ($rows as $k=>$row){
                if(!in_array($row['lbx'],$lbxs)){
                    $lbxs[] = $row['lbx'];
                }
                $qghuopinid = $row['huopinid'];
                if(isset($cb[$qghuopinid])){
                    $cb[$qghuopinid]['shuliang'] = $cb[$qghuopinid]['shuliang']+$row['shuliang'];
                    $cb[$qghuopinid]['qdc_ids'][] =  $row['qdc_id'];
                    //$cb['']
                }else{
                    $cb[$qghuopinid]['shuliang'] = $row['shuliang'];
                    $cb[$qghuopinid]['qdc_ids'][] =  $row['qdc_id'];
                }
            }
            asort($lbxs);
            $result['data']['lbxs'] = $lbxs;
            $result['data']['cb'] = $cb;
        }
    }
    return $result;
}

function dealwarehousesheet(){
    /*require_once("PHPExcel.php");
    require_once("PHPExcel/Reader/Excel2007.php");
    require_once("PHPExcel/Reader/Excel5.php");
    $fileName = "F:/baiducloud/百度云同步盘/工作电脑2016/F/工作文档/进口系统/2018年/沙田/处理/2021年/09月/15/处理明细/";
    $phpExcel = PHPExcel_IOFactory::load($fileName);
    $sheet0 = $phpExcel->getSheet(4);*/
    try{
        $db = Common_Common::getAdapter();
        $sql = "select * from lbx_sumtoshenjin where msg is not null;";
        $rows = $db->fetchAll($sql);
        if(!empty($rows)){
            foreach ($rows as $k=>$row){
                $lbx = getsjlbx($row,$db);

            }
        }
    }catch (Exception $e){

    }
    echo "run over";


}

//校验实际数据的错误情况
class checkCB{
    //校验一个lbx在多个通关子单里面
    function checkrulbxgroup(){
        try {
            $db = Common_Common::getAdapter();
            $sql = "select * from lbx_cainiao_rulbxgroup;";
            $rows = $db->fetchAll($sql);
            if(!empty($rows)){
                $k =1;
                foreach ($rows as $k=>$r){
                    $ids = $r['gcid'];
                    $msg = $this->checkidRow($db,$ids,$r['id']);
                    if(!empty($msg)){
                        var_dump($msg);
                    }else{
                        echo $r['id']."check ok{$k};\r\n";
                    }
                    $k++;
                }
            }
        }catch (Exception $e){
            var_dump($e->getMessage());
        }
    }
    //校验一个lbx在多个通关子单里面
    function checkidRow($db,$ids,$lbxgid){
        $idRow = explode($ids,",");
        $msg=[];
        if(!empty($idRow)){
            foreach ($idRow as $k=>$id){
                $sql = "select * from lbx_cainiao_rulbxgroup where id!=$lbxgid";
                $exist = $this->checkloop($db,$sql,$id);
                if(!empty($exist)){
                    $msg[] = $id."在lbx_cainiao_rulbxgroup存在".implode(",",$exist);
                }
                $sql = "select * from lbx_cainiao_rucbgroup";
                $exist = $this->checkloop($db,$sql,$id);
                if(!empty($exist)){
                    $msg[] = $id."在lbx_cainiao_rucbgroup存在".implode(",",$exist);
                }
            }
        }
        return $msg;
    }
    function checkloop($db,$sql,$id){
        $rows = $db->fetchAll($sql);
        $exist = [];
        if(!empty($row)){
            foreach ($rows as $k=>$row){
                $gcid = $row['gcid'];
                $gcids = explode(",",$gcid);
                if(in_array($id,$gcids)){
                    $exist[] = $row['id'];
                }
            }
        }
        return $exist;
    }

    //校验一个cb多个lbx的情况
    function checkrucbgroup(){
        try {
            $db = Common_Common::getAdapter();
            $sql = "select * from lbx_cainiao_rucbgroup;";
            $rows = $db->fetchAll($sql);
            if(!empty($rows)){
                $k =1;
                foreach ($rows as $k=>$r){
                    $ids = $r['gcid'];
                    $msg = $this->checkcbidRow($db,$ids,$r['id']);
                    if(!empty($msg)){
                        var_dump($msg);
                    }else{
                        echo $r['id']."check ok{$k};\r\n";
                    }
                    $k++;
                }
            }
        }catch (Exception $e){
            var_dump($e->getMessage());
        }
    }
    //校验一个lbx在多个通关子单里面
    function checkcbidRow($db,$ids,$lbxgid){
        $idRow = explode($ids,",");
        $msg=[];
        if(!empty($idRow)){
            foreach ($idRow as $k=>$id){
                $sql = "select * from lbx_cainiao_rucbgroup where id!=$lbxgid";
                $exist = $this->checkloop($db,$sql,$id);
                if(!empty($exist)){
                    $msg[] = $id."在lbx_cainiao_rulbxgroup存在".implode(",",$exist);
                }
                $sql = "select * from lbx_cainiao_rulbxgroup";
                $exist = $this->checkloop($db,$sql,$id);
                if(!empty($exist)){
                    $msg[] = $id."在lbx_cainiao_rulbxgroup存在".implode(",",$exist);
                }
            }
        }
        return $msg;
    }
}

//生成一个lbx在多个通关子单里面
function lbx_rulbx_differ() {
    //一个LBX对用多个Cb
    $db = Common_Common::getAdapter();
    $list = $db->fetchAll("select * from lbx_cainiao_rulbxgroup");
    foreach ($list as $item) {
        $lbx = $item['ru_lbx'];
        $lbxId = $item['gcid'];
        $cbList = $db->fetchAll("select * from lbx_cainiao where id in(" . $lbxId . ")");
        $cbCodeList = [];
        foreach ($cbList as $cb) {
            $cbCodeList[] = $cb['cb_code'];
        }
        //先按仓库的lbx对比
        $warehouseLbx = $db->fetchAll("select * from lbx_sumtoshenjin where lbx='" . $lbx . "'");
        $qgDetail = "select *,sum(shuliang) as totalShui,group_concat(qdc_id) as gidTotal,group_concat(cbCode) as cbTotal,group_concat(lbx) lbxTotal  from qg_detail_cainiao where cbCode in('".implode("','",$cbCodeList)."') group by huopinid";
        $qgDetailList = $db->fetchAll($qgDetail);
        $qgFormart=[];
        $gLbx=[];
        foreach ($qgDetailList as $gitem){
            $qgFormart[$gitem['huopinid']]=$gitem;
            $gLbx[]=$gitem['lbxTotal'];
        }
        $glbxList=explode(",",implode(",",$gLbx));
        $glbxList = array_unique($glbxList);

        $warehouseLbxCopy =[];
        foreach ($warehouseLbx as $w){
            $warehouseLbxCopy[$w['huopinid']]=$w;
        }
        foreach ($warehouseLbx as $witem) {
            echo $witem['huopinid'];
            echo PHP_EOL;
            if(isset($qgFormart[$witem['huopinid']])) {
                $gItem = $qgFormart[$witem['huopinid']];
                $insert = [
                    'biao' => 'lbx_cainiao_rulbxgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => $witem['lbx'],
                    'c_good_id' => $witem['huopinid'],
                    'c_good_num' => $witem['sumnumber'],
                    'c_id_list' => $witem['ls_id'],
                    'g_lbx'=>implode(",",$glbxList),
                    'g_cb_list' => implode(",",array_unique(explode(',',$gItem['cbTotal']))),
                    'g_id_list' => $gItem['gidTotal'],
                    'g_goods_num' => $gItem['totalShui'],
                    'g_good_id' => $witem['huopinid'],
                    'add_time'=>$witem['createtime'],
                ];
                $db->insert('lbx_rulbx_differ', $insert);
                unset($qgFormart[$witem['huopinid']]);
            }else{
                $insert = [
                    'biao' => 'lbx_cainiao_rulbxgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => $witem['lbx'],
                    'c_good_id' => $witem['huopinid'],
                    'c_good_num' => $witem['sumnumber'],
                    'c_id_list' => $witem['ls_id'],
                    'g_lbx'=>implode(",",$glbxList),
                    'g_cb_list' => '',
                    'g_id_list' => '',
                    'g_goods_num' => '',
                    'g_good_id' => '',
                    'add_time'=>$witem['createtime'],
                ];
                $db->insert('lbx_rulbx_differ', $insert);
            }
        }
        if(!empty($qgFormart)){
            foreach ($qgFormart as $fitem){
                $insert = [
                    'biao' => 'lbx_cainiao_rulbxgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => '',
                    'c_good_id' => '',
                    'c_good_num' => '',
                    'c_id_list' => '',
                    'g_lbx'=>implode(",",$glbxList),
                    'g_cb_list' => implode(",",array_unique(explode(',',$fitem['cbTotal']))),
                    'g_id_list' => $fitem['gidTotal'],
                    'g_goods_num' => $fitem['totalShui'],
                    'g_good_id' => $fitem['huopinid']
                ];
                $db->insert('lbx_rulbx_differ', $insert);
            }
        }
    }
}
// lbx_rulbx_differ();
//生成一个通关子单存在多个lbx
function lbx_cainiao_rucbgroup() {
    //一个cb对应多个lbx
    $db = Common_Common::getAdapter();
    $list = $db->fetchAll("select * from lbx_cainiao_rucbgroup");
    foreach ($list as $item) {
        $lbx = $item['ru_lbx'];
        $lbxId = $item['gcid'];
        $cbList = $db->fetchAll("select * from lbx_cainiao where id in(" . $lbxId . ")");
        $cbCodeList = [];
        $lbxs = [];
        foreach ($cbList as $cb) {
            $cbCodeList[] = $cb['cb_code'];
            $lbxs[] = $cb['ru_lbx'];
        }
        $sql = "select *,sum(sumnumber) sumnumbertotal,group_concat(lbx) c_lbx,group_concat(ls_id) c_id_list from lbx_sumtoshenjin where lbx in('".implode("','",$lbxs)."') GROUP BY huopinid";
        //先按仓库的lbx对比
        $warehouseLbx = $db->fetchAll($sql);

        $qgDetail = "select *,sum(shuliang) as totalShui,group_concat(qdc_id) as gidTotal,group_concat(cbCode) as cbTotal,group_concat(lbx) lbxTotal  from qg_detail_cainiao where cbCode in('".implode("','",$cbCodeList)."') group by huopinid";
        $qgDetailList = $db->fetchAll($qgDetail);
        $qgFormart=[];
        $gLbx=[];
        foreach ($qgDetailList as $gitem){
            $qgFormart[$gitem['huopinid']]=$gitem;
            $gLbx[]=$gitem['lbxTotal'];
        }
        $glbxList=explode(",",implode(",",$gLbx));
        $glbxList = array_unique($glbxList);
        $warehouseLbxCopy =[];
        foreach ($warehouseLbx as $w){
            $warehouseLbxCopy[$w['huopinid']]=$w;
        }
        foreach ($warehouseLbx as $witem) {
            echo $witem['huopinid'];
            echo PHP_EOL;
            if(isset($qgFormart[$witem['huopinid']])) {
                $gItem = $qgFormart[$witem['huopinid']];
                $c_lbx = array_unique(explode(',',$witem['c_lbx']));
                sort($c_lbx);
                $insert = [
                    'biao' => 'lbx_cainiao_rucbgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => implode(",",$c_lbx),//$witem['lbx'],
                    'c_good_id' => $witem['huopinid'],
                    'c_good_num' => $witem['sumnumbertotal'],
                    'c_id_list' => implode(",",array_unique(explode(',',$witem['c_id_list']))),//$witem['ls_id'],
                    'g_cb_list' => implode(",",array_unique(explode(',',$gItem['cbTotal']))),
                    'g_lbx'=>implode(",",$glbxList),
                    'g_id_list' => $gItem['gidTotal'],
                    'g_goods_num' => $gItem['totalShui'],
                    'g_good_id' => $witem['huopinid'],
                    'add_time'=>$witem['createtime'],
                ];
                $db->insert('lbx_rulbx_differ', $insert);
                unset($qgFormart[$witem['huopinid']]);
            }else{
                $c_lbx = array_unique(explode(',',$witem['c_lbx']));
                sort($c_lbx);
                $insert = [
                    'biao' => 'lbx_cainiao_rucbgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => implode(",",$c_lbx),//$witem['lbx'],
                    'c_good_id' => $witem['huopinid'],
                    'c_good_num' => $witem['sumnumbertotal'],
                    'g_lbx'=>implode(",",$glbxList),
                    'c_id_list' => implode(",",array_unique(explode(',',$witem['c_id_list']))),//$witem['ls_id'],
                    'g_cb_list' => '',
                    'g_id_list' => '',
                    'g_goods_num' => '',
                    'g_good_id' => '',
                    'add_time'=>$witem['createtime'],
                ];
                $db->insert('lbx_rulbx_differ', $insert);
            }
        }
        if(!empty($qgFormart)){
            foreach ($qgFormart as $fitem){
                $insert = [
                    'biao' => 'lbx_cainiao_rucbgroup',
                    'biao_id' => $item['id'],
                    'c_lbx' => '',
                    'c_good_id' => '',
                    'c_good_num' => '',
                    'c_id_list' => '',
                    'g_lbx'=>implode(",",$glbxList),
                    'g_cb_list' => implode(",",array_unique(explode(',',$fitem['cbTotal']))),
                    'g_id_list' => $fitem['gidTotal'],
                    'g_goods_num' => $fitem['totalShui'],
                    'g_good_id' => $fitem['huopinid']
                ];
                $db->insert('lbx_rulbx_differ', $insert);
            }
        }
    }
}
function checklbxDiff(){
    $db = Common_Common::getAdapter();
    $total= $db->fetchOne("select count(*) from lbx_rulbx_differ");
    $pageSize = 1000;
    $totalPage = ceil($total/$pageSize);
    for($i=1;$i<=$totalPage;$i++){
        $listSql = "SELECT * FROM lbx_rulbx_differ  limit ".(($i-1)*1000).',1000';
        $listData = $db->fetchAll($listSql);
        foreach($listData as $item){
            $id=$item['c_id_list'];
            $idList = explode(',',$id);
            echo $item['id'];
            echo PHP_EOL;
            $checkResult = checkId($item['id'],$idList);
            if($checkResult){
                $db->update('lbx_rulbx_differ',[
                    'c_status'=>1
                ],'id='.$item['id']);
            }
        }
    }
}
function checkId($differId,$idList){
    $db = Common_Common::getAdapter();
    foreach ($idList as $id){
        $check ="select * from lbx_rulbx_differ where c_id_list like '%{$id}%' and id!={$differId}";
        echo $check;
        $checkList = $db->fetchAll($check);
        if(!empty($checkList)){
            foreach ($checkList as $checkItem){
                    $idExplode = explode(',',$checkItem['c_id_list']);
                    if(in_array($id,$idExplode)){
                        return true;
                    }
            }
        }
    }
    return false;
}
//checklbxDiff();
/*$checkcb = new checkCB();
//$checkcb->checkrulbxgroup();
$checkcb->checkrucbgroup();*/
lbx_rulbx_differ();
lbx_cainiao_rucbgroup();

