| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace App\Exports;
- use App\RejectedBill;
- use App\RejectedBillItem;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Database\Eloquent\Collection;
- use Maatwebsite\Excel\Concerns\FromCollection;
- use Maatwebsite\Excel\Concerns\ShouldAutoSize;
- use Maatwebsite\Excel\Concerns\WithColumnFormatting;
- use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
- use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
- class RejectedExport extends \PhpOffice\PhpSpreadsheet\Cell\StringValueBinder implements FromCollection,ShouldAutoSize,WithColumnFormatting
- ,WithCustomValueBinder
- {
- protected $ids;
- static public $max=100000;
- protected $rejectedBills;
- public function setIds(Array $ids)
- {
- $this->ids=$ids;
- }
- public function setRejectedBills($rejectedBills)
- {
- $this->rejectedBills=$rejectedBills;
- }
- public function collection()
- {
- if($this->ids){
- return $this->getByIds();
- }
- if($this->rejectedBills){
- return $this->getByRejectedBills();
- }
- return null;
- }
- private function getByIds(){
- $rejectedItems=RejectedBillItem::whereHas('rejectedBill',function(Builder $query){
- $query->whereIn('id',$this->ids);
- if(count($this->ids)>self::$max){
- $query->where('is_finished',false);
- }
- });
- $rejectedItems->get();
- $rejecteds = new Collection();
- $this->prependFields($rejecteds);
- $rejectedItems->each(function(RejectedBillItem $item)use($rejecteds){
- $this->injectRecord($rejecteds,$item->rejectedBill,$item);
- });
- return $rejecteds;
- }
- private function getByRejectedBills(){
- $rejecteds = new Collection();
- $this->prependFields($rejecteds);
- $this->rejectedBills->each(function(RejectedBill $rejectedBill)use($rejecteds){
- $rejectedBill->items()->each(function (RejectedBillItem $item)use($rejecteds,$rejectedBill){
- $this->injectRecord($rejecteds,$rejectedBill,$item);
- });
- });
- return $rejecteds;
- }
- private function prependFields($collection){
- $collection->prepend(['日期','审核号','客户名称','订单号','姓名',
- '手机','原单单号','退回单号','退回公司','到付费用',
- '是否入库','商品条码','商品名称','数量','是否正品',
- '批次号','生产日期','效期','备注','退单备注','录入人']);
- return $collection;
- }
- private function injectRecord($collection,$bill,$item){
- $collection->push([
- $item['created_at'],
- $bill['checked_numbers'],$bill['owner_name'],
- $bill['order_number'],$bill['sender'],
- $bill['mobile_sender'],$bill['logistic_number'],
- $bill['logistic_number_return'],$bill['logistic_name'],
- $bill['fee_collected'],$bill['is_loaded_str'],
- $item['barcode_goods'],$item['name_goods'],$item['amount'],$item['quality_label'],
- $item['batch_number'],$item['made_at'],$item['validity_at'],$item['remark'],$bill['remark'],$bill['operator_name']]);
- return $collection;
- }
- /**
- * @return array
- */
- public function columnFormats(): array
- {
- return [
- 'B' => NumberFormat::FORMAT_TEXT,
- 'C' => NumberFormat::FORMAT_TEXT,
- 'D' => NumberFormat::FORMAT_TEXT,
- 'E' => NumberFormat::FORMAT_TEXT,
- 'F' => NumberFormat::FORMAT_TEXT,
- 'G' => NumberFormat::FORMAT_TEXT,
- 'H' => NumberFormat::FORMAT_TEXT,
- 'L' => NumberFormat::FORMAT_TEXT,
- 'N' => NumberFormat::FORMAT_TEXT,
- ];
- }
- }
|