Merge branch 'release'

This commit is contained in:
mzl
2025-11-03 18:16:51 +08:00
parent a0935c4332
commit 359755fdf1
38 changed files with 2339 additions and 36 deletions
@@ -81,19 +81,22 @@ class StockOrdersController extends BaseController
if (!isset($groupedFiles[$file['file_code']])) {
$groupedFiles[$file['file_code']] = [];
}
$groupedFiles[$file['file_code']][] = $file['file_url'];
$groupedFiles[$file['file_code']][] = [
'url' => $file['file_url'],
'original_name' => $file['original_name']
];
}
// 映射到对应字段
foreach ($fileTypes as $field => $fileCode) {
if (isset($groupedFiles[$fileCode])) {
// 原始URL数组
// 文件信息数组,包含url和original_name
$data[$field] = $groupedFiles[$fileCode];
// 完整URL数组
$fullUrls = [];
foreach ($groupedFiles[$fileCode] as $url) {
$fullUrls[] = (new \app\common\service\OssService)->generatePrivateUrl($url);
foreach ($groupedFiles[$fileCode] as $fileInfo) {
$fullUrls[] = (new \app\common\service\OssService)->generatePrivateUrl($fileInfo['url']);
}
$data[$field . '_url'] = $fullUrls;
}
@@ -0,0 +1,48 @@
<?php
namespace app\admin\controller;
use app\common\controller\BaseController;
use app\common\traits\crud\CrudControllerTrait;
use app\admin\service\SysConfigService;
class SysConfigController extends BaseController
{
use CrudControllerTrait;
protected $service;
public function __construct()
{
$this->service = new SysConfigService();
}
/**
* 列表页数据格式化
*
* @param array $data
* @return array
*/
protected function indexFormat($data)
{
if (isset($data['created_at']))
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
if (isset($data['updated_at']))
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
return $data;
}
/**
* 数据格式化
*
* @param array $data
* @return array
*/
protected function showFormat($data)
{
if (isset($data['created_at']))
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
if (isset($data['updated_at']))
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
return $data;
}
}
+5
View File
@@ -118,6 +118,11 @@ class UserController extends BaseController
$data['system_ids'][] = $system['id'];
}
}
if ($data['reportToInfo']) {
$data['report_to_name'] = $data['reportToInfo']['id'] == $data['id'] ? '/' : $data['reportToInfo']['name'];
} else {
$data['report_to_name'] = '-';
}
return $data;
}
@@ -0,0 +1,48 @@
<?php
namespace app\admin\controller\dashboard;
use app\common\controller\BaseController;
use app\common\model\FinReceipt;
use support\Request;
class FinStatisticsController extends BaseController
{
/**
* 收款记录统计
* @param Request $request
* @return \support\Response
*/
public function statistics(Request $request)
{
try {
$query = FinReceipt::where('payment_apply_id','>',0);
$result = [];
//已认领数量
$result['claimed_num'] = $query->count();
//已认领金额
$result['claimed_amount'] = $query->sum('amount');
//未入账数量
$result['unreceived_num'] = FinReceipt::whereNull('received_at')->count();
//未入账金额
$result['unreceived_amount'] = FinReceipt::whereNull('received_at')->sum('amount');
$query = FinReceipt::whereNull('payment_apply_id');
//未认领数量
$result['unclaimed_num'] = $query->count();
//未认领金额
$result['unclaimed_amount'] = $query->sum('amount');
//已超时未认领数量
$result['timeout'] = $query->where('created_at','<',time()-24*3600)->count();
return $this->success($result);
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
}
@@ -0,0 +1,182 @@
<?php
namespace app\admin\controller\dashboard;
use app\common\controller\BaseController;
use support\Db;
use support\Request;
class OfficeClerkController extends BaseController
{
protected $service;
public function __construct()
{}
// 卡片
public function card(Request $request)
{
$approved = Db::table('approval_records')
->where('approver_id', $request->user->uid)
->where('status', 'approved')
->count('id');
$pending = Db::table('approval_records')
->where('approver_id', $request->user->uid)
->where('status', 'pending')
->count('id');
$unclaimed = Db::table('fin_payment_apply')
->where('doc_user_id', $request->user->uid)
->where('receipt_id', 0)
->count('id');
$claimed = Db::table('fin_payment_apply')
->where('doc_user_id', $request->user->uid)
->where('receipt_id', '>', 0)
->count('id');
$twentyFourHoursAgo = time() - (24 * 3600);
$timeout = Db::table('fin_payment_apply')
->where('doc_user_id', $request->user->uid)
->where('fin_payment_apply.submit_files', '')
->where('receipt_id', '>', 0)
->where('claimed_at', '<', $twentyFourHoursAgo)
->count('id');
return $this->success([
'approved' => $approved,
'pending' => $pending,
'unclaimed' => $unclaimed,
'claimed' => $claimed,
'timeout' => $timeout
]);
}
// 曲线
public function curve(Request $request)
{
$groupId = Db::table('user_group_members as ugm')
->join('user_group as ug', 'ugm.group_id', '=', 'ug.id')
->where('ugm.user_id', $request->user->uid)
->where('ugm.is_leader', 1)
->where('ugm.status', 1)
->where('ug.scenario_code', 'stock_orders')
->where('ug.status', 1)
->value('ug.id');
$userIds = Db::table('user_group_members')
->where('group_id', $groupId)
->pluck('user_id');
$list = Db::table('stock_orders')
->join('user', 'stock_orders.salesperson_id', '=', 'user.id')
->whereIn('stock_orders.salesperson_id', $userIds)
->whereIn('stock_orders.approval_status', [0, 1, 2])
->whereNull('stock_orders.deleted_at')
->groupBy('stock_orders.salesperson_id', 'user.name')
->selectRaw('user.name, count(*) as count')
->pluck('count', 'name')
->toArray();
$optionType = [];
$counts = [];
foreach ($list as $key=>$val) {
$optionType[] = $key;
$counts[] = $val;
}
$arr = [
"optionType" => $optionType,
"counts" => $counts
];
return $this->success($arr);
}
// 审批
public function approval(Request $request)
{
$list = Db::table('approval_records as ar')
->join('approval_instances as ai', 'ar.instance_id', '=', 'ai.id')
->join('stock_orders as so', 'ai.biz_id', '=', 'so.id')
->where('ar.approver_id', $request->user->uid)
->where('ar.status', 'pending')
->where('ai.flow_type', 'stock_orders')
->where('ai.biz_type', 'stock_orders')
->where('ai.status', 'processing')
->whereNull('so.deleted_at')
->select(
'so.order_no',
'ai.created_at as approval_created_at',
'so.salesperson_snapshot as salesperson_name'
)
->get()
->map(function($item) {
return [
'order_no' => $item->order_no,
'approval_created_at' => date('Y-m-d H:i:s', strtotime($item->approval_created_at)), // 格式化时间
'salesperson_name' => $item->salesperson_name
];
})
->toArray();
return $this->success($list);
}
// 认领
public function claim(Request $request)
{
$type = $request->get('type');
if ($type == 'unclaimed') {
$list = Db::table('fin_payment_apply')
->join('sys_currency', 'fin_payment_apply.currency_id', '=', 'sys_currency.id')
->where('fin_payment_apply.doc_user_id', $request->user->uid)
->where('fin_payment_apply.receipt_id', 0)
->get([
'fin_payment_apply.id',
'fin_payment_apply.created_at',
'fin_payment_apply.doc_user_id',
'fin_payment_apply.payment_entity',
'fin_payment_apply.payment_account',
'fin_payment_apply.currency_id',
'sys_currency.currency_name',
'fin_payment_apply.amount',
'fin_payment_apply.apply_no'
]);
foreach ($list as $key => &$val) {
$val->created_at = date('Y-m-d H:i:s', $val->created_at);
}
unset($val);
} else {
$twentyFourHoursAgo = time() - (24 * 3600);
$list = Db::table('fin_payment_apply')
->join('user', 'fin_payment_apply.doc_user_id', '=', 'user.id')
->join('sys_currency', 'fin_payment_apply.currency_id', '=', 'sys_currency.id')
->where('fin_payment_apply.doc_user_id', $request->user->uid)
->where('fin_payment_apply.submit_files', '')
->where('fin_payment_apply.receipt_id', '>', 0)
->where('fin_payment_apply.claimed_at', '<', $twentyFourHoursAgo)
->get([
'fin_payment_apply.id',
'fin_payment_apply.created_at',
'fin_payment_apply.doc_user_id',
'user.name',
'fin_payment_apply.payment_entity',
'fin_payment_apply.payment_account',
'fin_payment_apply.currency_id',
'sys_currency.currency_name',
'fin_payment_apply.amount',
'fin_payment_apply.apply_no'
]);
foreach ($list as $key => &$val) {
$stockIds = Db::table('fin_payment_stock')
->where('payment_apply_id', $val->id)
->pluck('stock_id')
->toArray();
$val->order_no = Db::table('stock_orders')
->whereIn('id', $stockIds)
->pluck('order_no')
->toArray();
$val->created_at = date('Y-m-d H:i:s', $val->created_at);
}
unset($val);
}
return $this->success($list);
}
}