调整了排期导出,只是更换了连接入口,原有的还存在

This commit is contained in:
cloud 2024-12-23 04:04:45 +08:00
parent 7684ad74f5
commit dc0442f840
3 changed files with 1127 additions and 736 deletions

View File

@ -9,102 +9,48 @@ trait tdata
//sql语句采用分组查询后调整为true 使用子查询计算总条数 //sql语句采用分组查询后调整为true 使用子查询计算总条数
public $multi_table = false; public $multi_table = false;
//搜索的input字段用来处理表数据显示时的颜色加重问题 //搜索的input字段用来处理表数据显示时的颜色加重问题
private $search_input = []; private $search_input = [];
//搜索的select字段不用考虑搜索结果 //搜索的select字段不用考虑搜索结果
private $search_other = []; private $search_other = [];
//带有表前缀的搜索字段,主要用于跨表联合查询,要对照上面数组合并后的顺序 //带有表前缀的搜索字段,主要用于跨表联合查询,要对照上面数组合并后的顺序
private $search_field = []; private $search_field = [];
//搜索的LIKE字段 //搜索的LIKE字段
private $search_link = []; private $search_link = [];
//跳过替换为突出显示的字段 //跳过替换为突出显示的字段
private $skip_field = []; private $skip_field = [];
// 场所统计查询内的公用where // 场所统计查询内的公用where
private $villages_where = ''; private $villages_where = '';
// 根据社区类型和地图选择判断小区的ID // 根据社区类型和地图选择判断小区的ID
private $village_whereid = ''; private $village_whereid = '';
// 计算社区类型地图选择返回被选中的小区ID // 计算社区类型地图选择返回被选中的小区ID
private function fun_sqlk_vid()
{
global $_M, $_YW;
$idArr = $vidArr = [];
$countvid = function ($idArr = [], $newvid = []) {
// if (count($newvid) == 0) $newvid = [-1];
if (count($idArr) > 0) {
$idArr = array_intersect($newvid, $idArr);
// 如果交集为空则确实通过此条件进行了筛选就要通知SQL没有任何值满足当前条件将ID设置为0肯定查找不到
// if (count($idArr) == 0) $idArr = [-1];
} else {
$idArr = $newvid;
}
if (count($idArr) == 0) $idArr = [-1];
return $idArr;
};
// 所属商圈
if (array_key_exists('vhcname', $this->form) && is_array($this->form['vhcname'])) {
$arrvhcname = array_map(function ($para) { return "'{$para}'"; }, $this->form['vhcname']);
$vhcname = arrayto_string($arrvhcname, ',');
$vid = $this->tsql->table('village')->qfield('id')->where("v_hcname IN({$vhcname}) ")->all();
$idArr = $countvid($idArr, array_column($vid, 'id'));
}
// 场所类型
if (is_array($this->form['vtype'])) {
$vtype = arrayto_string($this->form['vtype'], ',');
$vid = $this->tsql->table('village')->qfield('id')->where("v_type IN({$vtype})")->all();
$idArr = $countvid($idArr, array_column($vid, 'id'));
}
// 地图选择
if ($this->form['v_id']) {
$vidArr = stringto_array($this->form['v_id'], ',');
// 取社区类型和地图筛选的交集重叠ID社区类型没有操作则直接按照地图筛选结果
// $idArr = count($idArr) > 0?array_intersect($vidArr,$idArr):$vidArr;
$idArr = $countvid($idArr, $vidArr);
}
$funWhere = function ($idArr, &$where) {
if (count($idArr) > 0) {
$strId = arrayto_string($idArr, ',');
$where .= " AND id IN({$strId}) ";
}
};
//区域
$v_province = $this->form['v_province'] && $this->form['v_province'] != '请选择' ? $this->form['v_province'] : '';
$v_city = $this->form['v_city'] && $this->form['v_city'] != '请选择' ? $this->form['v_city'] : '';
$v_district = $this->form['v_district'] && $this->form['v_district'] != '请选择' ? $this->form['v_district'] : '';
if ($v_district && $v_province && $v_city) {
$where = " v_province = '{$this->form['v_province']}' AND v_city = '{$this->form['v_city']}' AND v_district = '{$v_district}' ";
$funWhere($idArr, $where);
$vid = $this->tsql->table('village')->qfield('id')->where($where)->all();
$idArr = array_column($vid, 'id');
if (count($idArr) == 0) $idArr = [-1];
}
return $idArr;
}
//表名
public function td_sqlk() public function td_sqlk()
{ {
global $_M, $_YW; global $_YW;
//当天日期时间 //当天日期时间
$curdate = date('Y-m-d', time()); $curdate = date('Y-m-d', time());
switch ($this->tname) { switch ($this->tname) {
case 'applan': case 'applan':
//判断是否可选的依据 //判断是否可选的依据
if (!empty($this->form['slid'])) $where = " AND nla.id != '{$this->form['slid']}' "; if ( ! empty($this->form['slid'])) {
$where = " AND nla.id != '{$this->form['slid']}' ";
}
$ason = ''; $ason = '';
// 计算是否区分广告位,不考虑导出 // 计算是否区分广告位,不考虑导出
if (is_array($this->form['e_aps'])) { if (is_array($this->form['e_aps'])) {
$veaps = parent::strchange(array_filter($this->form['e_aps'])); $veaps = parent::strchange(array_filter($this->form['e_aps']));
$this->villages_where = " nel.e_aps IN({$veaps}) "; $this->villages_where = " nel.e_aps IN($veaps) ";
$ason .= " {$this->villages_where} AND "; $ason .= " $this->villages_where AND ";
} }
// 根据小区单个ID // 根据小区单个ID
@ -117,26 +63,28 @@ trait tdata
// 通过ID筛选掉不需要的 // 通过ID筛选掉不需要的
if (count($idArr) > 0) { if (count($idArr) > 0) {
$this->village_whereid = arrayto_string(array_unique($idArr), ','); $this->village_whereid = arrayto_string(array_unique($idArr), ',');
$ason .= " nel.e_vid IN({$this->village_whereid}) AND "; $ason .= " nel.e_vid IN($this->village_whereid) AND ";
} }
//表 //表
$sqlk = " {$_YW['k']['elevator']} AS el " $sqlk = " {$_YW['k']['elevator']} AS el "
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) OR nla.l_starttime > '{$curdate}',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number " ."LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '$curdate' OR nla.l_starttime > '$curdate' ) OR nla.l_starttime > '$curdate',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE $ason NOT ( nla.l_endtime < '$curdate' OR nla.l_starttime > '$curdate' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number "
. "LEFT JOIN (SELECT nel.e_number AS ende_number, max( nla.l_endtime ) AS endtime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.id IS NOT NULL GROUP BY ende_number) cla ON cla.ende_number = el.e_number " ."LEFT JOIN (SELECT nel.e_number AS ende_number, max( nla.l_endtime ) AS endtime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE $ason nla.id IS NOT NULL GROUP BY ende_number) cla ON cla.ende_number = el.e_number "
. "LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.l_starttime > '{$curdate}' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number " ."LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE $ason nla.l_starttime > '$curdate' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number "
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.l_endtime < '{$curdate}' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) dla ON dla.nend_number = el.e_number " ."LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE $ason nla.l_endtime < '$curdate' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) dla ON dla.nend_number = el.e_number "
. "LEFT JOIN (SELECT nel.e_number AS lde_number,count(nel.e_number) AS lanum FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} NOT ( nla.l_endtime < '{$this->form['l_starttime']}' OR nla.l_starttime > '{$this->form['l_endtime']}' ) {$where} GROUP BY lde_number) AS ela ON ela.lde_number = el.e_number "; ."LEFT JOIN (SELECT nel.e_number AS lde_number,count(nel.e_number) AS lanum FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE $ason NOT ( nla.l_endtime < '{$this->form['l_starttime']}' OR nla.l_starttime > '{$this->form['l_endtime']}' ) $where GROUP BY lde_number) AS ela ON ela.lde_number = el.e_number ";
break; break;
case 'elevators': case 'elevators':
$sqlk = " {$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) " $sqlk
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) OR nla.l_starttime > '{$curdate}',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number " = " {$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) "
. "LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_starttime > '{$curdate}' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number " ."LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '$curdate' OR nla.l_starttime > '$curdate' ) OR nla.l_starttime > '$curdate',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE NOT ( nla.l_endtime < '$curdate' OR nla.l_starttime > '$curdate' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number "
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_endtime < '{$curdate}' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) cla ON cla.nend_number = el.e_number "; ."LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_starttime > '$curdate' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number "
."LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_endtime < '$curdate' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) cla ON cla.nend_number = el.e_number ";
break; break;
case 'patrol': case 'patrol':
$sqlk = " {$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) " $sqlk
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) OR nla.l_starttime > '{$curdate}',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_starttime <= '{$curdate}' AND nla.id IS NOT NULL ORDER BY nowstime DESC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number "; = " {$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) "
."LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '$curdate' OR nla.l_starttime > '$curdate' ) OR nla.l_starttime > '$curdate',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_starttime <= '$curdate' AND nla.id IS NOT NULL ORDER BY nowstime DESC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number ";
break; break;
case 'villages': case 'villages':
$son = " FROM {$_YW['k']['countela']} AS el WHERE "; $son = " FROM {$_YW['k']['countela']} AS el WHERE ";
@ -158,22 +106,28 @@ trait tdata
// 计算是否区分广告位 // 计算是否区分广告位
// 检测是否通过JS传递的广告位参数也就是导出 // 检测是否通过JS传递的广告位参数也就是导出
if (isset($this->form['jsadd_veaps'])) $this->form['veaps'] = stringto_array($this->form['jsadd_veaps'], ','); if (isset($this->form['jsadd_veaps'])) {
$this->form['veaps'] = stringto_array($this->form['jsadd_veaps'], ',');
}
if (is_array($this->form['veaps'])) { if (is_array($this->form['veaps'])) {
$veaps = parent::strchange(array_filter($this->form['veaps'])); $veaps = parent::strchange(array_filter($this->form['veaps']));
$this->villages_where = " el.e_aps IN({$veaps}) "; $this->villages_where = " el.e_aps IN($veaps) ";
$son .= " {$this->villages_where} AND "; $son .= " $this->villages_where AND ";
} }
// 社区类型 // 社区类型
// 先查询出需要的ID // 先查询出需要的ID
if (isset($this->form['jsadd_vhcname'])) $this->form['vhcname'] = stringto_array($this->form['jsadd_vhcname'], ','); if (isset($this->form['jsadd_vhcname'])) {
if (isset($this->form['jsadd_vtype'])) $this->form['vtype'] = stringto_array($this->form['jsadd_vtype'], ','); $this->form['vhcname'] = stringto_array($this->form['jsadd_vhcname'], ',');
}
if (isset($this->form['jsadd_vtype'])) {
$this->form['vtype'] = stringto_array($this->form['jsadd_vtype'], ',');
}
$idArr = self::fun_sqlk_vid(); $idArr = self::fun_sqlk_vid();
// 通过ID筛选掉不需要的 // 通过ID筛选掉不需要的
if (count($idArr) > 0) { if (count($idArr) > 0) {
$this->village_whereid = arrayto_string(array_unique($idArr), ','); $this->village_whereid = arrayto_string(array_unique($idArr), ',');
$son .= " el.e_vid IN({$this->village_whereid}) AND "; $son .= " el.e_vid IN($this->village_whereid) AND ";
} }
// 空置计算要排除当前排期中的广告位 // 空置计算要排除当前排期中的广告位
@ -181,60 +135,141 @@ trait tdata
//加上时间区块 那就是查看在区段内的情况 //加上时间区块 那就是查看在区段内的情况
//增加 s_enable 判断是为了防止过去时间 //增加 s_enable 判断是为了防止过去时间
//空置 //空置
$fwhere = " {$son} NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '{$vs_starttime}' OR ela.l_starttime > '{$vs_endtime}' ) AND ela.e_number = el.e_number) AND ( (el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}' ) OR el.l_id IS NULL ) AND el.e_enable = 1 "; $fwhere
= " $son NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '$vs_starttime' OR ela.l_starttime > '$vs_endtime' ) AND ela.e_number = el.e_number) AND ( (el.l_endtime < '$vs_starttime' OR el.l_starttime > '$vs_endtime' ) OR el.l_id IS NULL ) AND el.e_enable = 1 ";
// 之前的旧代码 // 之前的旧代码
// $fwhere = " {$son} NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '{$vs_starttime}' OR ela.l_starttime > '{$vs_endtime}' ) AND NOT(ela.l_endtime < '{$curdate}' OR ela.l_starttime > '{$curdate}' ) AND ela.e_number = el.e_number) AND ( ((el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') AND el.l_endtime < '{$curdate}' ) OR el.l_id IS NULL ) AND el.e_enable = 1 "; // $fwhere = " {$son} NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '{$vs_starttime}' OR ela.l_starttime > '{$vs_endtime}' ) AND NOT(ela.l_endtime < '{$curdate}' OR ela.l_starttime > '{$curdate}' ) AND ela.e_number = el.e_number) AND ( ((el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') AND el.l_endtime < '{$curdate}' ) OR el.l_id IS NULL ) AND el.e_enable = 1 ";
//排期中的 //排期中的
$lwhere = " {$son} NOT(el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') "; $lwhere = " $son NOT(el.l_endtime < '$vs_starttime' OR el.l_starttime > '$vs_endtime') ";
// 之前的旧代码 // 之前的旧代码
// $lwhere = " {$son} NOT(el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') AND NOT(el.l_endtime < '{$curdate}' OR el.l_starttime > '{$curdate}' ) "; // $lwhere = " {$son} NOT(el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') AND NOT(el.l_endtime < '{$curdate}' OR el.l_starttime > '{$curdate}' ) ";
//多少天到期的 //多少天到期的
$dwhere = " {$son} el.l_endtime BETWEEN '{$vs_starttime}' AND '{$vs_endtime}' "; $dwhere = " $son el.l_endtime BETWEEN '$vs_starttime' AND '$vs_endtime' ";
//预排 //预排
$pwhere = " {$son} NOT(el.l_endtime < '{$vs_starttime}' OR el.l_starttime > '{$vs_endtime}') AND el.l_starttime > '{$curdate}' "; $pwhere
= " $son NOT(el.l_endtime < '$vs_starttime' OR el.l_starttime > '$vs_endtime') AND el.l_starttime > '$curdate' ";
} else { } else {
//没有时间区段,则按照当天为准则,默认值 //没有时间区段,则按照当天为准则,默认值
//空置,其他不包含当天的 //空置,其他不包含当天的
$fwhere = " {$son} NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '{$curdate}' OR ela.l_starttime > '{$curdate}' ) AND ela.e_number = el.e_number) AND (el.l_endtime < '{$curdate}' OR el.l_starttime > '{$curdate}' OR el.l_id IS NULL) AND el.e_enable = 1 "; $fwhere
= " $son NOT EXISTS (SELECT ela.e_number FROM {$_YW['k']['countela']} AS ela WHERE NOT ( ela.l_endtime < '$curdate' OR ela.l_starttime > '$curdate' ) AND ela.e_number = el.e_number) AND (el.l_endtime < '$curdate' OR el.l_starttime > '$curdate' OR el.l_id IS NULL) AND el.e_enable = 1 ";
//排期中的,日期包含当天的 //排期中的,日期包含当天的
$lwhere = " {$son} NOT(el.l_endtime < '{$curdate}' OR el.l_starttime > '{$curdate}' ) "; $lwhere = " $son NOT(el.l_endtime < '$curdate' OR el.l_starttime > '$curdate' ) ";
//多少天到期的 //多少天到期的
$dwhere = " {$son} el.l_endtime BETWEEN '{$curdate}' AND date_add( '{$curdate}', INTERVAL 7 DAY ) "; $dwhere = " $son el.l_endtime BETWEEN '$curdate' AND date_add( '$curdate', INTERVAL 7 DAY ) ";
//预排,开始时间大于当天的 //预排,开始时间大于当天的
$pwhere = " {$son} el.l_starttime > '{$curdate}' "; $pwhere = " $son el.l_starttime > '$curdate' ";
} }
$sqlk = "{$_YW['k']['village']} AS vi LEFT JOIN {$_YW['k']['elevator']} AS el ON vi.id = el.e_vid " $sqlk = "{$_YW['k']['village']} AS vi LEFT JOIN {$_YW['k']['elevator']} AS el ON vi.id = el.e_vid "
. "LEFT JOIN (SELECT el.e_vid AS ae_vid,COUNT( DISTINCT el.e_number ) AS v_free,COUNT( DISTINCT el.e_vid, el.e_bno ) AS v_bno {$fwhere} GROUP BY ae_vid ) AS anum ON anum.ae_vid = vi.id " ."LEFT JOIN (SELECT el.e_vid AS ae_vid,COUNT( DISTINCT el.e_number ) AS v_free,COUNT( DISTINCT el.e_vid, el.e_bno ) AS v_bno $fwhere GROUP BY ae_vid ) AS anum ON anum.ae_vid = vi.id "
. "LEFT JOIN (SELECT el.e_vid AS be_vid,COUNT( DISTINCT el.e_number ) AS v_lease {$lwhere} GROUP BY be_vid ) AS bnum ON bnum.be_vid = vi.id " ."LEFT JOIN (SELECT el.e_vid AS be_vid,COUNT( DISTINCT el.e_number ) AS v_lease $lwhere GROUP BY be_vid ) AS bnum ON bnum.be_vid = vi.id "
. "LEFT JOIN (SELECT el.e_vid AS ce_vid,COUNT( DISTINCT el.e_number ) AS v_endday {$dwhere} GROUP BY ce_vid ) AS cnum ON cnum.ce_vid = vi.id " ."LEFT JOIN (SELECT el.e_vid AS ce_vid,COUNT( DISTINCT el.e_number ) AS v_endday $dwhere GROUP BY ce_vid ) AS cnum ON cnum.ce_vid = vi.id "
. "LEFT JOIN (SELECT el.e_vid AS de_vid,COUNT( DISTINCT el.e_number ) AS v_prerow {$pwhere} GROUP BY de_vid ) AS dnum ON dnum.de_vid = vi.id "; ."LEFT JOIN (SELECT el.e_vid AS de_vid,COUNT( DISTINCT el.e_number ) AS v_prerow $pwhere GROUP BY de_vid ) AS dnum ON dnum.de_vid = vi.id ";
break; break;
case 'contract': case 'contract':
$sqlk = "{$_YW['k']['contract']} AS ch LEFT JOIN {$_YW['k']['launch']} AS la ON ch.h_number = la.l_hnumber "; $sqlk = "{$_YW['k']['contract']} AS ch LEFT JOIN {$_YW['k']['launch']} AS la ON ch.h_number = la.l_hnumber ";
break; break;
case 'schedule': case 'schedule':
$sqlk = "{$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) LEFT JOIN {$_YW['k']['contract']} AS ct ON la.l_hnumber = ct.h_number"; $sqlk
= "{$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) LEFT JOIN {$_YW['k']['contract']} AS ct ON la.l_hnumber = ct.h_number";
break;
case 'expschedule':
$sqlk
= "{$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) LEFT JOIN {$_YW['k']['contract']} AS ct ON la.l_hnumber = ct.h_number";
break; break;
case 'village': case 'village':
$sqlk = "{$_YW['k']['village']} AS vi LEFT JOIN {$_YW['k']['elevator']} AS el ON vi.id = el.e_vid "; $sqlk = "{$_YW['k']['village']} AS vi LEFT JOIN {$_YW['k']['elevator']} AS el ON vi.id = el.e_vid ";
break; break;
default: default:
$sqlk = $_YW['k'][ $this->tname ]; $sqlk = $_YW['k'][$this->tname];
break; break;
} }
return $sqlk; return $sqlk;
} }
//表名
private function fun_sqlk_vid()
{
$idArr = $vidArr = [];
$countvid = function ($idArr = [], $newvid = []) {
// if (count($newvid) == 0) $newvid = [-1];
if (count($idArr) > 0) {
$idArr = array_intersect($newvid, $idArr);
// 如果交集为空则确实通过此条件进行了筛选就要通知SQL没有任何值满足当前条件将ID设置为0肯定查找不到
// if (count($idArr) == 0) $idArr = [-1];
} else {
$idArr = $newvid;
}
if (count($idArr) == 0) {
$idArr = [-1];
}
return $idArr;
};
// 所属商圈
if (array_key_exists('vhcname', $this->form) && is_array($this->form['vhcname'])) {
$arrvhcname = array_map(function ($para) {
return "'$para'";
}, $this->form['vhcname']);
$vhcname = arrayto_string($arrvhcname, ',');
$vid = $this->tsql->table('village')->qfield('id')->where("v_hcname IN($vhcname) ")->all();
$idArr = $countvid($idArr, array_column($vid, 'id'));
}
// 场所类型
if (is_array($this->form['vtype'])) {
$vtype = arrayto_string($this->form['vtype'], ',');
$vid = $this->tsql->table('village')->qfield('id')->where("v_type IN($vtype)")->all();
$idArr = $countvid($idArr, array_column($vid, 'id'));
}
// 地图选择
if ($this->form['v_id']) {
$vidArr = stringto_array($this->form['v_id'], ',');
// 取社区类型和地图筛选的交集重叠ID社区类型没有操作则直接按照地图筛选结果
// $idArr = count($idArr) > 0?array_intersect($vidArr,$idArr):$vidArr;
$idArr = $countvid($idArr, $vidArr);
}
$funWhere = function ($idArr, &$where) {
if (count($idArr) > 0) {
$strId = arrayto_string($idArr, ',');
$where .= " AND id IN($strId) ";
}
};
//区域
$v_province = $this->form['v_province'] && $this->form['v_province'] != '请选择' ? $this->form['v_province'] : '';
$v_city = $this->form['v_city'] && $this->form['v_city'] != '请选择' ? $this->form['v_city'] : '';
$v_district = $this->form['v_district'] && $this->form['v_district'] != '请选择' ? $this->form['v_district'] : '';
if ($v_district && $v_province && $v_city) {
$where
= " v_province = '{$this->form['v_province']}' AND v_city = '{$this->form['v_city']}' AND v_district = '$v_district' ";
$funWhere($idArr, $where);
$vid = $this->tsql->table('village')->qfield('id')->where($where)->all();
$idArr = array_column($vid, 'id');
if (count($idArr) == 0) {
$idArr = [-1];
}
}
return $idArr;
}
//字段 //字段
public function td_field() public function td_field()
{ {
global $_M, $_YW;
switch ($this->tname) { switch ($this->tname) {
case 'elevators': case 'elevators':
$field = ' el.*,max( la.l_endtime ) AS endtime,count( DISTINCT la.id ) AS e_totalnum,ala.*,if(ala.estate,1,0) AS etypes,bla.*,cla.* '; $field
= ' el.*,max( la.l_endtime ) AS endtime,count( DISTINCT la.id ) AS e_totalnum,ala.*,if(ala.estate,1,0) AS etypes,bla.*,cla.* ';
break; break;
case 'patrol': case 'patrol':
$field = ' el.*,la.l_hnumber,ala.* '; $field = ' el.*,la.l_hnumber,ala.* ';
@ -245,17 +280,23 @@ trait tdata
case 'schedule': case 'schedule':
$field = 'el.e_enable,el.e_number,el.e_vid,el.e_bno,el.e_aps,el.e_size,el.e_label,la.*,ct.h_cid';// el.e_text, $field = 'el.e_enable,el.e_number,el.e_vid,el.e_bno,el.e_aps,el.e_size,el.e_label,la.*,ct.h_cid';// el.e_text,
break; break;
case 'expschedule':
$field = 'el.e_vid,el.e_bno,el.e_label,la.*,ct.h_cid';// el.e_text,
break;
case 'villages': case 'villages':
$field = " vi.*, COUNT( DISTINCT el.e_number) AS v_enum,COUNT(DISTINCT el.e_vid, el.e_bno) AS v_ebnonum,COUNT( el.e_enable = 0 OR NULL ) AS noban,ANY_VALUE(anum.v_free) AS v_free,ANY_VALUE( anum.v_bno ) AS v_bno,ANY_VALUE(bnum.v_lease) AS v_lease,ANY_VALUE(cnum.v_endday) AS v_endday,ANY_VALUE(dnum.v_prerow) AS v_prerow "; $field
= " vi.*, COUNT( DISTINCT el.e_number) AS v_enum,COUNT(DISTINCT el.e_vid, el.e_bno) AS v_ebnonum,COUNT( el.e_enable = 0 OR NULL ) AS noban,ANY_VALUE(anum.v_free) AS v_free,ANY_VALUE( anum.v_bno ) AS v_bno,ANY_VALUE(bnum.v_lease) AS v_lease,ANY_VALUE(cnum.v_endday) AS v_endday,ANY_VALUE(dnum.v_prerow) AS v_prerow ";
break; break;
case 'village': case 'village':
$field = " vi.*, count( el.e_number ) AS total,count( el.e_enable = 0 OR NULL ) AS noban,count( el.e_enable = 1 OR NULL ) AS normal "; $field
= " vi.*, count( el.e_number ) AS total,count( el.e_enable = 0 OR NULL ) AS noban,count( el.e_enable = 1 OR NULL ) AS normal ";
break; break;
default: default:
$field = '*'; $field = '*';
break; break;
} }
return $field; return $field;
} }
@ -264,85 +305,21 @@ trait tdata
* 同时满足条件的非OR * 同时满足条件的非OR
*/ */
public function td_search($link = true)
{
global $_M, $_YW;
//默认input字段为link搜索
if ($link)
$this->search_link = array_unique(array_merge($this->search_input, $this->search_link));
//合成得带搜索字段
$field = array_unique(array_merge($this->search_input, $this->search_other));
//判断是否为链表查询
$join_field = array_combine($field, count($this->search_field) > 0 ? $this->search_field : $field);
//相对独立的搜索
$arrwhere = [];
foreach ($field as $val) {
$search = trim(strtoupper($this->form[ $val ]));
if (strlen($search) > 0) {
$str = $join_field[ $val ];
if (in_array($val, $this->search_link)) {
$arrwhere[] = " {$str} LIKE '%{$search}%' ";
continue;
}
$arrwhere[] = " {$str} = '{$search}' ";
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where = ' AND ';
$where .= arrayto_string($arrwhere, ' AND ');
}
return $where;
}
//OR 内容搜索
public function td_search_or($orfield, $search_field = [])
{
global $_M, $_YW;
//判断是否为链表查询
$join_field = array_combine($orfield, count($search_field) > 0 ? $search_field : $orfield);
//相对独立的搜索
$arrwhere = [];
foreach ($orfield as $val) {
$search = trim(strtoupper($this->form[ $val ]));
if (strlen($search) > 0) {
$str = $join_field[ $val ];
if (in_array($val, $this->search_link)) {
$arrwhere[] = " {$str} LIKE '%{$search}%' ";
continue;
}
$arrwhere[] = " {$str} = '{$search}' ";
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where .= arrayto_string($arrwhere, ' OR ');
}
return strlen($where) > 0 ? " AND ({$where}) " : '';
}
//时间区间
public function td_time_search($field, $search_field = []) public function td_time_search($field, $search_field = [])
{ {
global $_M, $_YW;
list($start, $end) = $field; list($start, $end) = $field;
//判断是否为链表查询 //判断是否为链表查询
$join_field = array_combine($field, count($search_field) > 0 ? $search_field : $field); $join_field = array_combine($field, count($search_field) > 0 ? $search_field : $field);
//相对独立的搜索 //相对独立的搜索
$arrwhere = []; $arrwhere = [];
foreach ($field as $val) { foreach ($field as $val) {
$search = trim(strtoupper($this->form[ $val ])); $search = trim(strtoupper($this->form[$val]));
if (strlen($search) > 0) { if (strlen($search) > 0) {
$str = $join_field[ $val ]; $str = $join_field[$val];
if ($val == $start) { if ($val == $start) {
$arrwhere[] = " {$str} >= '{$search}' "; $arrwhere[] = " $str >= '$search' ";
} else { } else {
$arrwhere[] = " {$str} <= '{$search}' "; $arrwhere[] = " $str <= '$search' ";
} }
} }
} }
@ -352,47 +329,14 @@ trait tdata
if (count($arrwhere) > 0) { if (count($arrwhere) > 0) {
$where .= arrayto_string($arrwhere, " AND "); $where .= arrayto_string($arrwhere, " AND ");
} }
return strlen($where) > 0 ? " AND ({$where}) " : '';
return strlen($where) > 0 ? " AND ($where) " : '';
} }
//获取重叠的时间区间 //OR 内容搜索
// $search_field 开始时间和结束时间的字段互相调换,结束的字段在前面
public function td_time_orsearch($field, $search_field = [])
{
global $_M, $_YW;
list($start, $end) = $field;
//判断是否为链表查询
$join_field = array_combine($field, count($search_field) > 0 ? $search_field : $field);
//相对独立的搜索
$arrwhere = [];
foreach ($field as $val) {
$search = trim(strtoupper($this->form[ $val ]));
if (strlen($search) > 0) {
$str = $join_field[ $val ];
if ($val == $start) {
$arrwhere[] = " {$str} < '{$search}' "; //结束字段,搜索为开始时间
} else {
$arrwhere[] = " {$str} > '{$search}' "; //开始字段,搜索为结束时间
}
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where .= arrayto_string($arrwhere, " OR ");
}
return strlen($where) > 0 ? " AND NOT({$where}) " : '';
}
/*
* 【列出】
* SQL判断语句$where .= $this->search();
*/
public function td_where() public function td_where()
{ {
global $_M, $_YW;
$where = " 1=1 "; $where = " 1=1 ";
switch ($this->tname) { switch ($this->tname) {
case 'applan': case 'applan':
@ -404,16 +348,28 @@ trait tdata
$veaps = parent::strchange(array_filter($this->form['e_aps'])); $veaps = parent::strchange(array_filter($this->form['e_aps']));
$where .= " AND e_aps IN($veaps) "; $where .= " AND e_aps IN($veaps) ";
} }
if (strlen($this->village_whereid) > 0) $where .= " AND el.e_vid IN({$this->village_whereid}) "; if (strlen($this->village_whereid) > 0) {
$where .= " AND el.e_vid IN($this->village_whereid) ";
}
break; break;
case 'elevators': case 'elevators':
$this->search_input = ['e_number']; $this->search_input = ['e_number'];
$this->search_other = ['e_aps', 'e_bno', 'e_vid', 'e_enable', 'endid', 'nowid', 'nextid']; $this->search_other = ['e_aps', 'e_bno', 'e_vid', 'e_enable', 'endid', 'nowid', 'nextid'];
$this->search_field = ['el.e_number', 'el.e_aps', 'el.e_bno', 'el.e_vid', 'el.e_enable', 'cla.endid', 'ala.nowid', 'bla.nextid']; $this->search_field = [
'el.e_number',
'el.e_aps',
'el.e_bno',
'el.e_vid',
'el.e_enable',
'cla.endid',
'ala.nowid',
'bla.nextid',
];
$where .= self::td_search(); $where .= self::td_search();
//判断是否为备份 //判断是否为备份
if ($this->bsign) if ($this->bsign) {
parent::where_id($where); parent::where_id($where);
}
self::td_groupby($where); self::td_groupby($where);
break; break;
case 'patrol': case 'patrol':
@ -487,16 +443,22 @@ trait tdata
$this->form['v_city'] = $this->form['v_address']; $this->form['v_city'] = $this->form['v_address'];
$this->form['v_district'] = $this->form['v_address']; $this->form['v_district'] = $this->form['v_address'];
if (strlen($this->villages_where) > 0) $where .= " AND {$this->villages_where} "; if (strlen($this->villages_where) > 0) {
if (strlen($this->village_whereid) > 0) $where .= " AND vi.id IN({$this->village_whereid}) "; $where .= " AND $this->villages_where ";
}
if (strlen($this->village_whereid) > 0) {
$where .= " AND vi.id IN($this->village_whereid) ";
}
$where .= self::td_search_or($this->search_link); $where .= self::td_search_or($this->search_link);
$where .= self::td_search(); $where .= self::td_search();
//判断是否为备份 //判断是否为备份
if ($this->bsign) if ($this->bsign) {
parent::where_id($where); parent::where_id($where);
}
self::td_groupby($where); self::td_groupby($where);
break; break;
case 'schedule': case 'schedule':
case 'expschedule':
$where .= " AND la.id IS NOT NULL "; $where .= " AND la.id IS NOT NULL ";
$this->search_input = ['e_number', 'l_hnumber']; $this->search_input = ['e_number', 'l_hnumber'];
$this->search_other = ['id', 'e_vid']; $this->search_other = ['id', 'e_vid'];
@ -516,16 +478,55 @@ trait tdata
return $where; return $where;
} }
//分组查询 //时间区间
public function td_search($link = true)
{
//默认input字段为link搜索
if ($link) {
$this->search_link = array_unique(array_merge($this->search_input, $this->search_link));
}
//合成得带搜索字段
$field = array_unique(array_merge($this->search_input, $this->search_other));
//判断是否为链表查询
$join_field = array_combine($field, count($this->search_field) > 0 ? $this->search_field : $field);
//相对独立的搜索
$arrwhere = [];
foreach ($field as $val) {
$search = trim(strtoupper($this->form[$val]));
if (strlen($search) > 0) {
$str = $join_field[$val];
if (in_array($val, $this->search_link)) {
$arrwhere[] = " $str LIKE '%$search%' ";
continue;
}
$arrwhere[] = " $str = '$search' ";
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where = ' AND ';
$where .= arrayto_string($arrwhere, ' AND ');
}
return $where;
}
//获取重叠的时间区间
// $search_field 开始时间和结束时间的字段互相调换,结束的字段在前面
public function td_groupby(&$where) public function td_groupby(&$where)
{ {
global $_M;
$this->multi_table = true; $this->multi_table = true;
switch ($this->tname) { switch ($this->tname) {
case 'elevators': case 'elevators':
$where .= " GROUP BY el.e_number "; $where .= " GROUP BY el.e_number ";
if ($this->form['endtime']) if ($this->form['endtime']) {
$where .= " HAVING endtime < '{$this->form['endtime']}' "; $where .= " HAVING endtime < '{$this->form['endtime']}' ";
}
break; break;
case 'patrol': case 'patrol':
$where .= " GROUP BY el.e_number "; $where .= " GROUP BY el.e_number ";
@ -534,8 +535,6 @@ trait tdata
$where .= " GROUP BY ch.id "; $where .= " GROUP BY ch.id ";
break; break;
case 'villages': case 'villages':
$where .= " GROUP BY vi.id ";
break;
case 'village': case 'village':
$where .= " GROUP BY vi.id "; $where .= " GROUP BY vi.id ";
break; break;
@ -545,6 +544,68 @@ trait tdata
} }
} }
/*
* 【列出】
* SQL判断语句$where .= $this->search();
*/
public function td_search_or($orfield, $search_field = [])
{
//判断是否为链表查询
$join_field = array_combine($orfield, count($search_field) > 0 ? $search_field : $orfield);
//相对独立的搜索
$arrwhere = [];
foreach ($orfield as $val) {
$search = trim(strtoupper($this->form[$val]));
if (strlen($search) > 0) {
$str = $join_field[$val];
if (in_array($val, $this->search_link)) {
$arrwhere[] = " $str LIKE '%$search%' ";
continue;
}
$arrwhere[] = " $str = '$search' ";
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where .= arrayto_string($arrwhere, ' OR ');
}
return strlen($where) > 0 ? " AND ($where) " : '';
}
//分组查询
public function td_time_orsearch($field, $search_field = [])
{
list($start, $end) = $field;
//判断是否为链表查询
$join_field = array_combine($field, count($search_field) > 0 ? $search_field : $field);
//相对独立的搜索
$arrwhere = [];
foreach ($field as $val) {
$search = trim(strtoupper($this->form[$val]));
if (strlen($search) > 0) {
$str = $join_field[$val];
if ($val == $start) {
$arrwhere[] = " $str < '$search' "; //结束字段,搜索为开始时间
} else {
$arrwhere[] = " $str > '$search' "; //开始字段,搜索为结束时间
}
}
}
//返回内容
$where = '';
if (count($arrwhere) > 0) {
$where .= arrayto_string($arrwhere, " OR ");
}
return strlen($where) > 0 ? " AND NOT($where) " : '';
}
/* /*
* 【列出】 * 【列出】
* SQL排序方式语句 * SQL排序方式语句
@ -552,51 +613,62 @@ trait tdata
public function td_order() public function td_order()
{ {
global $_M;
switch ($this->tname) { switch ($this->tname) {
case 'applan': case 'applan':
$order = " `e_enable` DESC "; $order = " `e_enable` DESC ";
//按照正常排序,对比相邻广告位的投放广告品类 //按照正常排序,对比相邻广告位的投放广告品类
// order_e_types 按照是否可投放进行排序 // order_e_types 按照是否可投放进行排序
if ($this->form['eaps_order'] || $this->form['order_e_types']) { if ($this->form['eaps_order'] || $this->form['order_e_types']) {
if (!$this->form['order_e_types']) if ( ! $this->form['order_e_types']) {
$this->form['order_e_types'] = ' ASC '; $this->form['order_e_types'] = ' ASC ';
}
$order .= ", `lanum` {$this->form['order_e_types']} "; $order .= ", `lanum` {$this->form['order_e_types']} ";
} }
if ($this->form['eaps_order'] == 2) { if ($this->form['eaps_order'] == 2) {
// 传递进来的编号,不直接查数据是因为有些可能会出现错误,所以直接使用传递进来的,进行排序 // 传递进来的编号,不直接查数据是因为有些可能会出现错误,所以直接使用传递进来的,进行排序
$array = array_filter(stringto_array($this->form['l_selectenum'], ',')); $array = array_filter(stringto_array($this->form['l_selectenum'], ','));
$idstr = parent::strchange($array); $idstr = parent::strchange($array);
if (strlen($idstr)) if (strlen($idstr)) {
$order = " `e_number` IN({$idstr}) DESC, " . $order; $order = " `e_number` IN($idstr) DESC, ".$order;
}
} }
$order .= ", `e_vid` ASC, `e_bno` ASC, `e_aps` ASC "; $order .= ", `e_vid` ASC, `e_bno` ASC, `e_aps` ASC ";
break; break;
case 'elevators': case 'elevators':
$order = " `etypes` DESC, endtime DESC, el.`e_vid` ASC, el.`e_bno` ASC, el.`e_aps` ASC "; $order = " `etypes` DESC, endtime DESC, el.`e_vid` ASC, el.`e_bno` ASC, el.`e_aps` ASC ";
if ($this->form['order_e_number']) if ($this->form['order_e_number']) {
$order = " el.e_number {$this->form['order_e_number']} "; $order = " el.e_number {$this->form['order_e_number']} ";
if ($this->form['order_endtime']) }
if ($this->form['order_endtime']) {
$order = " endtime {$this->form['order_endtime']} "; $order = " endtime {$this->form['order_endtime']} ";
if ($this->form['order_e_totalnum']) }
if ($this->form['order_e_totalnum']) {
$order = " e_totalnum {$this->form['order_e_totalnum']} "; $order = " e_totalnum {$this->form['order_e_totalnum']} ";
if ($this->form['order_etypes']) }
if ($this->form['order_etypes']) {
$order = " `etypes` {$this->form['order_etypes']} "; $order = " `etypes` {$this->form['order_etypes']} ";
if ($this->form['order_nowstime']) }
if ($this->form['order_nowstime']) {
$order = " nowstime {$this->form['order_nowstime']} "; $order = " nowstime {$this->form['order_nowstime']} ";
if ($this->form['order_nowetime']) }
if ($this->form['order_nowetime']) {
$order = " nowetime {$this->form['order_nowetime']} "; $order = " nowetime {$this->form['order_nowetime']} ";
if ($this->form['order_nextstime']) }
if ($this->form['order_nextstime']) {
$order = " nextstime {$this->form['order_nextstime']} "; $order = " nextstime {$this->form['order_nextstime']} ";
if ($this->form['order_nextetime']) }
if ($this->form['order_nextetime']) {
$order = " nextetime {$this->form['order_nextetime']} "; $order = " nextetime {$this->form['order_nextetime']} ";
if ($this->form['order_endstime']) }
if ($this->form['order_endstime']) {
$order = " endstime {$this->form['order_endstime']} "; $order = " endstime {$this->form['order_endstime']} ";
if ($this->form['order_endetime']) }
if ($this->form['order_endetime']) {
$order = " endetime {$this->form['order_endetime']} "; $order = " endetime {$this->form['order_endetime']} ";
}
if ($this->form['order_e_address']) { if ($this->form['order_e_address']) {
$e_address = $this->form['order_e_address']; $e_address = $this->form['order_e_address'];
$order = " el.e_vid {$e_address}, el.e_bno {$e_address}, el.e_aps {$e_address} "; $order = " el.e_vid $e_address, el.e_bno $e_address, el.e_aps $e_address ";
} }
break; break;
case 'patrol': case 'patrol':
@ -607,54 +679,70 @@ trait tdata
break; break;
case 'launch': case 'launch':
$order = " `id` DESC "; $order = " `id` DESC ";
if ($this->form['order_l_starttime']) if ($this->form['order_l_starttime']) {
$order = " l_starttime {$this->form['order_l_starttime']} "; $order = " l_starttime {$this->form['order_l_starttime']} ";
if ($this->form['order_l_endtime']) }
if ($this->form['order_l_endtime']) {
$order = " l_endtime {$this->form['order_l_endtime']} "; $order = " l_endtime {$this->form['order_l_endtime']} ";
}
break; break;
case 'contract': case 'contract':
$order = ' ch.`id` DESC'; $order = ' ch.`id` DESC';
if ($this->form['order_h_starttime']) if ($this->form['order_h_starttime']) {
$order = " ch.h_starttime {$this->form['order_h_starttime']} "; $order = " ch.h_starttime {$this->form['order_h_starttime']} ";
if ($this->form['order_h_endtime']) }
if ($this->form['order_h_endtime']) {
$order = " ch.h_endtime {$this->form['order_h_endtime']} "; $order = " ch.h_endtime {$this->form['order_h_endtime']} ";
}
break; break;
case 'schedule': case 'schedule':
case 'expschedule':
$order = ' la.l_starttime DESC,la.`id` DESC'; $order = ' la.l_starttime DESC,la.`id` DESC';
//备份 按照场所排序 //备份 按照场所排序
if ($this->bsign) { if ($this->bsign) {
$order = " el.`e_vid` ASC, el.`e_bno` ASC, el.`e_aps` ASC "; $order = " el.`e_vid` ASC, el.`e_bno` ASC, el.`e_aps` ASC ";
} }
if ($this->form['order_l_starttime']) if ($this->form['order_l_starttime']) {
$order = " la.l_starttime {$this->form['order_l_starttime']} "; $order = " la.l_starttime {$this->form['order_l_starttime']} ";
if ($this->form['order_l_endtime']) }
if ($this->form['order_l_endtime']) {
$order = " la.l_endtime {$this->form['order_l_endtime']} "; $order = " la.l_endtime {$this->form['order_l_endtime']} ";
}
break; break;
case 'villages': case 'villages':
// 默认按照街道排序 // 默认按照街道排序
$order = ' CONVERT( vi.`v_address` USING gbk ) COLLATE gbk_chinese_ci ASC '; $order = ' CONVERT( vi.`v_address` USING gbk ) COLLATE gbk_chinese_ci ASC ';
if ($this->form['order_v_enum']) if ($this->form['order_v_enum']) {
$order = " v_enum {$this->form['order_v_enum']} "; $order = " v_enum {$this->form['order_v_enum']} ";
if ($this->form['order_v_free']) }
if ($this->form['order_v_free']) {
$order = " v_free {$this->form['order_v_free']} "; $order = " v_free {$this->form['order_v_free']} ";
if ($this->form['order_v_lease']) }
if ($this->form['order_v_lease']) {
$order = " v_lease {$this->form['order_v_lease']} "; $order = " v_lease {$this->form['order_v_lease']} ";
if ($this->form['order_v_endday']) }
if ($this->form['order_v_endday']) {
$order = " v_endday {$this->form['order_v_endday']} "; $order = " v_endday {$this->form['order_v_endday']} ";
if ($this->form['order_v_prerow']) }
if ($this->form['order_v_prerow']) {
$order = " v_prerow {$this->form['order_v_prerow']} "; $order = " v_prerow {$this->form['order_v_prerow']} ";
if ($this->form['order_v_ebnonum']) }
if ($this->form['order_v_ebnonum']) {
$order = " v_ebnonum {$this->form['order_v_ebnonum']} "; $order = " v_ebnonum {$this->form['order_v_ebnonum']} ";
if ($this->form['order_v_bno']) }
if ($this->form['order_v_bno']) {
$order = " v_bno {$this->form['order_v_bno']} "; $order = " v_bno {$this->form['order_v_bno']} ";
}
break; break;
case 'para': case 'para':
$order = ' `id` DESC'; $order = ' `id` DESC';
if ($this->form['order_p_type']) if ($this->form['order_p_type']) {
$order = " `p_type` {$this->form['order_p_type']} "; $order = " `p_type` {$this->form['order_p_type']} ";
if ($this->form['order_p_order']) }
if ($this->form['order_p_order']) {
$order = " `p_order` {$this->form['order_p_order']} "; $order = " `p_order` {$this->form['order_p_order']} ";
}
break; break;
case 'noticeday': case 'noticeday':
$order = ' `endtime` ASC, `h_endtime` ASC '; $order = ' `endtime` ASC, `h_endtime` ASC ';

View File

@ -8,6 +8,7 @@ trait tfield
protected function tf_elevator($sign = true) protected function tf_elevator($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'e_enable' => '状态', 'e_enable' => '状态',
'e_number' => '广告位编号', 'e_number' => '广告位编号',
@ -16,7 +17,7 @@ trait tfield
'e_aps' => '广告位位置', 'e_aps' => '广告位位置',
'e_size' => '广告位规格', 'e_size' => '广告位规格',
'e_label' => '相关标签', 'e_label' => '相关标签',
'e_text' => '备注' 'e_text' => '备注',
]; ];
} }
@ -24,6 +25,7 @@ trait tfield
protected function tf_village($sign = true) protected function tf_village($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'v_name' => '场所名称', 'v_name' => '场所名称',
'v_type' => '场所分类', 'v_type' => '场所分类',
@ -39,7 +41,7 @@ trait tfield
'v_forbidtype' => '禁投行业', 'v_forbidtype' => '禁投行业',
'v_lnglat' => '经纬度', 'v_lnglat' => '经纬度',
'v_service' => '维保人员', 'v_service' => '维保人员',
'v_text' => '备注' 'v_text' => '备注',
]; ];
} }
@ -58,14 +60,14 @@ trait tfield
'l_title' => '投放名称', 'l_title' => '投放名称',
'l_starttime' => '开始时间', 'l_starttime' => '开始时间',
'l_endtime' => '结束时间', 'l_endtime' => '结束时间',
'ltype' => '投放状态' //标记是否已经结束 'ltype' => '投放状态', //标记是否已经结束
]; ];
// 导出专用 // 导出专用
$barray = [ $barray = [
'e_enable' => '状态', 'e_enable' => '状态',
// 'e_number' => '广告位编号', // 'e_number' => '广告位编号',
'e_size' => '广告位规格', 'e_size' => '广告位规格',
// 'e_text' => '备注', // 'e_text' => '备注',
'e_label' => '相关标签', 'e_label' => '相关标签',
'e_vid' => '场所名称', 'e_vid' => '场所名称',
'v_vaddress' => '场所地址', 'v_vaddress' => '场所地址',
@ -77,15 +79,35 @@ trait tfield
'l_title' => '投放名称', 'l_title' => '投放名称',
'l_starttime' => '开始时间', 'l_starttime' => '开始时间',
'l_endtime' => '结束时间', 'l_endtime' => '结束时间',
'ltype' => '投放状态' //标记是否已经结束 'ltype' => '投放状态', //标记是否已经结束
]; ];
return $sign || $this->bsign ? $barray : $array; return $sign || $this->bsign ? $barray : $array;
} }
// 新的导出备份
protected function tf_expschedule($sign = '')
{
// 导出专用
return [
'serial_number' => '序号',
'v_city' => '城市',
'media_type' => '媒体类型',
'v_district' => '区域',
'e_vid' => '社区名称',
'v_address' => '详细地址',
'v_type' => '资源类型',
'e_bno' => '道闸位置',
'number' => '数量',
'e_label' => '类型',
];
}
//合同 //合同
protected function tf_contract($sign = true) protected function tf_contract($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'h_number' => '合同编号', 'h_number' => '合同编号',
'h_medium' => '投放媒介', 'h_medium' => '投放媒介',
@ -101,7 +123,7 @@ trait tfield
'h_updatetime' => '修改时间', 'h_updatetime' => '修改时间',
'h_texta' => '投放周期', 'h_texta' => '投放周期',
'h_tower' => '投放台数', 'h_tower' => '投放台数',
'h_text' => '备注' 'h_text' => '备注',
]; ];
} }
@ -109,6 +131,7 @@ trait tfield
protected function tf_customer($sign = true) protected function tf_customer($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'c_allname' => '公司名称', 'c_allname' => '公司名称',
'c_name' => '公司简称', 'c_name' => '公司简称',
@ -125,6 +148,7 @@ trait tfield
protected function tf_workers($sign = true) protected function tf_workers($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
// 'w_cid' => '隶属公司', // 'w_cid' => '隶属公司',
'w_jid' => '职务id', 'w_jid' => '职务id',
@ -140,13 +164,14 @@ trait tfield
protected function tf_para($sign = true) protected function tf_para($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'p_type' => '参数分类', 'p_type' => '参数分类',
'p_value' => '参数值', 'p_value' => '参数值',
'p_name' => '参数名', 'p_name' => '参数名',
'p_num' => '有多少数据在使用', 'p_num' => '有多少数据在使用',
'p_order' => '排序', 'p_order' => '排序',
'p_text' => '备注' 'p_text' => '备注',
]; ];
} }
@ -154,6 +179,7 @@ trait tfield
protected function tf_launch($sign = true) protected function tf_launch($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'l_title' => '名称', 'l_title' => '名称',
'l_hnumber' => '合同编号', 'l_hnumber' => '合同编号',
@ -165,7 +191,7 @@ trait tfield
'l_text' => '备注', 'l_text' => '备注',
'l_enumber' => '广告位编组最多显示6个', 'l_enumber' => '广告位编组最多显示6个',
'l_addtime' => '录入时间', 'l_addtime' => '录入时间',
'l_updatetime' => '修改时间' 'l_updatetime' => '修改时间',
]; ];
} }
@ -173,6 +199,7 @@ trait tfield
protected function tf_applan($sign = true) protected function tf_applan($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'e_enable' => '状态', 'e_enable' => '状态',
'e_number' => '广告位编号', 'e_number' => '广告位编号',
@ -187,7 +214,7 @@ trait tfield
'nextstime' => '下个开始时间', 'nextstime' => '下个开始时间',
'nextetime' => '下个结束时间', 'nextetime' => '下个结束时间',
'endtime' => '最大结束时间', 'endtime' => '最大结束时间',
'e_types' => '状态提示' 'e_types' => '状态提示',
]; ];
} }
@ -195,6 +222,7 @@ trait tfield
protected function tf_elevators($sign = true) protected function tf_elevators($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'e_enable' => '状态', 'e_enable' => '状态',
'e_number' => '广告位编号', 'e_number' => '广告位编号',
@ -211,7 +239,7 @@ trait tfield
'nextetime' => '下个结束时间', 'nextetime' => '下个结束时间',
'endtime' => '最大结束时间', 'endtime' => '最大结束时间',
'e_totalnum' => '投放次数', 'e_totalnum' => '投放次数',
'etypes' => '排期状态' 'etypes' => '排期状态',
]; ];
} }
@ -232,7 +260,7 @@ trait tfield
'v_lease' => '排期中的个数', 'v_lease' => '排期中的个数',
'v_endday' => '到期个数', 'v_endday' => '到期个数',
'v_prerow' => '预排的个数', 'v_prerow' => '预排的个数',
'v_text' => '备注' 'v_text' => '备注',
]; ];
if ($this->bsign) { if ($this->bsign) {
$array['v_free'] = '闲置广告位总数'; $array['v_free'] = '闲置广告位总数';
@ -246,6 +274,7 @@ trait tfield
} else { } else {
unset($array['v_district']); unset($array['v_district']);
} }
return $array; return $array;
} }
@ -253,6 +282,7 @@ trait tfield
protected function tf_noticeday($sign = true) protected function tf_noticeday($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'h_number' => '合同编号', 'h_number' => '合同编号',
'h_signtime' => '签订日期', 'h_signtime' => '签订日期',
@ -263,7 +293,7 @@ trait tfield
'h_endtime' => '投放结束时间', 'h_endtime' => '投放结束时间',
'h_text' => '备注', 'h_text' => '备注',
// 'endtime' => '提醒时间', // 'endtime' => '提醒时间',
'htypes' => '提示说明' 'htypes' => '提示说明',
]; ];
} }
@ -271,6 +301,7 @@ trait tfield
protected function tf_patrol($sign = true) protected function tf_patrol($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
'e_number' => '编号', 'e_number' => '编号',
'e_address' => '地址', //虚拟字段 'e_address' => '地址', //虚拟字段
@ -284,6 +315,7 @@ trait tfield
protected function tf_keylist($sign = true) protected function tf_keylist($sign = true)
{ {
global $_M, $_YW; global $_M, $_YW;
return [ return [
// 'k_passkey' => '密钥密码', // 'k_passkey' => '密钥密码',
'k_basekey' => '密文密码', 'k_basekey' => '密文密码',
@ -291,7 +323,7 @@ trait tfield
'k_state' => '密钥状态', 'k_state' => '密钥状态',
'k_addtime' => '新增时间', 'k_addtime' => '新增时间',
'k_updatetime' => '修改时间', 'k_updatetime' => '修改时间',
'k_text' => '备注' 'k_text' => '备注',
]; ];
} }

File diff suppressed because it is too large Load Diff