切换导航条
此项目
正在载入...
登录
anyv
/
xkeasy
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
刘朕
3 years ago
提交
96e207ec0cd22299676b0b51d03844fb21b4125b
1 个父辈
c0e34daa
1 个管道 的构建
通过
耗费 9 秒
数据导出调试
变更
1
构建
1
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
202 行增加
和
7 行删除
app/portal/controller/TestController.php
app/portal/controller/TestController.php
查看文件 @
96e207e
...
...
@@ -15,6 +15,122 @@ use think\Db;
class
TestController
extends
HomeBaseController
{
public
function
prob
()
{
$uid
=
451
;
$user
=
Db
::
name
(
'user'
)
->
where
(
'id'
,
$uid
)
->
find
();
$indent
=
Db
::
name
(
'indent'
)
->
where
(
'salesman_uid'
,
$uid
)
->
order
(
'create_time'
,
'desc'
)
->
select
();
$arr
=
collection
(
$indent
)
->
toArray
();
$data
=
[];
$state_arr
=
[
4
=>
'待付款'
,
2
=>
'待发货'
,
3
=>
'已完成'
,
5
=>
'已发货'
,
6
=>
'待取货'
];
foreach
(
$arr
as
&
$v
)
{
$money
=
Db
::
name
(
'money_income'
)
->
where
(
'uid'
,
$uid
)
->
where
(
'indent_id'
,
$v
[
'id'
])
->
value
(
'money'
);
$fact_money
=
Db
::
name
(
'money_income'
)
->
where
(
'uid'
,
$uid
)
->
where
(
'indent_id'
,
$v
[
'id'
])
->
sum
(
'money'
);
// $income = Db::name('money_income')->where('uid',$uid)->where('indent_id',$v['id'])->select();
// $v['income'] = collection($income)->toArray();
// $data[] = [
// 'id' => $v['id'],
// 'money' => $money,
// 'number' => $v['book_num'],
// 'name' => $v['name'],
// 'phone' => $v['phone'],
// 'school' => $v['school'].'-'.$v['grade'].$v['class'],
// 'state' => $state_arr[$v['state']],
// 'create_time' => date('Y-m-d H:i:s',$v['create_time']),
// 'pay_time' => date('Y-m-d H:i:s',$v['pay_time']),
// 'region' => $v['region'],
// 'beiyong_address' => $v['beiyong_address'],
// 'award' => $money,
// 'fact_award' => $fact_money,
// 'is_error' => $fact_money != $money ? '是' : '否'
// ];
$data
[]
=
[
$v
[
'id'
],
$money
,
$v
[
'book_num'
],
$v
[
'name'
],
$v
[
'phone'
],
$v
[
'school'
]
.
'-'
.
$v
[
'grade'
]
.
$v
[
'class'
],
$state_arr
[
$v
[
'state'
]],
date
(
'Y-m-d H:i:s'
,
$v
[
'create_time'
]),
date
(
'Y-m-d H:i:s'
,
$v
[
'pay_time'
]),
$v
[
'region'
],
$v
[
'beiyong_address'
],
$money
,
$fact_money
,
$fact_money
!=
$money
?
'是'
:
'否'
];
}
$this
->
excel
(
$user
,
$data
);
print_r
(
$arr
);
exit
;
}
/**
*
* 导出Excel
*/
public
function
excel
(
$user
,
$data2
)
{
//引入PHPExcel库文件
// Vendor('phpexcel2.PHPExcel');
//创建对象
$excel
=
new
\PHPExcel
();
//Excel表格式,这里简略写了8列
$letter
=
array
(
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'F'
,
'G'
,
'H'
,
'I'
,
'J'
,
'k'
,
'L'
,
'M'
,
'N'
);
$excel
->
getActiveSheet
()
->
setCellValue
(
"A1"
,
"业务员名称"
);
$excel
->
getActiveSheet
()
->
setCellValue
(
"B1"
,
$user
[
'user_nickname'
]);
//表头数组
$tableheader
=
array
(
'订单号'
,
'价钱'
,
'数量'
,
'姓名'
,
'电话'
,
'学校-班级'
,
'订单状态'
,
'创建时间'
,
'支付时间'
,
'配送时间'
,
'地区'
,
'备用地址'
,
'应得收益'
,
'实际收益'
,
'是否异常'
);
//填充表头信息
for
(
$i
=
1
;
$i
<
count
(
$tableheader
)
+
1
;
$i
++
)
{
$excel
->
getActiveSheet
()
->
setCellValue
(
"
$letter[$i]
2"
,
"
$tableheader[$i]
"
);
}
//表格数组
$data
=
array
(
array
(
'1'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'2'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'3'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'4'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'5'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'6'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
array
(
'7'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
),
);
// $tz = Db::name('taizhang');
// $data2 = $tz->field('type',true)->select();
//print_r($data2);exit();
//填充表格信息
for
(
$i
=
3
;
$i
<=
count
(
$data2
)
+
1
;
$i
++
)
{
$j
=
0
;
foreach
(
$data2
[
$i
-
2
]
as
$key
=>
$value
)
{
$excel
->
getActiveSheet
()
->
setCellValue
(
"
$letter[$j]$i
"
,
"
$value
"
);
$j
++
;
}
}
//创建Excel输入对象
$write
=
new
\PHPExcel_Writer_Excel2007
(
$excel
);
header
(
"Pragma: public"
);
header
(
"Expires: 0"
);
header
(
"Cache-Control:must-revalidate, post-check=0, pre-check=0"
);
header
(
"Content-Type:application/force-download"
);
header
(
"Content-Type:application/vnd.ms-execl"
);
header
(
"Content-Type:application/octet-stream"
);
header
(
"Content-Type:application/download"
);;
header
(
'Content-Disposition:attachment;filename="信息系统表.xlsx"'
);
header
(
"Content-Transfer-Encoding:binary"
);
$write
->
save
(
'php://output'
);
}
/**
* 恢复父级id
* @throws \think\Exception
...
...
@@ -24,14 +140,93 @@ class TestController extends HomeBaseController
* @throws \think\exception\PDOException
*/
public
function
test
(){
$uids
=
Db
::
name
(
'indent_over'
)
->
group
(
'uid'
)
->
column
(
'uid'
);
$indent
=
Db
::
name
(
'indent'
)
->
whereIn
(
'salesman_uid'
,
$uids
)
->
select
();
$insert
=
[];
foreach
(
$indent
as
$v
)
{
unset
(
$v
[
'id'
]);
$insert
[]
=
$v
;
ini_set
(
'max_execution_time'
,
3600
);
//秒为单位,自己根据需要定义
ini_set
(
'memory_limit'
,
'-1'
);
// $b = Db::name('indent_pro')->where('salesman_uid',309)->update(['is_out'=>0]);
$page
=
$this
->
request
->
param
(
'page'
,
1
);
$uid
=
Db
::
name
(
'indent_pro'
)
->
where
(
'is_out'
,
0
)
->
group
(
'salesman_uid'
)
->
order
(
'salesman_uid'
,
'desc'
)
->
value
(
'salesman_uid'
);
if
(
!
$uid
)
{
echo
123
;
exit
;
}
Db
::
name
(
'indent_pro'
)
->
insertAll
(
$insert
);
// print_r($uid);exit;
$list
=
Db
::
name
(
'indent_pro'
)
->
where
(
'salesman_uid'
,
$uid
)
->
paginate
(
50
,
true
,[
'page'
=>
$page
]);
$list
=
$list
->
items
();
$state_arr
=
[
'2'
=>
'待发货'
,
'3'
=>
'已完成'
,
'5'
=>
'已发货'
,
'6'
=>
'待收货'
];
$i
=
[];
foreach
(
$list
as
$v
)
{
$order
=
Db
::
name
(
'indent'
)
->
where
(
'salesman_uid'
,
$v
[
'salesman_uid'
])
->
where
(
'order_number'
,
$v
[
'order_number'
])
->
whereIn
(
'state'
,[
'2'
,
'3'
,
'5'
,
'6'
])
->
find
();
if
(
!
$order
)
continue
;
$school_class
=
$v
[
'school'
]
.
'-'
.
$v
[
'grade'
]
.
$v
[
'class'
];
$salesman_name
=
Db
::
name
(
'user'
)
->
where
(
'id'
,
$v
[
'salesman_uid'
])
->
value
(
'user_nickname'
);
$award
=
Db
::
name
(
'money_income'
)
->
where
(
'indent_id'
,
$order
[
'id'
])
->
where
(
'uid'
,
$order
[
'salesman_uid'
])
->
value
(
'money'
);
if
(
$award
)
{
$award_fac
=
Db
::
name
(
'money_income'
)
->
where
(
'indent_id'
,
$order
[
'id'
])
->
where
(
'uid'
,
$order
[
'salesman_uid'
])
->
sum
(
'money'
);
$i
[]
=
[
'state_text'
=>
$state_arr
[
$order
[
'state'
]],
'order_number'
=>
$order
[
'order_number'
],
'money'
=>
$order
[
'money'
],
'create_time'
=>
date
(
'Y-m-d H:i:s'
,
$order
[
'create_time'
]),
'book_num'
=>
$order
[
'book_num'
],
'leave_word'
=>
$order
[
'leave_word'
],
'name'
=>
$order
[
'name'
],
'phone'
=>
$order
[
'phone'
],
'school_class'
=>
$school_class
,
'salesman_name'
=>
$salesman_name
,
'pay_time'
=>
date
(
'Y-m-d H:i:s'
,
$order
[
'pay_time'
]),
'start_time'
=>
$order
[
'start_time'
],
'end_time'
=>
$order
[
'end_time'
],
'region'
=>
$order
[
'region'
],
'beiyong_address'
=>
$order
[
'beiyong_address'
],
'award'
=>
$award
,
'award_fac'
=>
$award_fac
,
'is_pro'
=>
$award_fac
>
$award
?
'是'
:
'否'
];
}
}
$b
=
true
;
Db
::
startTrans
();
if
(
count
(
$i
)
==
0
)
{
Db
::
name
(
'indent_pro'
)
->
where
(
'salesman_uid'
,
$uid
)
->
update
([
'is_out'
=>
1
]);
$page
=
0
;
}
else
{
$a
=
Db
::
name
(
'indent_orders'
)
->
insertAll
(
$i
);
if
(
count
(
$i
)
<
50
)
{
$b
=
Db
::
name
(
'indent_pro'
)
->
where
(
'salesman_uid'
,
$uid
)
->
update
([
'is_out'
=>
1
]);
$page
=
0
;
}
if
(
!
$a
||
!
$b
)
Db
::
rollback
();
}
Db
::
commit
();
$page
=
$page
+
1
;
sleep
(
1
);
$this
->
redirect
(
url
(
'portal/test/test'
,[
'page'
=>
$page
],
true
,
true
));
// $sql = Db::name('indent_pro')->getLastSql();
// print_r($sql);
// print_r($uid);exit;
// $page = $this->request->param('page',1,'intval');
// $num = 2000;
//// $arr = [267,295,309];
// $uid = Db::name('indent_over')->where('status',0)
//// ->whereNotIn('uid',$arr)
// ->group('uid')->value('uid');
//// print_r($uid);exit;
// $list = Db::name('indent')->whereIn('salesman_uid',$uid)->paginate($num,true,['page'=>$page]);
// $indent = $list->items();
// $insert = [];
// foreach ($indent as $v) {
// unset($v['id']);
// $insert[] = $v;
// }
// $res = $res2 = true;
// Db::startTrans();
// if(count($indent) == 0) {
// $res2 = Db::name('indent_over')->where('uid',$uid)->update(['status'=>1]);
// } else {
// $res = Db::name('indent_pro')->insertAll($insert);
// }
// if(!$res || !$res2) Db::rollback();
// Db::commit();
// $all = Db::name('indent_over')->select();
// foreach ($all as $v) {
// $indent = Db::name('indent')->where('id',$v['indent_id'])->where('book_num',2)->count();
...
...
请
注册
或
登录
后发表评论