424 lines
18 KiB
PHP
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('', '修改失败');
|
|
}
|
|
}
|
|
}
|
|
} |