|
@@ -20,10 +20,12 @@ use App\Model\ConstructionOrderImg;
|
|
|
use App\Model\ConstructionOrderSub;
|
|
|
use App\Model\ConstructionProductInfo;
|
|
|
use App\Model\Employee;
|
|
|
+use App\Model\EmployeeDepartPermission;
|
|
|
use App\Model\FoursShop;
|
|
|
use App\Model\InOutRecord;
|
|
|
use App\Model\Inventory;
|
|
|
use App\Model\InventorySub;
|
|
|
+use App\Model\KqList;
|
|
|
use App\Model\Material;
|
|
|
use App\Model\MaterialCharge;
|
|
|
use App\Model\MaterialChargeSub;
|
|
@@ -66,15 +68,19 @@ class ExportFileService extends Service
|
|
|
//导出文件方法
|
|
|
protected static $fuc = [
|
|
|
self::type_one => 'kqList',
|
|
|
- self::type_two => '',
|
|
|
+ self::type_two => 'kqSummary',
|
|
|
self::type_three => '',
|
|
|
self::type_four => '',
|
|
|
self::type_five => '',
|
|
|
];
|
|
|
|
|
|
+ protected static $special = [
|
|
|
+ self::type_two,
|
|
|
+ ];
|
|
|
+
|
|
|
protected static $fuc_name = [
|
|
|
self::type_one => '考勤',
|
|
|
- self::type_two => '',
|
|
|
+ self::type_two => '每日考勤数据汇总',
|
|
|
self::type_three => '',
|
|
|
self::type_four => '',
|
|
|
self::type_five => '',
|
|
@@ -83,9 +89,10 @@ class ExportFileService extends Service
|
|
|
public static $filename = "";
|
|
|
|
|
|
public function exportAll($data,$user){
|
|
|
- if(empty($data['id'])) return [false,'请选择导出数据'];
|
|
|
if(empty($data['type']) || ! isset(self::$fuc[$data['type']])) return [false,'导出文件类型错误或者不存在'];
|
|
|
self::$filename = self::$fuc_name[$data['type']] ?? "";
|
|
|
+ if(! in_array($data['type'], self::$special)) if(empty($data['id'])) return [false,'请选择导出数据'];
|
|
|
+
|
|
|
|
|
|
//不超时
|
|
|
ini_set('max_execution_time', 0);
|
|
@@ -93,7 +100,8 @@ class ExportFileService extends Service
|
|
|
ini_set('memory_limit', -1);
|
|
|
|
|
|
$function = self::$fuc[$data['type']];
|
|
|
- $return = $this->$function($data);
|
|
|
+ list($status, $return) = $this->$function($data);
|
|
|
+ if(! $status) return [false, $return];
|
|
|
|
|
|
return [true, $return];
|
|
|
}
|
|
@@ -121,10 +129,67 @@ class ExportFileService extends Service
|
|
|
return $this->saveExportData($return,$header);
|
|
|
}
|
|
|
|
|
|
+ public function kqSummary($ergs){
|
|
|
+ // 导出数据
|
|
|
+ $return = [];
|
|
|
+
|
|
|
+ $employee_number = [];
|
|
|
+ if(empty($ergs['export_type'])){
|
|
|
+ //全部
|
|
|
+ }elseif($ergs['export_type'] == 1){
|
|
|
+ //部门
|
|
|
+ $employee_id = EmployeeDepartPermission::whereIn('depart_id',$ergs['depart_id'])
|
|
|
+ ->select('employee_id')
|
|
|
+ ->get()->toArray();
|
|
|
+ $employee_id = array_column($employee_id,'employee_id');
|
|
|
+ $employee_number = Employee::where('del_time',0)
|
|
|
+ ->whereIn('id',$employee_id)
|
|
|
+ ->select('number')
|
|
|
+ ->get()->toArray();
|
|
|
+ $employee_number = array_column($employee_number,'number');
|
|
|
+ }elseif($ergs['export_type'] == 2){
|
|
|
+ //个人
|
|
|
+ $employee_number = Employee::where('del_time',0)
|
|
|
+ ->whereIn('id',$ergs['employee_id'])
|
|
|
+ ->select('number')
|
|
|
+ ->get()->toArray();
|
|
|
+ $employee_number = array_column($employee_number,'number');
|
|
|
+ }else{
|
|
|
+ return [false, '导出类型不合法'];
|
|
|
+ }
|
|
|
+ if(empty($ergs['crt_time'][0]) || empty($ergs['crt_time'][1])) return [false, '请选择导出数据的日期'];
|
|
|
+ list($start_time, $end_time) = $this->changeDateToTimeStampAboutRange($ergs['crt_time']);
|
|
|
+
|
|
|
+ //数据
|
|
|
+ $list = KqList::where('crt_time', '>=', $start_time)
|
|
|
+ ->where('crt_time', '<=', $end_time)
|
|
|
+ ->when(! empty($employee_number), function ($query) use ($employee_number) {
|
|
|
+ return $query->where('number', $employee_number);
|
|
|
+ })
|
|
|
+ ->select('number',"emp_fname as name", DB::raw('FROM_UNIXTIME(crt_time, "%Y-%m-%d") as date'), DB::raw('MAX(crt_time) as max_crt_time'), DB::raw('MIN(crt_time) as min_crt_time'))
|
|
|
+ ->groupBy('number', DB::raw('FROM_UNIXTIME(crt_time, "%Y-%m-%d")'))
|
|
|
+ ->orderBy('number','asc')
|
|
|
+ ->get()->toArray();
|
|
|
+
|
|
|
+ foreach ($list as $value){
|
|
|
+ $return[] = [
|
|
|
+ 0 => $value['number'],
|
|
|
+ 1 => $value['name'],
|
|
|
+ 2 => $value['date'],
|
|
|
+ 3 => date("Y-m-d H:i:s",$value['min_crt_time']),
|
|
|
+ 4 => date("Y-m-d H:i:s",$value['max_crt_time']),
|
|
|
+ ];
|
|
|
+ }unset($list);
|
|
|
+
|
|
|
+ $header = ["工号", "姓名", "日期", "最早打卡时间", "最晚打卡时间"];
|
|
|
+
|
|
|
+ return $this->saveExportData($return,$header,'kq');
|
|
|
+ }
|
|
|
+
|
|
|
public function saveExportData($data, $headers, $type = 'default',$file_name = ''){
|
|
|
if(empty($file_name)) $file_name = self::$filename . "_". date("Y-m-d") . "_". rand(1000,9999);
|
|
|
$filename = $file_name . '.' . 'xlsx';
|
|
|
$bool = Excel::store(new ExportOrder($data,$type,$headers),"/public/export/{$filename}", null, 'Xlsx', []);
|
|
|
- return $filename;
|
|
|
+ return [true, $filename];
|
|
|
}
|
|
|
}
|