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

520 lines
19 KiB
PHP

<?php
namespace app\api\controller;
use app\api\controller\User;
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 Develop extends Common
{
//获取研发项目列表
public function GetProjectList()
{
$param = request()->post();
$ret = db('develop_project')->where('project_state', $param['state'])->select();
return $this->sendSuccess($ret);
}
public function GetProjectInfo()
{
$param = request()->post();
$ProjectInfo = db('develop_project')->where('project_id', $param['project_id'])->find();
$members = explode(',', $ProjectInfo['project_members']);
$ProjectInfo['project_members']='';
if (count($members)>0)
{
$ret = db('hr_staff')->where('staff_id', 'in', $members)
->column('staff_name');
$ProjectInfo['project_members'] = implode(',', $ret); //数组转字符串
}
$ProjectInfo['project_manager'] = '';
$ret = db('hr_staff')->where('staff_id', $ProjectInfo['project_manager'])
->find();
if (null != $ret)
{
$ProjectInfo['project_manager'] = $ret['staff_name'];
}
return $this->sendSuccess($ProjectInfo);
}
public function GetProjectMaterialsList()
{
$param = request()->post();
// if ( $param['materials_type'] > 1)
// {
// $param['issue_id'] = 0;
// }
if(is_array($param['materials_type'])){
$MaterialsInfoList = db('develop_materials_info')
->where('project_id', $param['project_id'])
->where('issue_id', $param['issue_id'])
->where(function ($query) use ($param) {
$query->whereOr('materials_type', $param['materials_type'][0])
->whereOr('materials_type',$param['materials_type'][1]);
})
->order('create_time desc')
->select();
}else{
$MaterialsInfoList = db('develop_materials_info')
->where('project_id', $param['project_id'])
->where('issue_id', $param['issue_id'])
->where('materials_type', $param['materials_type'])
->order('create_time desc')
->select();
}
return $this->sendSuccess($MaterialsInfoList);
}
public function GetIssueTypeList()
{
$ret = db('develop_issue_state')->select();
return $this->sendSuccess($ret);
}
public function editIssueType()
{
$param = request()->post();
if($param){
if($param['project_types'] === 1){
$update = [];
if($param['issue_state'] === 11){
$issues_info = db('project_issues')->where('issue_id',$param['issue_id'])->find();
if($issues_info){
$createTime = $issues_info['create_time'];
$createTimestamp = strtotime($createTime);
$currentTimestamp = time();
$timeDifference = $currentTimestamp - $createTimestamp;
$update['consuming_time'] = $timeDifference;
}
}
if($param['issue_state'] === 9){
$issues_info = db('project_issues')->where('issue_id',$param['issue_id'])->find();
if($issues_info){
$update['issue_processor'] = $issues_info['issue_creator'];
}
}
$update['issue_id'] = $param['issue_id'];
$update['issue_state'] = $param['issue_state'];
$ret = db('project_issues')->where('issue_id',$param['issue_id'])->update($update);
if($ret){
return $this->sendSuccess("修改成功");
}else{
return $this->sendError('',"修改失败");
}
}else if ($param['project_types'] === 2){
$update = [];
$update['issue_id'] = $param['issue_id'];
$update['issue_state'] = $param['issue_state'];
$ret = db('develop_issues')->where('issue_id',$param['issue_id'])->update($update);
if($ret){
return $this->sendSuccess("修改成功");
}else{
return $this->sendError('',"修改失败");
}
}
}
return $this->sendError('',"失败");
}
public function GetProjectIssueList()
{
$param = request()->post();
$user = new User();
$where = [];
$where['i.project_id'] = $param['project_id'];
if (isset($param['issue_state']))
{
if (1 == $param['issue_state']) //小于10的为未解决
{
$where['i.issue_state'] = array('<', 10);
}
else if (2 == $param['issue_state']) //大于等于10的为已关闭
{
$where['i.issue_state'] = array('>=', 10);
}
}
$staff_list = db('hr_staff')->select();
$ret = db('develop_issues')->alias('i')
->join('develop_issue_state s', 's.id =i.issue_state', 'left')
->where($where)
->field('i.*, s.desp as issue_state_name')
->select();
for ($i=0; $i<count($ret); $i++)
{
for ($j=0; $j<count($staff_list); $j++)
{
$create_user = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']);
if ($create_user != null)
{
$ret[$i]['issue_creator'] = $create_user['id'];
$ret[$i]['issue_creator_name'] = $create_user['name'];
}
$processor_user = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']);
if ($processor_user != null)
{
$ret[$i]['issue_processor'] = $processor_user['id'];
$ret[$i]['issue_processor_name'] = $processor_user['name'];
}
}
}
return $this->sendSuccess($ret);
}
//添加项目资料
public function AddProjectMaterialsInfo()
{
$param = request()->post();
$insert_info = [];
$insert_info['project_id'] = $param['project_id'];
$insert_info['materials_intro'] = $param['materials_intro'];
$insert_info['materials_url'] = $param['materials_url'];
$insert_info['create_time'] = $param['create_time'];
$insert_info['materials_type'] = $param['materials_type'];
db('develop_materials_info')->insert($insert_info);
}
//编辑项目资料
public function EditProjectMaterialsInfo()
{
$param = request()->post();
if($param != null){
$update = [];
$update['materials_intro'] = $param['materials_intro'];
if ($param['materials_url'] != '')
{
$update['materials_url'] = $param['materials_url'];
}
$update['create_time'] = $param['create_time'];
$ret = db('develop_materials_info')->where('materials_id',$param['materials_id'])->update($update);
if($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('修改失败');
}
}
}
public function GetCutomerMemberInfo()
{
$param = request()->post();
$MemberInfo = db('project_info')->alias('i')
->join('customer_info c', 'c.customer_id =i.customer_id', 'left')
->join('customer_visitor v', 'v.visitorid =i.c.customer_id', 'left')
->where('i.project_id', $param['project_id'])
->field('v.*')
->select();
return $this->sendSuccess($MemberInfo);
//$param['project_id']
}
/*public function AddProjectInfo()
{
$param = request()->post();
$ret = db('project_type')->where('type_id', $param['project_type'])->field('type_id,super_type_id')->find();
if ($ret != null) {
$insert_info = [];
$insert_info['project_number'] = $param['project_number'];
$insert_info['project_name'] = $param['project_name'];
$insert_info['create_time'] = $param['create_time'];
$insert_info['project_price'] = $param['project_price'];
$insert_info['project_type'] = $param['project_type']; //合同父类型ID
$insert_info['project_category']= $param['project_category'];
if($param['project_url'] == ''){
$insert_info['project_url'] = '';
}else{
$insert_info['project_url'] = $param['project_url'];
}
db('project_info')->insert($insert_info);
}
}*/
public function AddProjectInfo()
{
$param = request()->post();
$insert_info = [];
$insert_info['project_number'] = $param['project_number'];
$insert_info['project_name'] = $param['project_name'];
$insert_info['create_time'] = $param['create_time'];
$insert_info['customer_id'] = $param['customer_id'];
$insert_info['project_intro'] = $param['project_intro'];
$insert_info['project_state'] = $param['project_state'];
db('project_info')->insert($insert_info);
}
public function EditProjectInfo()
{
$param = request()->post();
if($param != null){
$update = [];
$update['project_number'] = $param['project_number'];
$update['project_name'] = $param['project_name'];
$update['create_time'] = $param['create_time'];
$update['project_intro'] = $param['project_intro'];
$update['project_state'] = $param['project_state'];
$ret = db('project_info')->where('project_id',$param['project_id'])->update($update);
if($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('修改失败');
}
}
}
public function GetProjectStateList()
{
$Ret = db('project_state')->select();
return $this->sendSuccess($Ret);
}
public function updateProjectInfo()
{
$param = request()->post();
if($param != null){
$update = [];
$update['project_name'] = $param['project_name'];
$update['project_category'] = $param['project_category'];
$update['project_number'] = $param['project_number'];
if($param['project_url'] != '')
{
$update['project_url'] = $param['project_url'];
}
$update['project_price'] = $param['project_price'];
$update['create_time'] = $param['create_time'];
$ret = db('project_info')->where('project_id',$param['project_id'])->update($update);
if($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('修改失败');
}
}
}
public function StartProject()
{
$param = request()->post();
if($param != null){
$update = [];
$update['involve_members'] = implode(',', $param['members']); //数组转字符串
//$update['involve_manager'] = $param['manager'];
$update['project_state'] = 2;
//$update['tech_protocol'] = $param['tech_protocol'];
//$update['create_time'] = $param['create_time'];
$ret = db('project_info')->where('project_id',$param['project_id'])->update($update);
if($ret){
return $this->sendSuccess('启动成功');
}else{
return $this->sendError('启动失败');
}
}
}
public function RemoveProjectMember()
{
$param = request()->post();
$project_id = $param['project_id'];
$remove_member = $param['staff_id'].'';
$ret = db('project_info')->where('project_id', $project_id)->find();
$member_arr = explode(',', $ret['involve_members']);
// 使用array_filter()函数删除指定值
$resultArray = array_filter($member_arr, function ($value) use ($remove_member) {
return $value !== $remove_member;
});
$update['involve_members'] = implode(',', $resultArray);
$ret = db('project_info')->where('project_id',$project_id)->update($update);
return $this->sendSuccess('移除成功');
}
public function UpdateProjectMember()
{
$param = request()->post();
$update['involve_members'] = implode(',', $param['involve_members']); //数组转字符串
$ret = db('project_info')->where('project_id',$param['project_id'])->update($update);
return $this->sendSuccess('更新成功');
}
public function UpdateProjectManager()
{
$param = request()->post();
$update['involve_manager'] = $param['involve_manager']; //数组转字符串
$ret = db('project_info')->where('project_id',$param['project_id'])->update($update);
return $this->sendSuccess('更新成功');
}
//添加项目外部成员
public function AddProjectExternalMember()
{
$param = request()->post();
$insert = [];
$insert['project_id'] = $param['project_id'];
$insert['contacts_type'] = $param['contacts_type'];
$insert['contacts_customer'] = $param['contacts_customer'];
$insert['contacts_id'] = $param['contacts_id'];
db('project_contacts')->insert($insert);
return $this->sendSuccess('添加成功');
}
//获取项目外部成员
public function GetProjectExternalMember()
{
$param = request()->post();
$member = [];
$ret = db('project_contacts')->where('project_id', $param['project_id'])->select();
for ($i=0; $i<count($ret); $i++)
{
$find = null;
//客户
if ($ret[$i]['contacts_type'] == 2)
{
$find = db('customer_info')->alias('i')
->join('customer_contacts c', 'c.customer_id =i.customer_id', 'left')
->where('c.visitor_id', $ret[$i]['contacts_id'])
->field('c.visitor_name, c.visitor_idcard, c.visitor_phone, i.customer_name as company_name')
->find();
}
//供应商
else if ($ret[$i]['contacts_type'] == 3)
{
$find = db('supplier_info')->alias('i')
->join('supplier_contacts c', 'c.customer_id =i.supplier_id', 'left')
->where('c.visitor_id', $ret[$i]['contacts_id'])
->field('c.visitor_name, c.visitor_idcard, c.visitor_phone, i.supplier_name as company_name')
->find();
}
if ($find != null)
{
$member[] = $find;
}
}
return $this->sendSuccess($member);
}
//添加项目资料
public function GetIssueListByStaff()
{
$ret = db('project_issues')->select();
return $this->sendSuccess($ret);
}
public function GetProjectIssueMyHome()
{
$param = request()->post();
$user = new User();
$currPage = empty($param['currPage']) ? 1 : $param['currPage'];
$pageSize = empty($param['pageSize']) ? 10 : $param['pageSize'];
$ret_issues = db('develop_issues')->alias('di')
->join('develop_project_state dps','di.issue_state = dps.id')
->where('di.issue_creator',$param['issue_creator'])
->where('di.issue_state','<',10)
->whereOr('di.issue_processor',$param['issue_creator'])
->page($currPage, $pageSize)
->order('di.create_time', 'desc')
->field('di.*,dps.desp ,2 as project_types')
->select();
$count = db('develop_issues')
->where('issue_creator',$param['issue_creator'])
->where('issue_state','<',10)
->whereOr('issue_processor',$param['issue_creator'])
->count();
for ($i = 0; $i < count($ret_issues); $i++) {
$processorInfo = $user->GetUserInfoByLoginId($ret_issues[$i]['issue_processor']);
if ($processorInfo !== null && isset($processorInfo['name'])) {
$ret_issues[$i]['issue_processor_name'] = $processorInfo['name'];
} else {
$ret_issues[$i]['issue_processor_name'] = '未分配';
}
$creatorInfo = $user->GetUserInfoByLoginId($ret_issues[$i]['issue_creator']);
if ($creatorInfo !== null && isset($creatorInfo['name'])) {
$ret_issues[$i]['issue_creator_name'] = $creatorInfo['name'];
} else {
$ret_issues[$i]['issue_creator_name'] = '未分配';
}
}
$ret = [];
$ret['data'] = $ret_issues;
$ret['total'] = $count;
return $this->sendSuccess($ret);
}
public function AddDevelopMaterialsInfo()
{
$param = request()->post();
if($param){
$MaterTypeInfo = db('develop_materials_type')->where('type_id',$param['materials_type'])->field('type_name')->find();
$insertMaterInfo = [];
$insertMaterInfo['project_id'] = $param['project_id'];
$insertMaterInfo['issue_id'] = $param['issue_id'];
$insertMaterInfo['materials_type'] = $param['materials_type'];
$insertMaterInfo['materials_intro'] = $MaterTypeInfo['type_name'];
$insertMaterInfo['materials_url'] = $param['materials_url'];
$insertMaterInfo['materials_des'] = $param['materials_des'];
$insertMaterInfo['create_time'] = date('Y-m-d H:i:s',time());
if(db('develop_materials_info')->insert($insertMaterInfo)){
return $this->sendSuccess('添加成功');
}else{
return $this->sendError('','添加失败');
}
}
}
}