cqp 3 هفته پیش
والد
کامیت
71cfe42eb8
2فایلهای تغییر یافته به همراه62 افزوده شده و 28 حذف شده
  1. 62 25
      app/Service/ItemService.php
  2. 0 3
      app/Service/WorkFlowService.php

+ 62 - 25
app/Service/ItemService.php

@@ -198,28 +198,38 @@ class ItemService extends Service
         //创建人 直接通过
         if($user['id'] !== $oldData['crt_id']) return true;
 
+        //是否存在审批流
+        if(empty($oldData['review_id'])) return false;
+
         return false;
     }
 
     public function itemFinish($data, $user){
         if(empty($data['id'])) return [false, 'ID不能为空'];
-        $item = Item::where('id',$data['id'])
+        $model = Item::where('id',$data['id'])
             ->where('del_time',0)
             ->first();
-        if(empty($item)) return [false, '项目不存在或已被删除'];
-        $oldData = $item->toArray();
+        if(empty($model)) return [false, '项目不存在或已被删除'];
+        $oldData = $model->toArray();
         if($oldData['state'] == Item::TYPE_THREE) return [false, '项目已完成,请勿重复操作'];
 
-        $bool = $this->changedCommon($user, $oldData);
-        if($bool) {
-
-        }
-
         try {
             DB::beginTransaction();
 
-            $item->state = Item::TYPE_THREE;
-            $item->save();
+            $bool = $this->changedCommon($user, $oldData);
+            if($bool) {
+                // 更新项目状态
+                $model->approval_state = Item::TYPE_MINUS_ONE;
+                $model->save();
+                //触发审批流
+                $this->createWorkFlow(['id' => $data['id'], 'state' => Item::TYPE_THREE], $user, $model->getTable(), $oldData, 2);
+
+                DB::commit();
+                return [true, '更新记录成功,记录草稿,进入审批流程'];
+            }
+
+            $model->state = Item::TYPE_THREE;
+            $model->save();
 
             DB::commit();
         }catch (\Exception $exception){
@@ -867,7 +877,7 @@ class ItemService extends Service
                 list($status, $msg) = $return;
                 return [$status, $msg];
             }else{
-                if($item->review_id && $return) $data['draft'] = true;
+                if($return) $data['draft'] = true;
             }
         }
 
@@ -997,17 +1007,30 @@ class ItemService extends Service
 
     public function itemNodeFinish($data, $user){
         if(empty($data['id'])) return [false, 'ID不能为空'];
-        $item = ItemNode::where('id',$data['id'])
+        $model = ItemNode::where('id',$data['id'])
             ->where('del_time',0)
             ->first();
-        if(empty($item)) return [false, '项目节点不存在或已被删除'];
-        if($item->state == ItemNode::TYPE_THREE) return [false, '项目节点已完成,请勿重复操作'];
+        if(empty($model)) return [false, '项目节点不存在或已被删除'];
+        $oldData = $model->toArray();
+        if($oldData['state'] == ItemNode::TYPE_THREE) return [false, '项目节点已完成,请勿重复操作'];
 
         try {
             DB::beginTransaction();
 
-            $item->state = ItemNode::TYPE_THREE;
-            $item->save();
+            $bool = $this->changedCommon($user, $oldData);
+            if($bool) {
+                // 更新项目状态
+                $model->approval_state = ItemNode::TYPE_MINUS_ONE;
+                $model->save();
+                //触发审批流
+                $this->createWorkFlow(['id' => $data['id'], 'state' => ItemNode::TYPE_THREE], $user, $model->getTable(), $oldData, 2);
+
+                DB::commit();
+                return [true, '更新记录成功,记录草稿,进入审批流程'];
+            }
+
+            $model->state = ItemNode::TYPE_THREE;
+            $model->save();
 
             DB::commit();
         }catch (\Exception $exception){
@@ -1563,7 +1586,7 @@ class ItemService extends Service
                 list($status, $msg) = $return;
                 return [$status, $msg];
             }else{
-                if($item->review_id && $return) $data['draft'] = true;
+                if($return) $data['draft'] = true;
             }
         }
 
@@ -1601,17 +1624,30 @@ class ItemService extends Service
 
     public function itemNodeMissionFinish($data, $user){
         if(empty($data['id'])) return [false, 'ID不能为空'];
-        $item = ItemNodeMission::where('id',$data['id'])
+        $model = ItemNodeMission::where('id',$data['id'])
             ->where('del_time',0)
             ->first();
-        if(empty($item)) return [false, '节点任务不存在或已被删除'];
-        if($item->state == ItemNodeMission::TYPE_THREE) return [false, '节点任务已完成,请勿重复操作'];
+        if(empty($model)) return [false, '任务不存在或已被删除'];
+        $oldData = $model->toArray();
+        if($oldData['state'] == ItemNodeMission::TYPE_THREE) return [false, '任务已完成,请勿重复操作'];
 
         try {
             DB::beginTransaction();
 
-            $item->state = ItemNodeMission::TYPE_THREE;
-            $item->save();
+            $bool = $this->changedCommon($user, $oldData);
+            if($bool) {
+                // 更新项目状态
+                $model->approval_state = ItemNodeMission::TYPE_MINUS_ONE;
+                $model->save();
+                //触发审批流
+                $this->createWorkFlow(['id' => $data['id'], 'state' => ItemNodeMission::TYPE_THREE], $user, $model->getTable(), $oldData, 2);
+
+                DB::commit();
+                return [true, '更新记录成功,记录草稿,进入审批流程'];
+            }
+
+            $model->state = ItemNodeMission::TYPE_THREE;
+            $model->save();
 
             DB::commit();
         }catch (\Exception $exception){
@@ -2269,7 +2305,7 @@ class ItemService extends Service
                 list($status, $msg) = $return;
                 return [$status, $msg];
             }else{
-                if($item->review_id && $return) $data['draft'] = true;
+                if($return) $data['draft'] = true;
             }
         }
 
@@ -2379,10 +2415,11 @@ class ItemService extends Service
      * @param $user 提交人
      * @param $tableName 操作表
      * @param $oldData 原数据
+     * @param $opt_type 操作类型 1 全量编辑  2 单字段编辑
      */
-    public function createWorkFlow($data, $user, $tableName, $oldData){
+    public function createWorkFlow($data, $user, $tableName, $oldData, $opt_type = 1){
         // 创建草稿
-        $this->createDraft($data, $user, $tableName);
+        $this->createDraft($data, $user, $tableName, $opt_type);
         //触发审批
         list($status, $msg) = (new WorkFlowService())->triggerWorkflow($oldData['review_id'],$oldData['id'],$tableName,$user);
         if(! $status) throw new \Exception($msg);

+ 0 - 3
app/Service/WorkFlowService.php

@@ -4,7 +4,6 @@ namespace App\Service;
 
 use App\Model\Draft;
 use App\Model\Employee;
-use App\Model\SysMenu;
 use App\Model\WorkFlowInstances;
 use App\Model\WorkFlowInstancesNodes;
 use App\Model\WorkFlowTemplates;
@@ -172,8 +171,6 @@ class WorkFlowService extends Service
      */
     public function triggerWorkflow($templateID, $documentId, $documentType, $user)
     {
-        if($user['select_tree_type'] == SysMenu::tree_type_zero) return [true, ''];
-
         // 1. 获取对应的审批流模板
         $template = WorkFlowTemplates::where('id', $templateID)
             ->where('top_depart_id', $user['top_depart_id'])