| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- <?php
 
- namespace 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 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;
 
-     }
 
- }
 
 
  |