request->param(); return json(VerifyApi::getPublicList($params)); } public function common_check() { $request = $this->request; $params = $request->param(); $id = $params["id"]; $info = VerifyApi::getTalentInfoById($id); if ($info["checkState"] == 2) { return view("talentInfo_base_check", ["info" => $info]); } else { return view("talentInfo_common_check", ["info" => $info]); } } public function cancel_verify() { $params = $this->request->param(); $ids = $params["ids"]; $msg = $params["msg"]; if ($msg == "") { return json(["msg" => "请填写审核不通过的原因"]); } $ids_arr = array_filter(explode(",", $ids)); $counts = 0; foreach ($ids_arr as $id) { $ti = VerifyApi::getOne($id); $data["id"] = $id; if ($ti["checkState"] == TalentState::FST_SUBMIT) { $data["checkState"] = TalentState::BASE_VERIFY_FAIL; TalentLogApi::write(1, $id, [TalentState::BASE_VERIFY_FAIL], $msg, 1); TalentModel::update($data); $counts++; } else if ($ti["checkState"] == TalentState::SCND_SAVE) { $data["checkState"] = TalentState::FST_VERIFY_FAIL; TalentLogApi::write(1, $id, [TalentState::FST_VERIFY_FAIL], $msg, 1); TalentModel::update($data); $counts++; } else { //return json(["msg" => "不在审核范围"]); } } return json(["code" => 200, sprintf("%d个申请已审核失败", $counts)]); } public function base_verify() { return view(); } public function base_verify_list() { $request = $this->request; return json(VerifyApi::getList($request)); } /** * 部门初审 * @auth {{/talentInfo/gotoIndex/-1}} */ public function dept_fst_verify() { return view(); } /** * 初审 * @auth {{/talentInfo/gotoIndex/1}} */ public function fst_verify() { return view(); } /** * 初审-审核 * @auth {{/talentInfo/firstCheck}} */ public function fst_check() { } /** * 初审-修改驳回字段 * @auth {{/talentInfo/updateFieldsAndFiles}} */ public function updateFieldsAndFiles() { } /** * 初审-审核不通过 * @auth {{/talentInfo/setNotPass}} */ public function dis_pass() { } /** * 部门审核 * @auth {{/talentInfo/gotoIndex/2}} */ public function dept_verify() { return view(); } /** * 复审 * @auth {{/talentInfo/gotoIndex/3}} */ public function re_verify() { return view(); } /** * 复审-撤销复核 * @auth {{/talentInfo/cancleThirdCheck}} */ public function cancel_check() { } /** * 预备人才库 * @auth {{/talentInfo/gotoIndex/4}} */ public function pre_list() { return view(); } /** * 预备人才库-公示 * @auth {{/talentInfo/preparePublic}} */ public function pre_public() { } /** * 预备人才库-核查征信 * @auth {{/talentInfo/prepareHczx}} */ public function pre_hczx() { } /** * 预备人才库-征信通过 * @auth {{/talentInfo/hczxPass}} */ public function pre_zx_pass() { } /** * 预备人才库-征信失信 * @auth {{/talentInfo/hczxReject}} */ public function pre_zx_reject() { } /** * 预备人才库-公示再审核 * @auth {{/talentInfo/prepareCheck}} */ public function pre_check() { } /** * 预备人才库-公示通过 * @auth {{/talentInfo/publicPass}} */ public function pre_public_pass() { } /** * 预备人才库-公布 * @auth {{/talentInfo/preparePublish}} */ public function pre_publish() { } /** * 预备人才库-发证 * @auth {{/talentInfo/prepareCertification}} */ public function pre_certification() { } /** * 预备人才库-撤销公布 * @auth {{/talentInfo/prepareCanclePublish}} */ public function pre_cancel_publish() { } /** * 预备人才库-公示预览 * @auth {{/talentInfo/publicExportBefore}} */ public function pre_public_preview() { } /** * 预备人才库-公布预览 * @auth {{/talentInfo/publishExportBefore}} */ public function pre_publish_preview() { } /** * 基本条件审核-提交未保存 * @param \think\Request $request * @param type $talent_info * @return type json */ private function baseCheck(\think\Request $request, $talent_info) { $params = $request->param(); if ($params["checkState"] == 3) { //审核成功 $log_checkState = $checkState = TalentState::BASE_VERIFY_PASS; //初审成功 } else { //审核驳回并记录需要修改的字段和上传文件 $checkState = TalentState::FST_SAVE; //退回提交材料阶段 $log_checkState = TalentState::BASE_REJECT; //日志记录拒绝状态 } $log = TalentLogApi::getLastLog($talent_info["id"], 1); if (!$log) return json(["msg" => "日志数据异常,保存失败"]); if ($log["active"] == 0) { TalentLogApi::rewrite($log["id"], [$log_checkState, $checkState], $params["checkMsg"]); } else { TalentLogApi::write(1, $talent_info["id"], [$log_checkState, $checkState], $params["checkMsg"]); } $data["id"] = $talent_info["id"]; $data["modify_files"] = $params["files"]; $data["modify_fields"] = $params["fields"]; TalentModel::update($data); return json(["code" => 200, "msg" => "保存成功"]); } /** * 基本条件审核-提交审核 * @param type $talent_info * @return type json */ private function baseSubmitCheck($talent_info) { return $this->commonSubmitCheck($talent_info, 1); } /** * 初审-提交未保存 * @param \think\Request $request * @param type $talent_info * @return type json */ private function fstCheck(\think\Request $request, $talent_info) { $params = $request->param(); if ($params["checkState"] == 3) { //审核成功 $log_checkState = $checkState = TalentState::FST_VERIFY_PASS; //初审成功 } else { //审核驳回并记录需要修改的字段和上传文件 $checkState = TalentState::SCND_SAVE; //退回材料编辑状态 $log_checkState = TalentState::FST_VERIFY_REJECT; //日志记录拒绝状态 } $log = TalentLogApi::getLastLog($talent_info["id"], 1); if (!$log) return json(["msg" => "日志数据异常,保存失败"]); if ($log["active"] == 0) { TalentLogApi::rewrite($log["id"], [$log_checkState, $checkState], $params["checkMsg"]); } else { TalentLogApi::write(1, $talent_info["id"], [$log_checkState, $checkState], $params["checkMsg"]); } $data["id"] = $talent_info["id"]; $data["modify_files"] = $params["files"]; $data["modify_fields"] = $params["fields"]; TalentModel::update($data); return json(["code" => 200, "msg" => "保存成功"]); } /** * 初审-提交审核 * @param type $talent_info * @return type json */ private function fstSubmitCheck($talent_info) { $nowProcess = 2; $log = TalentLogApi::getLastLog($talent_info["id"], 1); if (!$log || $log["active"] == 1) return json(["msg" => "日志数据异常,审核失败"]); if (in_array($log["new_state"], [TalentState::BASE_VERIFY_PASS, TalentState::FST_VERIFY_PASS, TalentState::REVERIFY_PASS])) { $data["highProcess"] = $nowProcess > $talent_info["highProcess"] ? $nowProcess : $talent_info["highProcess"]; } $data["id"] = $talent_info["id"]; $data["checkState"] = $log["new_state"]; $data["first_dept_check_time"] = date("Y-m-d H:i:s"); TalentModel::update($data); TalentLogApi::setActive($log["id"], 1); $condition = TalentConditionApi::getOne($talent_info["talent_condition"]); $companyIds = array_filter(explode(",", $condition["companyIds"])); if ($log["new_state"] == TalentState::FST_VERIFY_PASS) { TalentLogApi::writeDeptLogs($talent_info["id"], $companyIds, TalentState::FST_VERIFY_PASS); } return json(["code" => 200, "msg" => "审核成功"]); } /** * 部门审核-提交未保存 * @param \think\Request $request * @param type $talent_info * @return type json */ private function deptCheck(\think\Request $request, $talent_info, $companys) { $params = $request->param(); if ($params["checkState"] == 3) { //审核成功 $log_checkState = TalentState::FST_VERIFY_PASS; //当前状态不变 $checkState = TalentState::DEPT_VERIFY_PASS; //审核成功 } else { //审核驳回并记录需要修改的字段和上传文件 $checkState = TalentState::SCND_SUBMIT; //退回待初审 $log_checkState = TalentState::FST_VERIFY_PASS; //当前状态不变 } $fst_dept_check_time = $talent_info["first_dept_check_time"]; $dept_log = TalentLogApi::getLogByCompanyId($talent_info["id"], $this->user["companyId"], $fst_dept_check_time); if (!$dept_log) return json(["msg" => "未匹配日志,审核失败"]); if ($dept_log["active"] == 1) return json(["msg" => "您的部门已经审核过了"]); $data["id"] = $talent_info["id"]; $data["modify_files"] = $params["files"]; $data["modify_fields"] = $params["fields"]; TalentModel::update($data); //修改日志 TalentLogApi::rewrite($dept_log["id"], [$log_checkState, $checkState], $params["checkMsg"]); return json(["code" => 200, "msg" => "保存成功"]); } /** * 部门审核-提交审核 * @param type $talent_info * @return type json */ private function deptSubmitCheck($talent_info, $companys) { $dept_log = TalentLogApi::getLogByCompanyId($talent_info["id"], $this->user["companyId"], $talent_info["first_dept_check_time"]); $over = 0; //完成度 $error = 0; //失败数 $nowProcess = 3; if (!$dept_log) return json(["msg" => "未匹配日志,审核失败"]); if ($dept_log["active"] == 1) return json(["msg" => "您的部门已经审核过了"]); $over++; if ($dept_log["new_state"] == TalentState::DEPT_VERIFY_REJECT) { $error++; } $logs = TalentLogApi::getListLogByTime($talent_info["id"], $talent_info["first_dept_check_time"]); for ($i = 0; $i < count($logs); $i++) { $over += $logs[$i]["active"] == 1 ? 1 : 0; if ($logs["new_state"] == TalentState::DEPT_VERIFY_REJECT) { $error++; } } if ($over == count($companys)) { //全部已审核 $checkState = TalentState::DEPT_VERIFY_REJECT; if ($error == 0) { $checkState = TalentState::DEPT_VERIFY_PASS; $data["highProcess"] = $nowProcess > $talent_info["highProcess"] ? $nowProcess : $talent_info["highProcess"]; } $data["id"] = $talent_info["id"]; $data["checkState"] = $checkState; $data["first_dept_check_time"] = null; TalentModel::update($data); TalentLogApi::write(1, $talent_info["id"], $checkState, "部门审核结束", 1); } TalentLogApi::setActive($dept_log["id"], 1); return json(["code" => 200, "msg" => "审核成功"]); } /** * 复审-提交未保存 * @param \think\Request $request * @param type $talent_info * @param type json */ private function reCheck(\think\Request $request, $talent_info) { $params = $request->param(); if ($params["checkState"] == 3) { //审核成功 $log_checkState = $checkState = TalentState::REVERIFY_PASS; //复核成功 } else if ($params["checkState"] == 2) { //审核驳回并记录需要修改的字段和上传文件 $checkState = TalentState::SCND_SUBMIT; //退回待初审 $log_checkState = TalentState::REVERIFY_REJECT; //日志记录拒绝状态 } else { $log_checkState = $checkState = TalentState::REVERIFY_FAIL; //审核失败 } $log = TalentLogApi::getLastLog($talent_info["id"], 1); if (!$log) return json(["msg" => "日志数据异常,保存失败"]); if ($log["active"] == 0) { TalentLogApi::rewrite($log["id"], [$log_checkState, $checkState], $params["checkMsg"]); } else { TalentLogApi::write(1, $talent_info["id"], [$log_checkState, $checkState], $params["checkMsg"]); } $data["id"] = $talent_info["id"]; $data["modify_files"] = $params["files"]; $data["modify_fields"] = $params["fields"]; TalentModel::update($data); return json(["code" => 200, "msg" => "保存成功"]); } /** * 复审-提交审核 * @param type $talent_info * @return type json */ private function reSubmitCheck($talent_info) { return $this->commonSubmitCheck($talent_info, 4); } private function commonSubmitCheck($talent_info, $nowProcess) { $log = TalentLogApi::getLastLog($talent_info["id"], 1); if (!$log || $log["active"] == 1) return json(["msg" => "日志数据异常,审核失败"]); if (in_array($log["new_state"], [TalentState::BASE_VERIFY_PASS, TalentState::FST_VERIFY_PASS, TalentState::REVERIFY_PASS])) { $data["highProcess"] = $nowProcess > $talent_info["highProcess"] ? $nowProcess : $talent_info["highProcess"]; } $data["id"] = $talent_info["id"]; $data["checkState"] = $log["new_state"]; TalentModel::update($data); TalentLogApi::setActive($log["id"], 1); return json(["code" => 200, "msg" => "审核成功"]); } public function check() { //公共调度方法 $request = $this->request; $params = $request->param(); $check = $params["checkState"]; $check_msg = trim($params["checkMsg"]); $files = $params["files"]; $fields = $params["fields"]; $id = $params["id"]; $talent_info = VerifyApi::getOne($id); $checkState = $talent_info["checkState"]; if (!$talent_info) { return json(["msg" => "数据错误"]); } if (!$check) { return json(["msg" => "请选择审核状态"]); } if (!$check_msg) { return json(["msg" => "请填写审核说明"]); } if ($checkState == TalentState::FST_SUBMIT) { return $this->baseCheck($request, $talent_info); } else if ($checkState == TalentState::SCND_SUBMIT) { return $this->fstCheck($request, $talent_info); } else if ($checkState == TalentState::FST_VERIFY_PASS) { $condition = TalentConditionApi::getOne($talent_info["talent_condition"]); $companys = array_filter(explode(",", $condition["companyIds"])); if ($companys) { if (!in_array($this->user["companyId"], $companys)) return json(["msg" => "你的部门不在并审部门列表"]); return $this->deptCheck($request, $talent_info, $companys); } else { return $this->reCheck($request, $talent_info); } } else if ($checkState == TalentState::DEPT_VERIFY_PASS) { return $this->reCheck($request, $talent_info); } else { return json(["msg" => "不在审核范围内,保存失败"]); } } public function submitCheck() { //公共调度方法 $id = $this->request->param("id"); $talent_info = VerifyApi::getOne($id); $checkState = $talent_info["checkState"]; if (!$talent_info) { return json(["msg" => "数据错误"]); } if ($checkState == TalentState::FST_SUBMIT) { return $this->baseSubmitCheck($talent_info); } else if ($checkState == TalentState::SCND_SUBMIT) { return $this->fstSubmitCheck($talent_info); } else if ($checkState == TalentState::FST_VERIFY_PASS) { $condition = TalentConditionApi::getOne($talent_info["talent_condition"]); $companys = array_filter(explode(",", $condition["companyIds"])); if ($companys) { if (!in_array($this->user["companyId"], $companys)) return json(["msg" => "你的部门不在并审部门列表"]); return $this->deptSubmitCheck($talent_info, $companys); } else { return $this->reSubmitCheck($talent_info); } } else if ($checkState == TalentState::DEPT_VERIFY_PASS) { return $this->reSubmitCheck($talent_info); } else { return json(["msg" => "不在审核范围内,审核失败"]); } } public function validateIsCheck() { $params = $this->request->param(); $id = $params["id"]; $talent_info = VerifyApi::getOne($id); if ($talent_info) { $checkState = $talent_info["checkState"]; // 0正在填写 1保存未提交 2已提交未审核 3已审核 4驳回 5保存补充材料未提交 6提交补充材料进入初审 7初审通过 8初审驳回 9部门审核通过 10部门审核驳回 11复核通过 12复核驳回 13复核失败 $process = 0; if (in_array($checkState, [2, 6, 7, 9])) { switch ($checkState) { case 2: $enterprise = \app\common\model\Enterprise::findOrEmpty($talent_info["enterprise_id"]); $fields = DictApi::getTalentFields(1); $field_tmp = []; foreach ($fields as $key => $field) { $field_tmp[] = ["key" => $key, "value" => $field]; } $where[] = ["project", "=", 1]; $where[] = ["step", "=", 1]; $where[] = ["active", "=", 1]; $where[] = ["type", "=", $enterprise["type"]]; $files = \think\facade\Db::table("new_common_filetype")->where($where)->select(); $process = 1; break; case 6: $process = 2; break; case 7: $fields = DictApi::getTalentFields(3); $process = 3; break; case 9: $fields = DictApi::getTalentFields(3); $process = 4; break; } if ($checkState != 2) { $enterprise = \app\common\model\Enterprise::findOrEmpty($talent_info["enterprise_id"]); $fields = DictApi::getTalentFields(2); $field_tmp = []; foreach ($fields as $key => $field) { $field_tmp[] = ["key" => $key, "value" => $field]; } $where = []; $whr = []; $condition = TalentConditionApi::getOne($talent_info["talent_condition"]); $where[] = ["project", "=", 1]; $where[] = ["step", "=", 2]; $where[] = ["active", "=", 1]; $where[] = ["type", "=", $enterprise["type"]]; if ($condition && $condition["bindFileTypes"]) { $whr[] = ["id", "in", explode(",", $condition["bindFileTypes"])]; $files = \think\facade\Db::table("new_common_filetype")->whereOr([$where, $whr])->select(); } else { $files = \think\facade\Db::table("new_common_filetype")->where($where)->select(); } } $talent_info["files"] = array_filter(explode(",", $talent_info["modify_files"])); $talent_info["fields"] = array_filter(explode(",", $talent_info["modify_fields"])); return json(["code" => 200, "obj" => ["process" => $process, "talentInfo" => $talent_info, "fieldList" => $field_tmp, "fileList" => $files]]); } else { return json(["msg" => "该申报不在审核范围内,无法审核"]); } } } public function talentInfoExport() { $title = ["t1", "t2"]; $data[] = [1, 2]; $data[] = [3, 4]; export($title, $data); } }