1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
namespace app\em\model;
class Em extends Base
{
protected $table = 'em';
public function getInitDateAttr($val){
return date('Y-m-d H:i:s',$val);
}
public function setInitDateAttr($val){
return strtotime($val);
}
//获取电表列表与基站相关信息
public function getAll($pageConf=['list_rows'=>30]){
$data = $this
->field('em.id,em.em_numb,em.em_type_id,em.create_time,s.station_name,s.original_sp_id,
s.station_sp_code,s.proj_number,s.area_id,r.region_name,o.operator_name,er.pricing_type')
->leftJoin(['station_info'=>'s'],'em.station_id = s.station_id')
->leftJoin(['region'=>'r'],'s.area_id = r.id')
->leftJoin(['operator'=>'o'],'o.operator_id = s.original_sp_id')
->leftJoin(['em_rule'=>'er'],'er.em_id=em.id')
->with('account')
->order('id desc')
->paginate($pageConf);
return $data;
}
public function account(){
return $this->hasOne('em_account','em_id');
}
//通过id获取单个电表信息
public function getEmInfoById($id,$mode=false){
if($mode === false)
$em = self::with('rule,dc,photo')->find($id);
else
$em = self::with($mode)->find($id);
return $em;
}
/**
* @param $id
* @param bool $curr 获取本次抄表记录还是上次抄表记录
* @return array|mixed|\PDOStatement|string|\think\Model|null
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getEmUseageInfoById($id,$curr=false){
$em = $this->getEmInfoById($id,'type,rule');
//最后一次抄表记录
if($curr == false){
$ue = Useage::order('create_time desc,id desc')->get(['em_id'=>$id]);
} else {
$ue = Useage::with('photo')->order('create_time desc,id desc')->get(['em_id'=>$id]);
}
//如果没有超过表 不论是峰谷表还是普通表 都是空的
if(!$ue) {
$ue = new Useage();
$ue->last_date = $em->init_date;
$ue->last_sum_numb = $em->init_numb ?: 0;
} else {
if($curr == false){
$ue->last_sum_numb = $ue->current_sum_numb;
$ue->last_date = $ue->current_date;
}
}
$ue->price = $em->rule->pricing_type==1 ? $em->rule->pay_price : '';
$em->useage = $ue;
return $em;
}
//获取电表信息与station信息
public function getBaseInfo($em_id){
$data = self::field('em.id,em.em_numb,em.em_type_id,em.rate')
->field('s.station_sp_code,s.station_name')
->field('et.name as typeName')
->leftJoin(['station_info'=>'s'],'s.station_id=em.station_id')
->leftJoin(['em_type'=>'et'],'et.id=em.em_type_id')
->where('em.id','=',$em_id)
->find();
return $data;
}
//关联模型
public function rule(){
return $this->hasOne('EmRule','em_id','id');
}
public function dc(){
return $this->belongsTo('Dc','dc_id');
}
public function photo(){
return $this->belongsTo('Receipt','photo_id','id');
}
public function type(){
return $this->belongsTo('EmType','em_type_id','id');
}
}