|
@@ -5,6 +5,8 @@ namespace App\Service;
|
|
|
use App\Exports\ExportOrder;
|
|
|
use App\Model\Freight;
|
|
|
use App\Model\Product;
|
|
|
+use App\Model\RevenueCost;
|
|
|
+use App\Model\RevenueCostTotal;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
|
@@ -43,10 +45,10 @@ class ExportFileService extends Service
|
|
|
protected static $fuc_name = [
|
|
|
self::type_one => '存货',
|
|
|
self::type_two => '运费设置',
|
|
|
- self::type_three => '收付款单',
|
|
|
- self::type_four => '施工单',
|
|
|
- self::type_five => '采购单',
|
|
|
- self::type_six => '退换货单',
|
|
|
+ self::type_three => '收入成本统计表',
|
|
|
+ self::type_four => '销货单统计表',
|
|
|
+ self::type_five => '销售发票统计表',
|
|
|
+ self::type_six => '回款单统计表',
|
|
|
self::type_seven => '发货单',
|
|
|
self::type_eight => '进销存报表',
|
|
|
self::type_nine => '虚拟采购单',
|
|
@@ -77,7 +79,8 @@ class ExportFileService extends Service
|
|
|
if(empty($search['page_index'])) return [false,'请选择导出数据的开始页码'];
|
|
|
if(empty($search['page_size'])) return [false,'请选择导出数据的条数'];
|
|
|
if($search['page_size'] > 5000) return [false,'请选择导出数据的条数每次最多5000条'];
|
|
|
- $id = $this->getListForSearch($data, $user);
|
|
|
+ list($status,$id) = $this->getListForSearch($data, $user);
|
|
|
+ if(! $status) return [false, $id];
|
|
|
$data['id'] = $id;
|
|
|
}
|
|
|
|
|
@@ -87,41 +90,38 @@ class ExportFileService extends Service
|
|
|
return [true, $return];
|
|
|
}
|
|
|
|
|
|
+ private function fillData($data, $column, &$return){
|
|
|
+ foreach ($data as $value) {
|
|
|
+ $tmp = [];
|
|
|
+ foreach ($column as $c_v){
|
|
|
+ $tmp[$c_v] = $value[$c_v] ?? "";
|
|
|
+ }
|
|
|
+ $return[] = $tmp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function one($ergs,$user){
|
|
|
$id = $ergs['id'];
|
|
|
|
|
|
// 导出数据
|
|
|
$return = [];
|
|
|
|
|
|
+ $header_default = config("header.62") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
DB::table('product')
|
|
|
+ ->where('del_time',0)
|
|
|
->whereIn('id', $id)
|
|
|
->select(Product::$field)
|
|
|
->orderBy('id','desc')
|
|
|
- ->chunkById(500,function ($data) use(&$return){
|
|
|
+ ->chunkById(500,function ($data) use(&$return,$column){
|
|
|
$data = Collect($data)->map(function ($object) {
|
|
|
return (array)$object;
|
|
|
})->toArray();
|
|
|
|
|
|
- foreach ($data as $value) {
|
|
|
- $return[] = [
|
|
|
- 0 => $value['code'],
|
|
|
- 1 => $value['title'],
|
|
|
- 2 => $value['size'],
|
|
|
- 3 => $value['category'],
|
|
|
- 4 => $value['unit'],
|
|
|
- 5 => $value['cost'],
|
|
|
- 6 => $value['business_cost'],
|
|
|
- 7 => $value['major_client_settlement_price'],
|
|
|
- 8 => $value['write_off_price'],
|
|
|
- 9 => $value['return_change_price'],
|
|
|
- 10 => $value['freight_price'],
|
|
|
- 11 => $value['mark'],
|
|
|
- ];
|
|
|
- }
|
|
|
+ $this->fillData($data, $column, $return);
|
|
|
});
|
|
|
|
|
|
- $header = ['存货编码','存货名称','规格类型','所属类别','计量单位','成本单价','业务成本单价','大客户结算单价','核销单价','退换货损耗单价','运费单价','备注'];
|
|
|
-
|
|
|
return $this->saveExportData($return,$header);
|
|
|
}
|
|
|
|
|
@@ -131,29 +131,144 @@ class ExportFileService extends Service
|
|
|
// 导出数据
|
|
|
$return = [];
|
|
|
|
|
|
+ $header_default = config("header.66") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
DB::table('freight')
|
|
|
+ ->where('del_time',0)
|
|
|
->whereIn('id', $id)
|
|
|
->select(Freight::$field)
|
|
|
->orderBy('id','desc')
|
|
|
- ->chunkById(500,function ($data) use(&$return){
|
|
|
+ ->chunkById(500,function ($data) use(&$return,$column){
|
|
|
$data = Collect($data)->map(function ($object) {
|
|
|
return (array)$object;
|
|
|
})->toArray();
|
|
|
|
|
|
- foreach ($data as $value) {
|
|
|
- $return[] = [
|
|
|
- 0 => $value['area'],
|
|
|
- 1 => $value['region'],
|
|
|
- 2 => $value['kilometer'],
|
|
|
- 3 => $value['min_freight_fee'],
|
|
|
- 4 => $value['one_and_five'],
|
|
|
- 5 => $value['greater_than_five'],
|
|
|
- 6 => $value['company'],
|
|
|
- ];
|
|
|
- }
|
|
|
+ $this->fillData($data, $column, $return);
|
|
|
+ });
|
|
|
+
|
|
|
+ return $this->saveExportData($return,$header);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function three($ergs,$user){
|
|
|
+ $id = $ergs['id'];
|
|
|
+
|
|
|
+ // 导出数据
|
|
|
+ $return = [];
|
|
|
+ $header_default = config("header.68") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
+ DB::table('revenue_cost_total')
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->whereIn('id', $id)
|
|
|
+ ->select(RevenueCostTotal::$field)
|
|
|
+ ->orderBy('id','desc')
|
|
|
+ ->chunkById(500,function ($data) use(&$return,$column){
|
|
|
+ $data = Collect($data)->map(function ($object) {
|
|
|
+ return (array)$object;
|
|
|
+ })->toArray();
|
|
|
+ $list['data'] = $data;
|
|
|
+
|
|
|
+ //订单数据
|
|
|
+ $service = new StatisticsService();
|
|
|
+ $list = $service->statisticsRevenueCostFillData($list);
|
|
|
+
|
|
|
+ $this->fillData($list['data'], $column, $return);
|
|
|
+ });
|
|
|
+
|
|
|
+ return $this->saveExportData($return,$header);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function four($ergs,$user){
|
|
|
+ $id = $ergs['id'];
|
|
|
+
|
|
|
+ // 导出数据
|
|
|
+ $return = [];
|
|
|
+ $header_default = config("header.69") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
+ DB::table('revenue_cost')
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->whereIn('id', $id)
|
|
|
+ ->select(RevenueCost::$field_xhd)
|
|
|
+ ->orderBy('id','desc')
|
|
|
+ ->chunkById(500,function ($data) use(&$return, $column){
|
|
|
+ $data = Collect($data)->map(function ($object) {
|
|
|
+ return (array)$object;
|
|
|
+ })->toArray();
|
|
|
+ $list['data'] = $data;
|
|
|
+
|
|
|
+ //订单数据
|
|
|
+ $service = new StatisticsService();
|
|
|
+ $list = $service->statisticsRevenueCostOneAndTwoFillData($list);
|
|
|
+
|
|
|
+ $this->fillData($list['data'], $column, $return);
|
|
|
});
|
|
|
|
|
|
- $header = ['所属区域','地区','公里数','最低运费','1-5吨','5吨以上','物流公司'];
|
|
|
+ return $this->saveExportData($return,$header);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function five($ergs,$user){
|
|
|
+ $id = $ergs['id'];
|
|
|
+
|
|
|
+ // 导出数据
|
|
|
+ $return = [];
|
|
|
+ $header_default = config("header.70") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
+ DB::table('revenue_cost')
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->whereIn('id', $id)
|
|
|
+ ->select(RevenueCost::$field_xsfp)
|
|
|
+ ->orderBy('id','desc')
|
|
|
+ ->chunkById(500,function ($data) use(&$return, $column){
|
|
|
+ $data = Collect($data)->map(function ($object) {
|
|
|
+ return (array)$object;
|
|
|
+ })->toArray();
|
|
|
+ $list['data'] = $data;
|
|
|
+
|
|
|
+ //订单数据
|
|
|
+ $service = new StatisticsService();
|
|
|
+ $list = $service->statisticsRevenueCostOneAndTwoFillData($list);
|
|
|
+
|
|
|
+ $this->fillData($list['data'], $column, $return);
|
|
|
+ });
|
|
|
+
|
|
|
+ return $this->saveExportData($return,$header);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function six($ergs,$user){
|
|
|
+ $id = $ergs['id'];
|
|
|
+
|
|
|
+ $field = RevenueCost::$field_hkd_main;
|
|
|
+ $field[] = DB::raw('sum(payment_amount) as payment_amount');
|
|
|
+ $field[] = DB::raw('sum(price_4_total) as price_4_total');
|
|
|
+ $field[] = DB::raw('sum(profit) as profit');
|
|
|
+
|
|
|
+ // 导出数据
|
|
|
+ $return = [];
|
|
|
+ $header_default = config("header.71") ?? [];
|
|
|
+ $column = array_column($header_default,'key');
|
|
|
+ $header = array_column($header_default,'value');
|
|
|
+ DB::table('revenue_cost')
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->whereIn('order_id', $id)
|
|
|
+ ->where('order_type',RevenueCost::ORDER_THREE)
|
|
|
+ ->select($field)
|
|
|
+ ->groupby('order_id')
|
|
|
+ ->orderBy('id','desc')
|
|
|
+ ->chunkById(500,function ($data) use(&$return, $column){
|
|
|
+ $data = Collect($data)->map(function ($object) {
|
|
|
+ return (array)$object;
|
|
|
+ })->toArray();
|
|
|
+ $list['data'] = $data;
|
|
|
+
|
|
|
+ //订单数据
|
|
|
+ $service = new StatisticsService();
|
|
|
+ $list = $service->statisticsRevenueCostThreeFillData($list);
|
|
|
+
|
|
|
+ $this->fillData($list['data'], $column, $return);
|
|
|
+ },'order_id');
|
|
|
|
|
|
return $this->saveExportData($return,$header);
|
|
|
}
|
|
@@ -171,9 +286,34 @@ class ExportFileService extends Service
|
|
|
$model = $service->freightCommon($data, $user, ['id']);
|
|
|
$return = $this->limitData($model,'',$data);
|
|
|
$id = array_column($return,'id');
|
|
|
+ }elseif ($ergs['type'] == self::type_three){
|
|
|
+ $service = new StatisticsService();
|
|
|
+ list($status, $model) = $service->statisticsRevenueCostCommon($data, $user, ['id']);
|
|
|
+ if(! $status) return [false, $model];
|
|
|
+ $return = $this->limitData($model,'',$data);
|
|
|
+ $id = array_column($return,'id');
|
|
|
+ }elseif ($ergs['type'] == self::type_four || $ergs['type'] == self::type_five){
|
|
|
+ if(empty($data['order_type'])){
|
|
|
+ if($ergs['type'] == self::type_four){
|
|
|
+ $data['order_type'] = RevenueCost::ORDER_ONE;
|
|
|
+ }else{
|
|
|
+ $data['order_type'] = RevenueCost::ORDER_TWO;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $service = new StatisticsService();
|
|
|
+ list($status, $model) = $service->statisticsRevenueCostOneAndTwoCommon($data, $user, ['id']);
|
|
|
+ if(! $status) return [false, $model];
|
|
|
+ $return = $this->limitData($model,'',$data);
|
|
|
+ $id = array_column($return,'id');
|
|
|
+ }elseif ($ergs['type'] == self::type_six){
|
|
|
+ $service = new StatisticsService();
|
|
|
+ list($status, $model) = $service->statisticsRevenueCostThreeCommon($data, $user, ['order_id']);
|
|
|
+ if(! $status) return [false, $model];
|
|
|
+ $return = $this->limitData($model,'',$data);
|
|
|
+ $id = array_column($return,'order_id');
|
|
|
}
|
|
|
|
|
|
- return $id;
|
|
|
+ return [true, $id];
|
|
|
}
|
|
|
|
|
|
public function saveExportData($data, $headers, $type = 'default',$file_name = ''){
|