| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | <?phpnamespace App\Service;use App\Model\Construction;use App\Model\OrderNoCount;use App\Model\SalesOrder;class OrderNoService extends Service{    function generateOrderNumberNew($prefix, $user) {        $data['depart_id'] = $this->getDepart($user);        $top_depart_id = $user['depart_map'][$data['depart_id']] ?? 0;        // 使用 strtotime 将日期字符串转换为时间戳,并设置为当天零时        $timestampZero = strtotime(date('Y-m-d') . ' 00:00:00');        $order_no_count = OrderNoCount::where('prefix',$prefix)            ->where('top_depart_id',$top_depart_id)            ->where('time', $timestampZero)            ->first();        if(empty($order_no_count)) {            $counter = 1;        }else{            $counter = $order_no_count->count + 1;        }        // 格式化计数器为至少三位数        $number = str_pad($counter, ($counter >= 1000 ? 4 : 3), '0', STR_PAD_LEFT);        // 生成订单单号        $orderNumber = $prefix . date('Ymd') . $number;        return $orderNumber;    }    //采购 收货 发货 单号生成    public function createOrderNumber($prefix){        return $prefix . date('YmdHis',time()) . rand(1000,9999);    }    //合同编号    public static function createSalesOrderNumber($prefix){        return $prefix . date('YmdHis',time()). rand(1000,9999);    }    public static function createSalesOrderNumberImport($prefix) {        // 获取当前时间的微秒级时间戳        list($micro, $seconds) = explode(' ', microtime());        // 从微秒部分截取全部6位作为唯一标识符        $microSuffix = substr($micro, 2, 6);        return $prefix . date('YmdHis', $seconds) . $microSuffix;    }    //施工单订单合同号    public static function createConstructionOrderNumber($prefix){       return $prefix . date('YmdHis',time()). rand(1000,9999);    }    //退换货 单号生成    public function createReturnExchangeOrderNumber($prefix){        return $prefix . date('YmdHis',time()) . rand(1000,9999);    }    //暂时不用--------------------------------------------------------------------------    //合同编号    public static function createSalesOrderNumber1($prefix){        $str = $prefix . date('Ymd',time());        $order_number = SalesOrder::where('order_number','Like','%'. $str . '%')            ->max('order_number');        if(empty($order_number)){            $number = str_pad(1,3,'0',STR_PAD_LEFT);            $number = $str . $number;        }else{            $tmp = substr($order_number, -3);            $tmp = $tmp + 1;            //超过999            if(strlen($tmp) > 3) return '';            $number = str_pad($tmp,3,'0',STR_PAD_LEFT);            $number = $str . $number;        }        return $number;    }    //施工单订单合同号    public static function createConstructionOrderNumber1($prefix){        $str = $prefix . date('Ymd',time());        $order_number = Construction::where('order_number','Like','%'. $str . '%')            ->max('order_number');        if(empty($order_number)){            $number = str_pad(1,3,'0',STR_PAD_LEFT);            $number = $str . $number;        }else{            $tmp = substr($order_number, -3);            $tmp = $tmp + 1;            //超过999            if(strlen($tmp) > 3) return '';            $number = str_pad($tmp,3,'0',STR_PAD_LEFT);            $number = $str . $number;        }        return $number;    }    static function generateOrderNumber() {        // 获取当前日期        $date = date('Ymd', time());        // 从数据库中获取已存在的最大单据号        $maxOrderNumber = SalesOrder::max('order_number');        // 定义单据号位数        $digitCount = 6;        // 如果数据库中没有单据号,则从000001开始        if(empty($maxOrderNumber)){            $number = $date . str_pad(1, $digitCount, '0', STR_PAD_LEFT);        }else{            // 获取数字部分            $lastNumber = substr($maxOrderNumber, -1 * $digitCount);            $lastNumber = (int)$lastNumber;            // 数字自增            $number = $lastNumber + 1;            $number = str_pad($number, $digitCount, '0', STR_PAD_LEFT);            // 拼接单据号            $number = $date . $number;        }        return $number;    }}
 |