瀏覽代碼

增加撤销工作单位变更审核通过处理入口

sugangqiang 1 年之前
父節點
當前提交
396f8a4eb9
共有 3 個文件被更改,包括 123 次插入2 次删除
  1. 10 0
      app/admin/controller/System.php
  2. 2 2
      app/job/Enterprise.php
  3. 111 0
      app/job/Recovery.php

+ 10 - 0
app/admin/controller/System.php

@@ -41,6 +41,16 @@ class System extends AdminController {
         }
     }
 
+    public function work_unit_change_recovery() {
+        $id = $this->request["id"];
+        if ($id) {
+            queue("app\job\Recovery", ["id" => $id, "type" => 1]);
+            echo "【撤销工作变更审核通过】任务已加入处理队列";
+            exit();
+        }
+        echo "请传/admin/system/work_unit_change_recovery/id/new_talent_info.id";
+    }
+
     /**
      * 恢复自动审核失败
      */

+ 2 - 2
app/job/Enterprise.php

@@ -93,14 +93,14 @@ class Enterprise {
                             unset($where);
                             unset($upd);
                             $where[] = ["oldEnterpriseId", "=", $oldEpId];
-                            $upd["oldEnterpriseId"] = $oldEpId;
+                            $upd["oldEnterpriseId"] = $id;
                             Db::table("un_talent_workunit_change")->where($where)->save($upd);
 
                             //工作变更情况2 作为变更后时候
                             unset($where);
                             unset($upd);
                             $where[] = ["newEnterpriseId", "=", $oldEpId];
-                            $upd["newEnterpriseId"] = $oldEpId;
+                            $upd["newEnterpriseId"] = $id;
                             $upd["type"] = $ep["type"];
                             Db::table("un_talent_workunit_change")->where($where)->save($upd);
 

+ 111 - 0
app/job/Recovery.php

@@ -0,0 +1,111 @@
+<?php
+
+namespace app\job;
+
+use think\queue\Job;
+use think\facade\Log;
+use think\facade\Db;
+use app\common\api\ChuanglanSmsApi;
+use app\common\model\MessageRecord;
+use app\common\api\TalentLogApi;
+use app\common\api\TalentConditionApi;
+use app\common\api\TalentState;
+use app\enterprise\model\Talent as TalentModel;
+use app\common\state\ProjectState;
+use app\common\state\CommonConst;
+use app\common\state\MainState;
+
+/**
+ * Description of Recovery
+ *
+ * @author sgq
+ */
+class Recovery {
+
+    public function fire(Job $job, $data) {
+        if ($this->deal($data)) {
+            $job->delete();
+            return true;
+        }
+        if ($job->attempts() >= 3) {
+            $job->delete();
+            return false;
+        }
+        $job->release(10); //10秒后重试
+    }
+
+    /**
+     * 处理业务逻辑
+     * @param type $data
+     * @return bool
+     */
+    public function deal($data): bool {
+        switch ($data["type"]) {
+            case 1:
+                //撤销工作单位变更审核通过
+                $talentId = $data["id"];
+                $where = [];
+                $where[] = ["talentId", "=", $talentId];
+                $where[] = ["checkState", "=", 3]; //通过状态才可以撤销
+                $changeRecord = Db::table("un_talent_workunit_change")->where($where)->find();
+                if ($changeRecord) {
+                    Db::startTrans();
+                    try {
+                        unset($where);
+                        $where[] = ["type", "=", ProjectState::WORKCHANGE];
+                        $where[] = ["mainId", "=", $changeRecord["id"]];
+                        $where[] = ["state", "=", 2];
+                        $rejectLog = Db::table("new_talent_checklog")->where($where)->find();
+                        $oldCheckState = $rejectLog ? 9 : 1; //推算之前的状态
+                        $checkMsg = "因审核有误,退回至待审核";
+
+                        $updWorkChange["id"] = $changeRecord["id"];
+                        $updWorkChange["checkState"] = $oldCheckState;
+                        $updWorkChange["checkMsg"] = $checkMsg;
+                        $updWorkChange["passTime"] = null;
+                        Db::table("un_talent_workunit_change")->save($updWorkChange);
+
+                        $log["id"] = getStringId();
+                        $log["active"] = 1;
+                        $log["state"] = 1;
+                        $log["step"] = 11;
+                        $log["stateChange"] = MainState::getStateName($changeRecord["checkState"]) . "->" . MainState::getStateName($oldCheckState);
+                        $log["type"] = ProjectState::WORKCHANGE;
+                        $log["mainId"] = $changeRecord["id"];
+                        $log["description"] = $checkMsg;
+                        $log["createUser"] = "系统";
+                        $log["createTime"] = date("Y-m-d H:i:s");
+                        Db::table("new_talent_checklog")->insert($log);
+
+                        //修改人才库信息
+                        $upd["id"] = $talentId;
+                        $upd["enterprise_id"] = $changeRecord["oldEnterpriseId"];
+                        $upd["labor_contract_rangetime"] = $changeRecord["oldStartTime"] . " - " . $changeRecord["oldEndTime"];
+                        $upd["cur_entry_time"] = $changeRecord["oldAnyTime"];
+                        $upd["active"] = 2;
+                        $upd["cur_quit_time"] = $changeRecord["quitTime"];
+                        $upd["position"] = $changeRecord["oldPost"];
+                        Db::table("new_talent_info")->save($upd);
+
+                        $talentLog["id"] = getStringId();
+                        $talentLog["active"] = 1;
+                        $talentLog["step"] = 21;
+                        $talentLog["type"] = ProjectState::TALENT;
+                        $talentLog["mainId"] = $talentId;
+                        $talentLog["description"] = "因审核有误,该工作单位变更退回至待审核。";
+                        $talentLog["createUser"] = "系统";
+                        $talentLog["createTime"] = date("Y-m-d H:i:s");
+                        Db::table("new_talent_checklog")->insert($talentLog);
+                        Db::commit();
+                        return true;
+                    } catch (\Exception $e) {
+                        Db::rollback();
+                        Log::write($e->getMessage(), "error");
+                    }
+                }
+                break;
+        }
+        return false;
+    }
+
+}