Files
oms/back/application/api/controller/Assets.php
2026-03-10 18:45:36 +08:00

424 lines
18 KiB
PHP

<?php
namespace app\api\controller;
use think\Config;
use think\Controller;
use think\Db;
use think\Log;
use think\Model;
use think\Request;
use think\cache\driver\Memcache;
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE");
header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");
class Assets extends Common
{
//获取资产类型列表
public function GetAssetsTypeList()
{
$FirstLeveType = db('asset_type')->where('super_type_id', 0)->select();
for ($i = 0; $i < count($FirstLeveType); $i++) {
$SecondLeveType = db('asset_type')->where('super_type_id', $FirstLeveType[$i]['type_id'])->select();
for ($m = 0; $m < count($SecondLeveType); $m++) {
$count = db('asset_info')->where('asset_type', $SecondLeveType[$m]['type_id'])->where('del_time', null)->count();
if ($count > 0) {
$SecondLeveType[$m]['type_name'] .= '【' . $count . '】';
}
}
for ($j = 0; $j < count($SecondLeveType); $j++) {
$ThridLeveType = db('asset_type')->where('super_type_id', $SecondLeveType[$j]['type_id'])->select();
for ($k = 0; $k < count($ThridLeveType); $k++) {
$count = db('asset_info')->where('asset_type', $ThridLeveType[$k]['type_id'])->where('del_time', null)->count();
if ($count > 0) {
$ThridLeveType[$k]['type_name'] .= '【' . $count . '】';
}
}
$SecondLeveType[$j]['sub_type'] = $ThridLeveType;
}
$FirstLeveType[$i]['sub_type'] = $SecondLeveType;
}
return $this->sendSuccess($FirstLeveType);
}
//根据资产类型获取资产列表
public function GetAssetsInfoList()
{
$param = request()->post();
$AssetList = db('asset_info')->alias('i')
->join('asset_state s', 'i.asset_state=s.id', 'left')
->join('asset_apply a', 'a.asset_id=i.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->where('i.asset_type', $param['type'])
->where('a.del_time', null)
->where('i.del_time', null)
->field('i.*, s.desp as asset_state_desp,f.staff_name')
->group('i.asset_id')
->select();
return $this->sendSuccess($AssetList);
}
public function AddAssetsType()
{
$param = request()->post();
$ret = [];
if ($param['type_id'] > 0) {
//添加子类型
$ret = db('asset_type')->where('type_id', $param['type_id'])->field('type_id,super_type_id')->find();
} else {
//添加基类型
$ret['type_id'] = 0;
}
if ($ret != null) {
$insert = [];
$insert['type_name'] = $param['type_name'];
$insert['super_type_id'] = $ret['type_id'];
$insert['create_time'] = date('Y-m-d H:i:s');
db('asset_type')->insert($insert);
}
}
public function delType()
{
$param = request()->post();
if ($param != null) {
$ret = db('asset_type')->where('super_type_id', $param['type_id'])->select();
if ($ret) {
db('asset_type')->where('super_type_id', $param['type_id'])->delete();
$ret1 = db('asset_type')->where('type_id', $param['type_id'])->delete();
if ($ret1) {
return $this->sendSuccess('删除成功');
} else {
return $this->sendError('删除失败');
}
} else {
$ret2 = db('asset_type')->where('type_id', $param['type_id'])->delete();
if ($ret2) {
return $this->sendSuccess('删除成功');
} else {
return $this->sendError('删除失败');
}
}
}
return $this->sendError('删除失败');
}
public function delAssetInfo()
{
$param = request()->post();
if ($param) {
$update = [];
$update['asset_id'] = $param['asset_id'];
$update['del_time'] = date('Y-m-d H:i:s');
$ret = db('asset_info')->where('asset_id', $param['asset_id'])->update($update);
if ($ret) {
$ApplyList = db('asset_apply')->alias('a')
->join('asset_state s', 'a.operate_type=s.id', 'left')
->join('asset_info i', 'i.asset_id=a.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->field('i.asset_number, i.asset_name, s.desp as asset_state_desp, f.staff_name , a.operate_time')
->select();
if ($ApplyList) {
foreach ($ApplyList as $item) {
if ($item['asset_number'] == $param['asset_number']) {
$asset_info = db('asset_info')->where('asset_number', $item['asset_number'])->select();
if ($asset_info) {
$updateApply = [];
$updateApply['del_time'] = date('Y-m-d H:i:s');
foreach ($asset_info as $item2) {
$ret = db('asset_apply')->where('asset_id', $item2['asset_id'])->update($updateApply);
if ($ret) {
return $this->sendSuccess('删除成功');
} else {
return $this->sendError('删除失败');
}
}
}
}
}
}
return $this->sendSuccess('删除成功');
}
}
}
public function AddAssetsInfo()
{
$param = request()->post();
$ret = db('asset_type')->where('type_id', $param['asset_type'])->field('type_id,super_type_id')->find();
if ($ret != null) {
$insert_info = [];
$insert_info['asset_number'] = $param['asset_number'];
$insert_info['asset_name'] = $param['asset_name'];
$insert_info['asset_price'] = $param['asset_price'];
$insert_info['asset_type'] = $ret['type_id'];
$insert_info['asset_count'] = $param['asset_count'];
$insert_info['asset_margin'] = $param['asset_count'];
$insert_info['create_time'] = $param['create_time'];
if ($param['asset_url'] == '') {
$insert_info['asset_url'] = '';
} else {
$insert_info['asset_url'] = $param['asset_url'];
}
db('asset_info')->insert($insert_info);
}
}
public function updateAssetInfo()
{
$param = request()->post();
if ($param != null) {
$update = [];
$update['asset_name'] = $param['asset_name'];
$update['asset_number'] = $param['asset_number'];
$update['asset_url'] = $param['asset_url'];
$update['asset_price'] = $param['asset_price'];
$update['create_time'] = $param['create_time'];
$update['asset_count'] = $param['asset_count'];
$update['asset_margin'] = $param['asset_margin'];
$update['asset_state'] = $param['asset_state'];
$ret = db('asset_info')->where('asset_id', $param['asset_id'])->update($update);
if ($ret) {
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('修改失败');
}
}
}
public function updateAssetState()
{
$param = request()->post();
if ($param != null) {
if ($param['asset_state'] === 2) {
$apply = db('asset_apply')->where('apply_staff', $param['staff_id'])->where('asset_id', $param['asset_id'])->where('del_time', null)->find();
$info = db('asset_info')->where('asset_id', $param['asset_id'])->find();
if (!$info) {
return $this->sendError('', '资产信息不存在!');
}
if ($info['asset_margin'] < $param['only_count']) {
return $this->sendError('', '申领数量不足!');
}
if ($param['only_count'] > $info['asset_margin']) {
return $this->sendError('', '认领数量不能大于申领余量!');
}
if ($apply && $apply['operate_type'] !== 4) {
$updateInfo = [];
$updateInfo['asset_margin'] = $info['asset_margin'] - $param['only_count'];
$ret2 = db('asset_info')->where('asset_id', $param['asset_id'])->update($updateInfo);
if ($ret2) {
$updateApply = [];
$updateApply['only_count'] = $apply['only_count'] + $param['only_count'];
$updateApply['operate_type'] = $param['asset_state'];
$updateApply['remarks'] = $param['remarks'];
$updateApply['operate_time'] = $param['operate_time'];
$ret3 = db('asset_apply')->where('apply_id', $apply['apply_id'])->update($updateApply);
if ($ret3) {
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('', '修改申请记录失败');
}
} else {
return $this->sendError('', '修改资产信息失败');
}
} else {
$updateInfo = [];
$updateInfo['asset_margin'] = $info['asset_margin'] - $param['only_count'];
$ret2 = db('asset_info')->where('asset_id', $param['asset_id'])->update($updateInfo);
if ($ret2) {
$insertApply = [];
$insertApply['asset_id'] = $param['asset_id'];
$insertApply['apply_staff'] = $param['staff_id'];
$insertApply['operate_type'] = $param['asset_state'];
$insertApply['operate_time'] = $param['operate_time'];
$insertApply['remarks'] = $param['remarks'];
$insertApply['only_count'] = $param['only_count'];
$ret4 = db('asset_apply')->insert($insertApply);
if ($ret4) {
return $this->sendSuccess('认领成功');
} else {
return $this->sendError('', '认领申请记录失败');
}
} else {
return $this->sendError('', '修改资产信息失败');
}
}
} elseif ($param['asset_state'] === 3) {
$info = db('asset_info')->where('asset_id', $param['asset_id'])->find();
$apply = db('asset_apply')->where('apply_staff', $param['staff_id'])->where('asset_id', $param['asset_id'])->where('del_time', null)->find();
if ($apply['only_count'] < $param['only_count']) {
return $this->sendError('', '归还数量不能大于已领数量!');
}
if ($info && $apply) {
$updateApply = [];
$updateApply['operate_type'] = $param['asset_state'];
$updateApply['only_count'] = $apply['only_count'] - $param['only_count'];
$updateApply['remarks'] = $param['remarks'];
$updateApply['operate_time'] = $param['operate_time'];
$ret = db('asset_apply')->where('asset_id', $param['asset_id'])->where('apply_staff', $param['staff_id'])->update($updateApply);
if ($ret) {
$updateInfo = [];
$updateInfo['asset_margin'] = $info['asset_margin'] + $param['only_count'];
$ret_info = db('asset_info')->where('asset_id', $param['asset_id'])->update($updateInfo);
if ($ret_info) {
if ($apply['only_count'] < 0) {
$updateApply = [];
$updateApply['apply_state'] = $param['asset_state'];
$updateApply['remarks'] = $param['remarks'];
$updateApply['operate_time'] = $param['operate_time'];
$ret = db('asset_apply')->where('apply_id', $apply['apply_id'])->where('apply_staff', $param['staff_id'])->update($updateApply);
if ($ret) {
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('', '修改失败');
}
}
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('', '修改资产信息失败');
}
} else {
return $this->sendError('', '修改申请记录失败');
}
} else {
return $this->sendError('', '资产信息不存在!');
}
}
}
}
//根据资产类型获取资产列表
public function GetAssetsApplyList()
{
$param = request()->post();
$currPage = empty($param['currPage']) ? 1 : $param['currPage'];
$pageSize = empty($param['pageSize']) ? 10 : $param['pageSize'];
$query = db('asset_apply')->alias('a')
->join('asset_state s', 'a.operate_type=s.id', 'left')
->join('asset_info i', 'i.asset_id=a.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->where('i.del_time', null)
->field('a.apply_id, i.asset_number, i.asset_name, s.desp as asset_state_desp, f.staff_name , a.operate_time');
$countQuery = clone $query;
$ApplyList = $query->page($currPage, $pageSize)
->order('a.operate_time', 'desc')
->select();
$total = $countQuery->count();
$ret = [];
$ret['data'] = $ApplyList;
$ret['total'] = $total;
return $this->sendSuccess($ret);
}
//根据资产编号获取资产列表
public function GetOnlyApply()
{
$param = request()->post();
$currPage = empty($param['currPage']) ? 1 : $param['currPage'];
$pageSize = empty($param['pageSize']) ? 10 : $param['pageSize'];
if ($param) {
$ApplyList = db('asset_apply')->alias('a')
->join('asset_state s', 'a.operate_type=s.id', 'left')
->join('asset_info i', 'i.asset_id=a.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->where('i.del_time', null)
->where('i.asset_number', $param['asset_number'])
->where('a.operate_type',$param['operate_type'])
->page($currPage, $pageSize)
->field('i.asset_number, i.asset_type, i.asset_name, s.desp as asset_state_desp,i.asset_price,a.only_count, f.staff_name , a.operate_time , a.apply_id, a.asset_id, a.operate_type,a.apply_staff,a.remarks')
->order('a.operate_time', 'desc')
->select();
$count = db('asset_apply')->alias('a')
->join('asset_state s', 'a.operate_type=s.id', 'left')
->join('asset_info i', 'i.asset_id=a.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->where('i.del_time', null)
->where('i.asset_number', $param['asset_number'])
->where('a.operate_type',$param['operate_type'])
->count();
$ret = [];
$ret['data'] = $ApplyList;
$ret['total'] = $count;
return $this->sendSuccess($ret);
}
}
//获取指定员工申领的资产
public function GetAssetsOfStaff()
{
$param = request()->post();
$ApplyList = db('asset_apply')->alias('a')
->join('asset_state s', 'a.operate_type=s.id', 'left')
->join('asset_info i', 'i.asset_id=a.asset_id', 'left')
->join('hr_staff f', 'f.staff_id=a.apply_staff', 'left')
->where('a.apply_staff', $param['apply_staff'])
->where('i.del_time', null)
->field('i.asset_number, i.asset_name, s.desp as asset_state_desp, f.staff_name , a.operate_time')
->select();
return $this->sendSuccess($ApplyList);
}
public function UpdateScrap()
{
$param = request()->post();
if ($param) {
$ret = db('asset_apply')->where('apply_id', $param['apply_id'])->update(['operate_type' => 4]);
if ($ret) {
$info = db('asset_info')->where('asset_id', $param['asset_id'])->find();
$updateInfo = [];
$updateInfo['asset_count'] = $info['asset_count'] - $param['only_count'];
if ($info['asset_margin'] === 0) {
$updateInfo['asset_margin'] = 0;
}
$ret2 = db('asset_info')->where('asset_id', $param['asset_id'])->update($updateInfo);
if ($ret2) {
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('', '修改失败');
}
} else {
return $this->sendError('', '修改失败');
}
}
}
public function UpdateRemark()
{
$param = request()->post();
if ($param){
$ret = db('asset_apply')->where('apply_id',$param['apply_id'])->update(['remarks'=>$param['remarks']]);
if($ret){
return $this->sendSuccess( '修改成功');
}else{
return $this->sendError('', '修改失败');
}
}
}
}