|
@@ -269,27 +269,65 @@ class Patrol extends Index
|
|
|
->field('a.id,a.title,patrol_addr_id')
|
|
|
->group('pr.patrol_addr_id')
|
|
|
->select();
|
|
|
+//旧代码,查询耗时过长!
|
|
|
+ // $titles = [];
|
|
|
+ // $y1 = [];
|
|
|
+ // $y2 = [];
|
|
|
+ // foreach ($lists as $k=>$v){
|
|
|
+ // $titles[] = $v['title'];
|
|
|
+ // $count1 = Db::name('patrol_record')
|
|
|
+ // ->where('org_id',$this->orgId)
|
|
|
+ // ->where('patrol_mode',1)
|
|
|
+ // ->where('patrol_addr_id',$v['patrol_addr_id'])
|
|
|
+ // ->where('create_yyyymmdd','=',$curDay)
|
|
|
+ // ->count();
|
|
|
+ // $y1[] = $count1;
|
|
|
+
|
|
|
+ // $count2 = Db::name('patrol_record')
|
|
|
+ // ->where('org_id',$this->orgId)
|
|
|
+ // ->where('patrol_mode',1)
|
|
|
+ // ->where('is_normal',1)
|
|
|
+ // ->where('patrol_addr_id',$v['patrol_addr_id'])
|
|
|
+ // ->where('create_yyyymmdd','<=',$curDay)
|
|
|
+ // ->where('create_yyyymmdd','>=',$start)
|
|
|
+ // ->count();
|
|
|
+ // $y2[] = $count2;
|
|
|
+ // }
|
|
|
+ // 获取所有需要的记录,一次性查询
|
|
|
+ $records = Db::name('patrol_record')
|
|
|
+ ->where('org_id', $this->orgId)
|
|
|
+ ->where('patrol_mode', 1)
|
|
|
+ ->where(function ($query) use ($curDay, $start) {
|
|
|
+ $query->where('create_yyyymmdd', $curDay)
|
|
|
+ ->WhereOr(function ($subQuery) use ($start, $curDay) {
|
|
|
+ $subQuery->where('is_normal', 1)
|
|
|
+ ->where('create_yyyymmdd', '>=', $start)
|
|
|
+ ->where('create_yyyymmdd', '<=', $curDay);
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->select();
|
|
|
+
|
|
|
$titles = [];
|
|
|
$y1 = [];
|
|
|
$y2 = [];
|
|
|
- foreach ($lists as $k=>$v){
|
|
|
+
|
|
|
+ foreach ($lists as $k => $v) {
|
|
|
$titles[] = $v['title'];
|
|
|
- $count1 = Db::name('patrol_record')
|
|
|
- ->where('org_id',$this->orgId)
|
|
|
- ->where('patrol_mode',1)
|
|
|
- ->where('patrol_addr_id',$v['patrol_addr_id'])
|
|
|
- ->where('create_yyyymmdd','=',$curDay)
|
|
|
- ->count();
|
|
|
+ $count1 = 0;
|
|
|
+ $count2 = 0;
|
|
|
+
|
|
|
+ foreach ($records as $record) {
|
|
|
+ if ($record['patrol_addr_id'] == $v['patrol_addr_id']) {
|
|
|
+ if ($record['create_yyyymmdd'] == $curDay) {
|
|
|
+ $count1++;
|
|
|
+ }
|
|
|
+ if ($record['is_normal'] == 1 && $record['create_yyyymmdd'] >= $start && $record['create_yyyymmdd'] <= $curDay) {
|
|
|
+ $count2++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$y1[] = $count1;
|
|
|
-
|
|
|
- $count2 = Db::name('patrol_record')
|
|
|
- ->where('org_id',$this->orgId)
|
|
|
- ->where('patrol_mode',1)
|
|
|
- ->where('is_normal',1)
|
|
|
- ->where('patrol_addr_id',$v['patrol_addr_id'])
|
|
|
- ->where('create_yyyymmdd','<=',$curDay)
|
|
|
- ->where('create_yyyymmdd','>=',$start)
|
|
|
- ->count();
|
|
|
$y2[] = $count2;
|
|
|
}
|
|
|
HelpHander::success(['titles' => $titles,'y1' => $y1,'y2' => $y2]);
|