OrderNoService.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Service;
  3. use App\Model\Construction;
  4. use App\Model\SalesOrder;
  5. class OrderNoService extends Service
  6. {
  7. //采购 收货 发货 单号生成
  8. public function createOrderNumber($prefix){
  9. return $prefix . date('YmdHis') . time() . rand(1000,9999);
  10. }
  11. //合同编号
  12. public static function createSalesOrderNumber($prefix){
  13. return $prefix . date('YmdHis',time()). rand(1000,9999);
  14. }
  15. //施工单订单合同号
  16. public static function createConstructionOrderNumber($prefix){
  17. return $prefix . date('YmdHis',time()). rand(1000,9999);
  18. }
  19. //采购 收货 发货 单号生成
  20. public function createReturnExchangeOrderNumber($prefix){
  21. return $prefix . date('YmdHis') . time() . rand(1000,9999);
  22. }
  23. //暂时不用--------------------------------------------------------------------------
  24. //合同编号
  25. public static function createSalesOrderNumber1($prefix){
  26. $str = $prefix . date('Ymd',time());
  27. $order_number = SalesOrder::where('order_number','Like','%'. $str . '%')
  28. ->max('order_number');
  29. if(empty($order_number)){
  30. $number = str_pad(1,3,'0',STR_PAD_LEFT);
  31. $number = $str . $number;
  32. }else{
  33. $tmp = substr($order_number, -3);
  34. $tmp = $tmp + 1;
  35. //超过999
  36. if(strlen($tmp) > 3) return '';
  37. $number = str_pad($tmp,3,'0',STR_PAD_LEFT);
  38. $number = $str . $number;
  39. }
  40. return $number;
  41. }
  42. //施工单订单合同号
  43. public static function createConstructionOrderNumber1($prefix){
  44. $str = $prefix . date('Ymd',time());
  45. $order_number = Construction::where('order_number','Like','%'. $str . '%')
  46. ->max('order_number');
  47. if(empty($order_number)){
  48. $number = str_pad(1,3,'0',STR_PAD_LEFT);
  49. $number = $str . $number;
  50. }else{
  51. $tmp = substr($order_number, -3);
  52. $tmp = $tmp + 1;
  53. //超过999
  54. if(strlen($tmp) > 3) return '';
  55. $number = str_pad($tmp,3,'0',STR_PAD_LEFT);
  56. $number = $str . $number;
  57. }
  58. return $number;
  59. }
  60. static function generateOrderNumber() {
  61. // 获取当前日期
  62. $date = date('Ymd', time());
  63. // 从数据库中获取已存在的最大单据号
  64. $maxOrderNumber = SalesOrder::max('order_number');
  65. // 定义单据号位数
  66. $digitCount = 6;
  67. // 如果数据库中没有单据号,则从000001开始
  68. if(empty($maxOrderNumber)){
  69. $number = $date . str_pad(1, $digitCount, '0', STR_PAD_LEFT);
  70. }else{
  71. // 获取数字部分
  72. $lastNumber = substr($maxOrderNumber, -1 * $digitCount);
  73. $lastNumber = (int)$lastNumber;
  74. // 数字自增
  75. $number = $lastNumber + 1;
  76. $number = str_pad($number, $digitCount, '0', STR_PAD_LEFT);
  77. // 拼接单据号
  78. $number = $date . $number;
  79. }
  80. return $number;
  81. }
  82. }