cqp 4 тижнів тому
батько
коміт
e3d749c79f
3 змінених файлів з 25 додано та 10 видалено
  1. 2 2
      app/Model/Item.php
  2. 18 6
      app/Service/ItemService.php
  3. 5 2
      app/Service/WorkFlowService.php

+ 2 - 2
app/Model/Item.php

@@ -14,11 +14,11 @@ class Item extends DataScopeBaseModel
     const table_column = "item_employee";
     const table_id_column = "item_id";
 
-    public static $field = ['title','id','code','start_time','end_time','mark','crt_id','crt_time','state','budget','charge_id','item_attribute','field','is_review_required','review_id','priority_id'];
+    public static $field = ['title','id','code','start_time','end_time','mark','crt_id','crt_time','state','budget','charge_id','item_attribute','field','is_review_required','review_id','priority_id', 'approval_state'];
     public static $report_field_1 = ['title','id','code','start_time','end_time','mark','budget','field'];
 
-    const TYPE_MINUS_TWO = -2;
     const TYPE_MINUS_ONE = -1;
+    const TYPE_MINUS_TWO = -2;
     const TYPE_ONE = 1;
     const TYPE_TWO = 2;
     const TYPE_THREE = 3;

+ 18 - 6
app/Service/ItemService.php

@@ -232,7 +232,7 @@ class ItemService extends Service
                 // 创建草稿
                 $this->createDraft($origin_data, $user, $tableName);
                 // 更新项目状态
-                $model->state = Item::TYPE_MINUS_ONE;
+                $model->approval_state = Item::TYPE_MINUS_ONE;
                 $model->save();
                 //触发审批
                 list($status, $msg) = (new WorkFlowService())->triggerWorkflow($data['review_id'], $model->id,$tableName,$user);
@@ -564,8 +564,8 @@ class ItemService extends Service
 
         // 4. 状态校验:统一判断是否已完成
         // 建议在 Model 中统一定义 TYPE_THREE 的常量名或方法
-        if ($target->state == $cfg['model']::TYPE_THREE) {
-            return [false, "{$cfg['name']}已完成"];
+        if ($target->approval_state == $cfg['model']::TYPE_MINUS_ONE) {
+            return [false, "{$cfg['name']}处于审核中"];
         }
 
         // 5. 关联依赖校验
@@ -622,6 +622,7 @@ class ItemService extends Service
         $customer['charge_name'] = Employee::where('id',$customer['charge_id'])->value('title');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
         $customer['state_title'] = Item::State_Type[$customer['state']] ?? '';
+        $customer['approval_state_title'] = Item::State_Type[$customer['approval_state']] ?? '';
         $customer['priority_title'] = Tag::where('id', $customer['priority_id'])->value('title') ?? "";
         $customer['review_title'] = WorkFlowTemplates::where('id', $customer['review_id'])->value('title') ?? "";
 
@@ -663,6 +664,7 @@ class ItemService extends Service
             $list[$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $list[$key]['charge_name'] = $emp[$value['charge_id']] ?? '';
             $list[$key]['state_title'] = ItemNode::State_Type[$value['state']] ?? "";
+            $list[$key]['approval_state_title'] = Item::State_Type[$value['approval_state']] ?? '';
             $priority_tmp = $tag[$value['priority_id']] ?? [];
             $list[$key]['priority_title'] = $priority_tmp['title'] ?? '';
             $list[$key]['priority_code'] = $priority_tmp['code'] ?? '';
@@ -740,6 +742,7 @@ class ItemService extends Service
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
         if(! empty($data['state'])) $model->where('state', $data['state']);
+        if(! empty($data['approval_state'])) $model->where('approval_state', $data['approval_state']);
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
             $model->where('crt_time','>=',$return[0]);
@@ -761,6 +764,7 @@ class ItemService extends Service
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
         if(! empty($data['state'])) $model->where('state', $data['state']);
+        if(! empty($data['approval_state'])) $model->where('approval_state', $data['approval_state']);
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
             $model->where('crt_time','>=',$return[0]);
@@ -841,7 +845,7 @@ class ItemService extends Service
                 ->where('del_time',0)
                 ->exists();
 
-            if($user['select_tree_type'] && $item->state == Item::TYPE_MINUS_ONE) return [false, '审核中不允许编辑'];
+            if($user['select_tree_type'] && $item->approval_state == Item::TYPE_MINUS_ONE) return [false, '审核中不允许编辑'];
         }
         if($bool) return [false, '项目编码已存在'];
 
@@ -870,6 +874,7 @@ class ItemService extends Service
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['charge_name'] = $emp[$value['charge_id']] ?? '';
             $data['data'][$key]['state_title'] = Item::State_Type[$value['state']] ?? "";
+            $data['data'][$key]['approval_state_title'] = Item::State_Type[$value['approval_state']] ?? "";
         }
 
         return $data;
@@ -1245,6 +1250,7 @@ class ItemService extends Service
         $customer['charge_name'] = Employee::where('id',$customer['charge_id'])->value('title');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
         $customer['state_title'] = ItemNode::State_Type[$customer['state']] ?? '';
+        $customer['approval_state_title'] = ItemNode::State_Type[$customer['approval_state']] ?? '';
 
         $tag = (new TagService())->getTagMap(array_unique([$customer['priority_id'], $customer['node_id'] ]));
         $priority_tmp = $tag[$customer['priority_id']] ?? [];
@@ -1296,6 +1302,7 @@ class ItemService extends Service
             $list[$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $list[$key]['charge_name'] = $emp[$value['charge_id']] ?? '';
             $list[$key]['state_title'] = ItemNodeMission::State_Type[$value['state']] ?? "";
+            $list[$key]['approval_state_title'] = ItemNodeMission::State_Type[$value['approval_state']] ?? "";
             $priority_tmp = $tag[$value['priority_id']] ?? [];
             $list[$key]['priority_title'] = $priority_tmp['title'] ?? '';
             $list[$key]['priority_code'] = $priority_tmp['code'] ?? '';
@@ -1373,6 +1380,7 @@ class ItemService extends Service
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
         if(isset($data['state'])) $model->where('state', $data['state']);
+        if(isset($data['approval_stateapproval_state'])) $model->where('approval_state', $data['approval_state']);
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
             $model->where('crt_time','>=',$return[0]);
@@ -1471,6 +1479,7 @@ class ItemService extends Service
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['charge_name'] = $emp[$value['charge_id']] ?? '';
             $data['data'][$key]['state_title'] = ItemNode::State_Type[$value['state']] ?? "";
+            $data['data'][$key]['approval_state_title'] = ItemNode::State_Type[$value['approval_state']] ?? "";
             $priority_tmp = $tag[$value['priority_id']] ?? [];
             $data['data'][$key]['priority_title'] = $priority_tmp['title'] ?? '';
             $data['data'][$key]['priority_code'] = $priority_tmp['code'] ?? '';
@@ -1753,6 +1762,7 @@ class ItemService extends Service
         $customer['charge_name'] = Employee::where('id',$customer['charge_id'])->value('title');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
         $customer['state_title'] = ItemNodeMission::State_Type[$customer['state']] ?? '';
+        $customer['approval_state_title'] = ItemNodeMission::State_Type[$customer['approval_state']] ?? '';
 
         $tag = (new TagService())->getTagMap(array_unique([$customer['priority_id'], $customer['mission_id'] ]));
         $priority_tmp = $tag[$customer['priority_id']] ?? [];
@@ -1780,7 +1790,7 @@ class ItemService extends Service
             ->where('id',$data['id'])
             ->first();
         if(empty($model)) return [false,'项目节点任务不存在或已被删除'];
-        if($model->state == ItemNodeMission::TYPE_THREE || $model->state == ItemNodeMission::TYPE_MINUS_ONE) return [false, '任务状态处在不允许更新的状态'];
+        if($model->approval_state == ItemNodeMission::TYPE_MINUS_ONE) return [false, '任务审核中'];
 
         try {
             DB::beginTransaction();
@@ -2001,6 +2011,7 @@ class ItemService extends Service
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
         if(isset($data['state'])) $model->where('state', $data['state']);
+        if(isset($data['approval_state'])) $model->where('approval_state', $data['approval_state']);
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
             $model->where('crt_time','>=',$return[0]);
@@ -2136,7 +2147,8 @@ class ItemService extends Service
             $data['data'][$key]['end_time'] = $value['end_time'] ? date('Y-m-d',$value['end_time']) : '';
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['charge_name'] = $emp[$value['charge_id']] ?? '';
-            $data['data'][$key]['state_title'] = ItemNode::State_Type[$value['state']] ?? "";
+            $data['data'][$key]['state_title'] = ItemNodeMission::State_Type[$value['state']] ?? "";
+            $data['data'][$key]['approval_state_title'] = ItemNodeMission::State_Type[$value['approval_state']] ?? "";
             $priority_tmp = $tag[$value['priority_id']] ?? [];
             $data['data'][$key]['priority_title'] = $priority_tmp['title'] ?? '';
             $data['data'][$key]['priority_code'] = $priority_tmp['code'] ?? '';

+ 5 - 2
app/Service/WorkFlowService.php

@@ -251,7 +251,8 @@ class WorkFlowService extends Service
         $topDepartId = $user['top_depart_id'];
 
         // 1. 构造查询对象
-        $model = WorkFlowInstancesNodes::where('top_depart_id', $topDepartId)
+        $model = WorkFlowInstancesNodes::where('del_time',0)
+            ->where('top_depart_id', $topDepartId)
             ->where('status', 1) // 1 = 审批中
             ->whereRaw('JSON_CONTAINS(assignees, JSON_OBJECT("id", ?))', [(int)$userId])
             // 如果我是“或签”,只要我还没审,节点状态就是1,我能看到;
@@ -318,7 +319,8 @@ class WorkFlowService extends Service
         $status = $data['status'] ?? 2;
         $remark = $data['mark'] ?? '';
 
-        $currentNode = WorkFlowInstancesNodes::where('id', $nodeInstanceId)
+        $currentNode = WorkFlowInstancesNodes::where('del_time',0)
+            ->where('id', $nodeInstanceId)
             ->where('top_depart_id', $user['top_depart_id'])
             ->first();
 
@@ -401,6 +403,7 @@ class WorkFlowService extends Service
     {
         $nextNode = WorkFlowInstancesNodes::where('instance_id', $instanceId)
             ->where('node_key', $nextNodeKey)
+            ->where('del_time',0)
             ->first();
 
         if ($nextNode) {