Files
oms/back/application/api/controller/Story.php
2026-03-18 14:02:51 +08:00

354 lines
12 KiB
PHP

<?php
namespace app\api\controller;
use DateTime;
use think\Config;
use think\Controller;
use think\Db;
use think\Log;
use think\Model;
use think\Request;
use think\cache\driver\Memcache;
use app\api\controller\User;
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 Story extends Common
{
//获取Story列表
public function GetStoryInfoList()
{
$param = request()->post();
if (!isset($param['id'])) {
return $this->sendError('缺少必要参数: id');
}
$opStories = db('work_story_info')->alias('os')
->join('work_story_state ps','os.story_state = ps.id','left')
->where('os.work_id', $param['id'])
->where('os.story_type', $param['story_type'])
->field('os.*, ps.desp as story_state_desp')
->select();
if(!$opStories){
return $this->sendSuccess($opStories);
}
if (empty($opStories)) {
return $this->sendError('未找到相关故事信息');
}
$result = [];
$user = new User();
foreach ($opStories as $opStory) {
$members = explode(',', $opStory['story_member']);
$opStory['story_members'] = '';
$opStory['story_members'] = '';
if (count($members)>0)
{
$ret = db('system_user')->alias('u')
->join('hr_staff s','s.staff_id=u.user_id', 'left')
->where('u.user_type', 1)
->where('u.id', 'in', $members)
->column('s.staff_name');
$opStory['story_members'] = implode(',', $ret); //数组转字符串
}
$opStory['story_managername'] = '';
$ret = db('system_user')->alias('u')
->join('hr_staff s','s.staff_id=u.user_id', 'left')
->where('u.user_type', 1)
->where('u.id', $opStory['story_manager'])
->find();
if (null != $ret)
{
$opStory['story_managername'] = $ret['staff_name'];
}
$result[] = $opStory;
}
return $this->sendSuccess($result);
}
//添加项目Story
public function AddStoryInfo()
{
$param = request()->post();
if($param){
$insert_info = [];
$insert_info['story_name'] = $param['story_name'];
$insert_info['story_intro'] = $param['story_intro'];
$insert_info['story_state'] = $param['story_state'];
$insert_info['story_type'] = $param['story_type'];
$insert_info['work_id'] = $param['work_id'];
$insert_info['story_manager'] = $param['story_manager'];
$insert_info['story_member'] = implode(',', $param['story_member']);
$insert_info['create_time'] = date('Y-m-d H:i:s');
$date = new DateTime($param['plan_close_time']);
$insert_info['plan_close_time'] = $date->format('Y-m-d H:i:s');
$ret = db('work_story_info')->insert($insert_info);
if($ret){
return $this->sendSuccess('添加成功');
}else{
return $this->sendError('','添加失败');
}
}
}
//添加项目Task
/*public function AddStoryTaskInfo()
{
$param = request()->post();
$insert_info = [];
$insert_info['story_id'] = $param['story_id'];
$insert_info['task_name'] = $param['task_name'];
$insert_info['task_intro'] = $param['task_intro'];
$insert_info['create_time'] = $param['create_time'];
$insert_info['task_processor'] = $param['task_processor'];
$insert_info['task_state'] = 1;
$ProjectInfoList = db('project_task')->insert($insert_info);
return $this->sendSuccess($ProjectInfoList);
}*/
//添加项目Task
public function GetStoryTaskInfo()
{
$param = request()->post();
$story_id = $param['story_id'];
$ret = db('work_story_info')->alias('y')
->join('system_user u', 'u.id = y.story_manager', 'left')
->join('work_story_state p', 'p.id =y.story_state', 'left')
->join('hr_staff h', 'h.staff_id =u.user_id', 'left')
->where('y.story_id', $story_id)
->field('y.*, h.staff_name as story_manager_name, p.desp as story_state_desp')
->find();
return $this->sendSuccess($ret);
}
public function upStoryType()
{
$param = request()->post();
if ($param){
$ret = db('work_story_info')->where('story_id',$param['story_id'])->update(['story_state'=>$param['story_type']]);
if ($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('','修改失败');
}
}else{
return $this->sendError('','修改失败');
}
}
/*public function GetTaskTypeList()
{
$ret = db('project_task_state')->select();
return $this->sendSuccess($ret);
}*/
public function upTaskType()
{
$param = request()->post();
if($param){
$ret = db('project_task')->where('task_id',$param['task_id'])->update(['task_state'=>$param['task_type']]);
if($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('','修改失败');
}
}
}
public function GetStoryMemberList()
{
$param = request()->post();
if ($param) {
// 初始化 $array 为空数组
$array = [];
$story_info_member = [];
$story_info = db('work_story_info')
->where('story_id', $param['story_id'])
->find();
if ($story_info) {
$user = new User();
$story_info_member = explode(',', $story_info['story_member']);
foreach ($story_info_member as $memberId) {
$user_info = $user->GetUserInfoByLoginId($memberId);
$item['id'] = $user_info['id'];
$item['staff_name'] = $user_info['name'];
$array[] = $item;
}
}
return $this->sendSuccess($array);
}
}
public function AddStoryTaskInfo()
{
$param = request()->post();
$insert_info = [];
$insert_info['story_id'] = $param['story_id'];
$insert_info['task_intro'] = $param['task_intro'];
$insert_info['create_time'] = date('Y-m-d H:i:s');
$insert_info['task_processor'] = $param['task_processor'];
$insert_info['task_state'] = 1;
$insert_info['plan_start_time'] = $param['plan_start_time'];
$insert_info['plan_close_time'] = $param['plan_close_time'];
$ProjectInfoList = db('work_task_info')->insert($insert_info);
if($ProjectInfoList){
return $this->sendSuccess('添加成功');
}else{
return $this->sendError('','添加失败');
}
}
//获取项目Story列表
public function GetStoryTaskList()
{
$param = request()->post();
if ($param)
{
$opTasks = db('work_task_info')->alias('ot')
->join('work_task_state p', 'p.id =ot.task_state', 'left')
->where('ot.story_id', $param['story_id'])
->field('ot.*, p.desp as task_state_desp')
->select();
$user = new User();
for ($i=0; $i<count($opTasks);$i++)
{
$user_info = $user->GetUserInfoByLoginId($opTasks[$i]['task_processor']);
$opTasks[$i]['task_processor_name'] = $user_info['name'];
}
return $this->sendSuccess($opTasks);
}
}
public function UpdateStoryInfo()
{
$param = request()->param();
if($param)
{
if($param['story_state'] === 4){
$param['real_close_time'] = date('Y-m-d H:i:s');
}
$param['story_member'] = implode(',', $param['story_member']); //数组转字符串
$ret = db('work_story_info')->where('story_id',$param['story_id'])->update($param);
if($ret){
return $this->sendSuccess('修改成功');
}else{
return $this->sendError('','修改失败');
}
}
}
public function DeleteStory()
{
$param = request()->param();
if($param){
$ret = db('work_story_info')->where('story_id',$param['story_id'])->delete();
if($ret){
return $this->sendSuccess('删除成功');
}else{
return $this->sendError('','删除失败');
}
}
}
public function GetStoryStateList()
{
$ret = db('work_story_state')->select();
return $this->sendSuccess($ret);
}
public function GetTaskStateList()
{
$ret = db('work_task_state')->select();
return $this->sendSuccess($ret);
}
public function UpdateTaskState()
{
$param = request()->post();
if ($param) {
$updateData = ['task_state' => $param['task_state']];
if ($param['task_state'] == 4) {
$updateData['real_close_time'] = date('Y-m-d H:i:s');
$task_info = db('work_task_info')->where('task_id', $param['task_id'])->find();
if ($task_info) {
$createTime = $task_info['create_time'];
$createTimestamp = strtotime($createTime);
$currentTimestamp = time();
$timeDifference = $currentTimestamp - $createTimestamp;
$updateData['consuming_time'] = $timeDifference;
}
}
$ret = db('work_task_info')->where('task_id', $param['task_id'])->update($updateData);
if ($ret) {
return $this->sendSuccess('修改成功');
} else {
return $this->sendError('修改失败');
}
}
}
public function UpdateTaskInfo()
{
$param = request()->post();
if($param)
{
$update = [];
$task_info = db('work_task_info')->where('task_id',$param['task_id'])->find();
if($task_info )
{
$update['task_intro'] = $param['task_intro'];
$update['task_processor'] = $param['task_processor'];
if (isset($param['plan_start_time']))
{
$update['plan_start_time'] = $param['plan_start_time'];
$update['plan_close_time'] = $param['plan_close_time'];
}
$ret = db('work_task_info')->where('task_id',$param['task_id'])->update($update);
return $this->sendSuccess('修改成功');
}
else
{
return $this->sendError('','更新失败,任务不存在');
}
}
}
}