1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117 |
- <?php
- namespace app\admin\controller;
- use app\admin\common\AdminController;
- use app\common\api\VerifyApi;
- use app\common\api\TalentLogApi;
- use app\common\api\TalentState;
- use app\enterprise\model\Talent as TalentModel;
- use app\common\api\TalentConditionApi;
- use app\common\api\DictApi;
- use app\common\api\EnterpriseApi;
- use think\facade\Db;
- /**
- * Description of Talent
- *
- * @author sgq
- */
- class Talent extends AdminController {
- public function common_check() {
- $request = $this->request;
- $params = $request->param();
- $id = $params["id"];
- $info = VerifyApi::getTalentInfoById($id);
- if (in_array($info["checkState"], [-1, 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();
- }
- public function selectNeedCheckData() {
- $params = $this->request->param();
- return json(["code" => 200, "obj" => VerifyApi::getPublicList($params)]);
- }
- /**
- * 预备人才库-核查征信
- * @auth {{/talentInfo/prepareHczx}}
- */
- public function prepareHczx() {
- $ids = $this->request->param("ids");
- $ids_arr = array_filter(explode(",", $ids));
- if (!$ids_arr) {
- $res = ["code" => 500, "msg" => "没有选择导出的名单"];
- echo sprintf("<script>TalentInfo.callBack(%s);</script>", json_encode($res));
- }
- $where[] = ["ti.id", "in", $ids_arr];
- $list = TalentModel::alias("ti")->leftJoin("new_enterprise e", "e.id=ti.enterprise_id")->field("ti.name,ti.card_type,ti.card_number,e.name as enterpriseName,e.description")->where($where)->select();
- if (!$list) {
- $res = ["code" => 500, "msg" => "没有可以导出的内容"];
- echo sprintf("<script>TalentInfo.callBack(%s);</script>", json_encode($res));
- }
- $columns = ["序号", "姓名", "证件类型", "证件号码", "工作单位", "备注"];
- $rows = [];
- $i = 1;
- $card_types = DictApi::selectByParentCode("card_type");
- foreach ($list as $item) {
- $row = [
- $i, $item["name"], $card_types[$item["card_type"]], $item["card_number"], $item["enterpriseName"], $item["description"]
- ];
- $rows[] = $row;
- $i++;
- }
- $filename = "优秀人才核查征信名单导出";
- if ($rows) {
- export($columns, $rows, $filename);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- /**
- * 预备人才库-征信通过
- * @auth {{/talentInfo/hczxPass}}
- */
- public function hczxPass() {
- $params = $this->request->param();
- $ids = $params["ids"];
- $ids = array_filter(explode(",", $ids));
- $msg = "征信通过";
- $state = TalentState::ZX_PASS; //征信通过
- $total = count($ids);
- $error = 0;
- $success = 0;
- foreach ($ids as $id) {
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::REVERIFY_PASS) {
- $error++;
- continue;
- }
- if (VerifyApi::setPublic($id, $state, $msg)) {
- $success++;
- } else {
- $error++;
- }
- }
- return json(["code" => 200, "msg" => sprintf("核查征信完成:共提交%d个人才,通过%d个,失败%d个", $total, $success, $error)]);
- }
- /**
- * 预备人才库-征信失信
- * @auth {{/talentInfo/hczxReject}}
- */
- public function hczxReject() {
- $params = $this->request->param();
- $id = $params["id"];
- $msg = $params["outMsg"];
- if (!$msg)
- return json(["msg" => "请填写审核意见"]);
- $msg = "征信失信:" . $msg;
- $state = TalentState::ZX_FAIL; //征信不通过
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::REVERIFY_PASS) {
- return json(["msg" => "当前记录不是待核查征信状态,无法核查"]);
- }
- if (VerifyApi::setPublic($id, $state, $msg)) {
- return json(["code" => 200, "msg" => "已设置征信失信"]);
- }
- return json(["msg" => "设置征信失信失败"]);
- }
- /**
- * 预备人才库-公示预览
- * @auth {{/talentInfo/publicExportBefore}}
- */
- public function publicExportBefore() {
- $params = $this->request->param();
- $ids_arr = array_filter(explode(",", $params["ids"]));
- $columns = ["序号", "批次", "姓名", "性别", "工作单位", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
- if ($ids_arr) {
- $where[] = ["id", "in", $ids_arr];
- $list = TalentModel::where($where)->order("talent_arrange asc,enterprise_id asc")->select();
- $rows = [];
- $i = 1;
- $talentArranges = DictApi::selectByParentCode("talent_arrange");
- foreach ($list as $item) {
- $talent_condition = TalentConditionApi::getOne($item["talent_condition"]);
- $enterprise = EnterpriseApi::getOne($item["enterprise_id"]);
- $checkLog = TalentLogApi::getLastLog($item["id"], 1);
- $row = [
- $i, $item["apply_year"], $item["name"], $item["sex"] == 1 ? "男" : "女", $enterprise["name"], $talent_condition["name"], $talentArranges[$item["talent_arrange"]], $item["checkState"] == TalentState::ZX_PASS ? "审核通过" : "审核不通过", $checkLog["description"]
- ];
- $rows[] = $row;
- $i++;
- }
- }
- if ($rows) {
- $filename = "优秀人才公示预览导出";
- export($columns, $rows, $filename);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- /**
- * 预备人才库-公示导出
- * @auth {{/talentInfo/publicExport}}
- */
- public function publicExport() {
- $params = $this->request->param();
- $columns = ["序号", "批次", "姓名", "性别", "工作单位", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
- $startTime = $params["startTime"];
- $endTime = $params["endTime"];
- if (!strtotime($startTime) || !strtotime($endTime))
- return json(["msg" => "时间格式错误"]);
- $where[] = ["checkState", "=", TalentState::ANNOUNCED];
- $where[] = ["publicBatch", "between", [$startTime, $endTime]];
- $list = TalentModel::where($where)->order("talent_arrange asc,enterprise_id asc")->select();
- $rows = [];
- $i = 1;
- $talentArranges = DictApi::selectByParentCode("talent_arrange");
- foreach ($list as $item) {
- $talent_condition = TalentConditionApi::getOne($item["talent_condition"]);
- $enterprise = EnterpriseApi::getOne($item["enterprise_id"]);
- $checkLog = TalentLogApi::getLastLog($item["id"], 1);
- $row = [
- $i, $item["apply_year"], $item["name"], $item["sex"] == 1 ? "男" : "女", $enterprise["name"], $talent_condition["name"], $talentArranges[$item["talent_arrange"]], $item["checkState"] == TalentState::ANNOUNCED ? "审核通过" : "审核不通过", $checkLog["description"]
- ];
- $rows[] = $row;
- $i++;
- }
- if ($rows) {
- $filename = "优秀人才公示导出";
- export($columns, $rows, $filename);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- /**
- * 预备人才库-公示
- * @auth {{/talentInfo/preparePublic}}
- */
- public function preparePublic() {
- $params = $this->request->param();
- $isMessage = $params["isMessage"] ?: 2;
- $ids = $params["ids"];
- $publicBatch = $params["batch"];
- if (!$publicBatch || strlen($publicBatch) != 6 || !is_numeric($publicBatch))
- return json(["msg" => "公示批次错误"]);
- $ids = array_filter(explode(",", $ids));
- $msg = "已公示";
- $state = TalentState::ANNOUNCED; //公示
- $total = count($ids);
- $error = 0;
- $success = 0;
- foreach ($ids as $id) {
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::ZX_PASS) {
- $error++;
- continue;
- }
- if (VerifyApi::setPublic($id, $state, $msg, $publicBatch)) {
- $success++;
- } else {
- $error++;
- }
- }
- return json(["code" => 200, "msg" => sprintf("公示完成:共提交%d个人才,通过%d个,失败%d个", $total, $success, $error)]);
- }
- /**
- * 预备人才库-公示再审核
- * @auth {{/talentInfo/prepareCheck}}
- */
- public function prepareCheck() {
- $params = $this->request->param();
- $id = $params["id"];
- $checkState = $params["checkState"];
- $msg = $params["checkMsg"];
- if (!$msg)
- return json(["msg" => "请填写审核意见"]);
- if ($checkState == 1) {
- $msg = "公示再审核通过:" . $msg;
- $state = TalentState::ANNOUNCED_REVERIFY_PASS; //公示再审核通过
- } else {
- $msg = "公示再审核不通过:" . $msg;
- $state = TalentState::ANNOUNCED_REVERIFY_FAIL; //公示再审核不通过
- }
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::ANNOUNCED) {
- return json(["msg" => "当前记录不是公示状态,无法审核"]);
- }
- if (VerifyApi::setPublic($id, $state, $msg)) {
- return json(["code" => 200, "msg" => "公示再审核完成"]);
- }
- return json(["msg" => "公示再审核失败"]);
- }
- /**
- * 预备人才库-公示通过(批量)
- * @auth {{/talentInfo/publicPass}}
- */
- public function publicPass() {
- $params = $this->request->param();
- $ids = $params["ids"];
- $ids = array_filter(explode(",", $ids));
- $msg = "公示再审核批量通过";
- $state = TalentState::ANNOUNCED_REVERIFY_PASS; //公示再审核通过
- $total = count($ids);
- $error = 0;
- $success = 0;
- foreach ($ids as $id) {
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::ANNOUNCED) {
- $error++;
- continue;
- }
- if (VerifyApi::setPublic($id, $state, $msg)) {
- $success++;
- } else {
- $error++;
- }
- }
- return json(["code" => 200, "msg" => sprintf("公示再审核完成:共提交%d个人才,通过%d个,失败%d个", $total, $success, $error)]);
- }
- /**
- * 预备人才库-公布预览
- * @auth {{/talentInfo/publishExportBefore}}
- */
- public function publishExportBefore() {
- $params = $this->request->param();
- $ids = $params["ids"];
- $ids = array_filter(explode(",", $ids));
- if ($ids) {
- $where[] = ["id", "in", $ids];
- $list = TalentModel::where($where)->order("talent_arrange asc,enterprise_id asc")->select();
- $rows = [];
- $i = 1;
- $talentArranges = DictApi::selectByParentCode("talent_arrange");
- foreach ($list as $item) {
- $talent_condition = TalentConditionApi::getOne($item["talent_condition"]);
- $enterprise = EnterpriseApi::getOne($item["enterprise_id"]);
- $checkLog = TalentLogApi::getLastLog($item["id"], 1);
- $row = [
- $i, $item["apply_year"], $item["name"], $item["sex"] == 1 ? "男" : "女", $enterprise["name"], $talent_condition["name"], $talentArranges[$item["talent_arrange"]], $item["checkState"] == TalentState::ANNOUNCED_REVERIFY_PASS ? "审核通过" : "审核不通过", $checkLog["description"]
- ];
- $rows[] = $row;
- $i++;
- }
- }
- $columns = ["序号", "批次", "姓名", "性别", "工作单位", "本人具备的认定条件", "认定人才层次", "审核状态", "备注"];
- $filename = "优秀人才" . date("Ym") . "公布预览名单导出(公示批次-" . $list[0]["publicBatch"] . ")";
- if ($rows) {
- export($columns, $rows, $filename);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- /**
- * 预备人才库-公布导出
- * @auth {{/talentInfo/publishExport}}
- */
- public function publishExport() {
- $params = $this->request->param();
- $startTime = $params["startTime"];
- $endTime = $params["endTime"];
- if (!strtotime($startTime) || !strtotime($endTime))
- return json(["msg" => "时间格式错误"]);
- $where[] = ["checkState", "=", TalentState::PUBLISH_PASS];
- $where[] = ["certificateGetTime", "between", [$startTime, $endTime]];
- $list = TalentModel::where($where)->order("talent_arrange asc,enterprise_id asc")->select();
- $rows = [];
- $i = 1;
- $talentArranges = DictApi::selectByParentCode("talent_arrange");
- foreach ($list as $item) {
- $talent_condition = TalentConditionApi::getOne($item["talent_condition"]);
- $enterprise = EnterpriseApi::getOne($item["enterprise_id"]);
- $checkLog = TalentLogApi::getLastLog($item["id"], 1);
- $row = [
- $i, $item["apply_year"], $item["name"], $item["sex"] == 1 ? "男" : "女", $enterprise["name"], $talent_condition["name"], $talentArranges[$item["talent_arrange"]], $item["checkState"] == TalentState::PUBLISH_PASS ? "审核通过" : "审核不通过", $checkLog["description"]
- ];
- $rows[] = $row;
- $i++;
- }
- $columns = ["序号", "批次", "姓名", "性别", "工作单位", "本人具备的认定条件", "认定人才层次", "审核状态", "备注"];
- $filename = "优秀人才" . date("Ym") . "公布名单导出(公示批次-" . $list[0]["publicBatch"] . ")";
- if ($rows) {
- export($columns, $rows, $filename);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- /**
- * 预备人才库-公布
- * @auth {{/talentInfo/publish}}
- */
- public function publish() {
- $params = $this->request->param();
- $id = $params["id"];
- $msg = $params["checkMsg"];
- $checkState = $params["checkState"];
- $batch = $params["batch"];
- if ($checkState == 1) {
- $state = TalentState::PUBLISH_PASS;
- $msg = "公布审核通过:" . $msg;
- } else {
- $state = TalentState::PUBLISH_FAIL;
- $msg = "公布审核不通过:" . $msg;
- }
- if (!$batch || !strtotime($batch))
- return json(["msg" => "公布批次时间错误"]);
- if (!$msg)
- return json(["msg" => "请填写审核意见"]);
- $state = TalentState::PUBLISH_PASS; //公示再审核通过
- $batch = $params["batch"];
- if (!strtotime($batch))
- return json(["msg" => "公布批次时间错误"]);
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::ANNOUNCED_REVERIFY_PASS) {
- return json(["msg" => "当前记录不是公示再审核通过状态,无法审核"]);
- }
- if (VerifyApi::setPublic($id, $state, $msg, $batch)) {
- return json(["code" => 200, "msg" => "公布审核完成"]);
- }
- return json(["msg" => "公布审核失败"]);
- }
- /**
- * 预备人才库-批量公布通过
- * @auth {{/talentInfo/preparePublish}}
- */
- public function preparePublish() {
- $params = $this->request->param();
- $ids = $params["ids"];
- $ids = array_filter(explode(",", $ids));
- $msg = "批量公布";
- $state = TalentState::PUBLISH_PASS; //公示再审核通过
- $batch = $params["batch"];
- if (!strtotime($batch))
- return json(["msg" => "公布批次时间错误"]);
- $total = count($ids);
- $error = 0;
- $success = 0;
- foreach ($ids as $id) {
- $talent_info = VerifyApi::getOne($id);
- if ($talent_info["checkState"] != TalentState::ANNOUNCED_REVERIFY_PASS) {
- $error++;
- continue;
- }
- if (VerifyApi::setPublic($id, $state, $msg, $batch)) {
- $success++;
- } else {
- $error++;
- }
- }
- return json(["code" => 200, "msg" => sprintf("公布完成:共提交%d个人才,通过%d个,失败%d个", $total, $success, $error)]);
- }
- /**
- * 预备人才库-批量发证
- * @auth {{/talentInfo/prepareCertification}}
- */
- public function prepareCertification() {
- $lockFile = fopen("send_certificate.lock", "a");
- if (flock($lockFile, LOCK_EX | LOCK_NB)) {//文件锁(独占)
- //查询所有待发证的数据
- $params = $this->request->param();
- $ids = array_filter(explode(",", $params["ids"]));
- //晋江市优秀人才证书:当前年份+层次+四位递增数字
- //集成电路优秀人才证书:IC+当前年份+递增四位数,如IC20190001
- Db::startTrans();
- $talent_max_no = [];
- $user = session("user");
- try {
- $talent_list = VerifyApi::getListByIds($ids);
- $year = date("Y");
- foreach ($talent_list as $talent_info) {
- if ($talent_info["checkState"] != TalentState::PUBLISH_PASS) {
- Db::rollback();
- return json(["msg" => "只能对公布通过的对象进行发证,请核查待发证名单后再重新发证"]);
- }
- $no_prefix = $year . $talent_info["talent_arrange"];
- $where[] = ["certificateNo", "like", $no_prefix . "%"];
- $max_no = $talent_max_no[$talent_info["talent_arrange"]] ?: Db::table("new_talent_info")->where($where)->max("certificateNo");
- if (!$max_no) {
- $max_no = $no_prefix . "0001";
- } else {
- $new_no = intval(substr($max_no, 5)) + 1;
- $max_no = $no_prefix . str_pad($new_no, 4, "0", STR_PAD_LEFT);
- }
- //更新证书编号
- $data["id"] = $talent_info["id"];
- $data["certificateNo"] = $max_no;
- $data["checkState"] = TalentState::CERTIFICATED;
- $data["isPublic"] = 5;
- Db::table("new_talent_info")->update($data);
- //写入日志
- $log["last_state"] = TalentState::PUBLISH_PASS;
- $log["id"] = getStringId();
- $log["state"] = $log["new_state"] = TalentState::CERTIFICATED;
- $log["type"] = 1;
- $log["mainId"] = $talent_info["id"];
- $log["companyId"] = $user["companyId"];
- $log["active"] = 1;
- $log["description"] = "人才编号为:" . $max_no;
- $log["createUser"] = sprintf("%s(%s)", $user["account"], $user["companyName"] ?: $user["rolename"]);
- $log["createTime"] = date("Y-m-d H:i:s");
- Db::table("new_talent_checklog")->insert($log);
- $talent_max_no[$talent_info["talent_arrange"]] = $max_no;
- }
- Db::commit();
- return json(["code" => 200, "msg" => "发证成功"]);
- } catch (\Exception $e) {
- Db::rollback();
- return json(["msg" => "发证失败:" . $e->getMessage()]);
- }
- flock($lockFile, LOCK_UN);
- } else {
- return json(["msg" => "同一时间只能有一个管理员进行发证操作"]);
- }
- }
- /**
- * 预备人才库-撤销公布
- * @auth {{/talentInfo/prepareCanclePublish}}
- */
- public function pre_cancel_publish() {
-
- }
- /**
- * 基本条件审核-提交未保存
- * @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; //初审成功
- $data["pass_dept_check"] = 0;
- } else if ($params["checkState"] == 4) {
- if ($talent_info["highProcess"] < 3)
- return json(["msg" => "只有曾经通过部门并审,初审时才可以选择直接跳过部门并审阶段"]);
- //审核成功,并设置越过部门并审。附加条件:最高进度曾经通过部门并审3(包含部门并审)
- $log_checkState = $checkState = TalentState::FST_VERIFY_PASS; //初审成功
- $data["pass_dept_check"] = $talent_info["highProcess"] >= 3 ? 1 : 0;
- } 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"];
- }
- if ($log["new_state"] == TalentState::FST_VERIFY_PASS && $talent_info["pass_dept_check"] == 0) {
- $data["first_dept_check_time"] = date("Y-m-d H:i:s");
- $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
- $companyIds = array_filter(explode(",", $condition["companyIds"])); //该条件下需要审核的所有单位
- //这边去除已经审核通过的单位,主要通过日志是否存在记录。
- $pass_companyIds = TalentLogApi::getPassDepts($talent_info["id"]); //已经通过的单位
- $unpass_companyIds = array_diff($companyIds, (array) $pass_companyIds); //排除已经通过的单位
- sort($unpass_companyIds);
- TalentLogApi::writeDeptLogs($talent_info["id"], $unpass_companyIds, TalentState::FST_VERIFY_PASS);
- }
- $data["id"] = $talent_info["id"];
- $data["checkState"] = $log["new_state"];
- TalentModel::update($data);
- TalentLogApi::setActive($log["id"], 1);
- 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) {
- if ($talent_info["pass_dept_check"] == 1)
- return json(["msg" => "不在审核范围。(初审部门已经选择跳过部门并审阶段)"]);
- if (!in_array($this->user["companyId"], $companys))
- return json(["msg" => "您的部门不在该申请的并审部门列表中。"]);
- $pass_companyIds = TalentLogApi::getPassDepts($talent_info["id"]); //已经通过的单位
- if (in_array($this->user["companyId"], $pass_companyIds))
- return json(["msg" => "您的部门已经审核过了,无需重复审核。"]);
- $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; //当前状态不变
- $talent_condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
- if (!$talent_condition["companyWithFileType"])
- return json(["msg" => "尚未设置单位可审的附件,请联系管理员设置后再进行审批"]);
- $cwfts = explode(";", $talent_condition["companyWithFileType"]);
- $company_setting = [];
- foreach ($cwfts as $cwft) {
- $_company_setting = explode(":", $cwft);
- if ($_company_setting[0] == $this->user["companyId"]) {
- $company_setting = explode(",", $_company_setting[1]);
- break;
- }
- }
- if (!$company_setting)
- return json(["msg" => "尚未设置单位可审的附件,请联系管理员设置后再进行审批"]);
- //$data["modify_fields"] = $params["fields"];
- $original_modify_files = explode(",", $talent_info["modify_files"]);
- $_current_modify_files = explode(",", $params["files"]);
- $unselect_files = array_diff($company_setting, $_current_modify_files); //比较设置和当前提交的,取差值集,既是可选而未选的附件集合
- $new_modify_files = array_unique(array_merge($original_modify_files, $_current_modify_files)); //合并当前提交及库中原来保存的值
- foreach ($new_modify_files as $key => $item) {
- if (in_array($item, $unselect_files))
- unset($new_modify_files[$key]);
- }
- $data["modify_files"] = implode(",", array_unique($new_modify_files));
- }
- $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"];
- 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) {
- if ($talent_info["pass_dept_check"] == 1)
- return json(["msg" => "不在审核范围。(初审部门已经选择跳过部门并审阶段)"]);
- if (!in_array($this->user["companyId"], $companys))
- return json(["msg" => "您的部门不在该申请的并审部门列表中。"]);
- $pass_companyIds = TalentLogApi::getPassDepts($talent_info["id"]); //已经通过的单位
- if (in_array($this->user["companyId"], $pass_companyIds))
- return json(["msg" => "您的部门已经审核过了,无需重复审核。"]);
- $dept_log = TalentLogApi::getLogByCompanyId($talent_info["id"], $this->user["companyId"], $talent_info["first_dept_check_time"]);
- $over = $pass_companyIds ? count($pass_companyIds) : 0; //完成度,如果重审之前已有通过审核的部门,不用再审,直接按通过算
- $error = 0; //失败数
- $nowProcess = 3;
- if (!$dept_log)
- return json(["msg" => "未匹配日志,审核失败"]);
- if ($dept_log["state"] == $dept_log["new_state"])
- return json(["msg" => "请先保存审核状态,再提交审核"]);
- if ($dept_log["active"] == 1)
- return json(["msg" => "您的部门已经审核过了"]);
- $over++;
- if ($dept_log["new_state"] == TalentState::SCND_SUBMIT) {
- $error++;
- }
- $logs = TalentLogApi::getListLogByTime($talent_info["id"], $talent_info["first_dept_check_time"]);
- for ($i = 0; $i < count($logs); $i++) {
- if (!in_array($logs[$i]["companyId"], $pass_companyIds)) {
- $over += $logs[$i]["active"] == 1 ? 1 : 0;
- if ($logs[$i]["new_state"] == TalentState::SCND_SUBMIT) {
- $error++;
- }
- }
- }
- if ($over == count($companys)) {
- //全部已审核
- $checkState = TalentState::SCND_SUBMIT;
- $log_checkState = TalentState::DEPT_VERIFY_REJECT;
- if ($error == 0) {
- $log_checkState = $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"], [$log_checkState, $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 && $talent_info["pass_dept_check"] != 1) {
- 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 && $talent_info["pass_dept_check"] != 1) {
- 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:
- $fields = DictApi::getTalentFields(2);
- $process = 2;
- break;
- case 7:
- $tc = TalentConditionApi::getOne($talent_info["talent_condition"]);
- if ($tc["companyIds"] && $talent_info["pass_dept_check"] != 1) {
- $process = 3;
- } else {
- $process = 4;
- }
- $fields = DictApi::getTalentFields($process);
- break;
- case 9:
- $process = 4;
- $fields = DictApi::getTalentFields($process);
- break;
- }
- if ($checkState != 2) {
- $enterprise = \app\common\model\Enterprise::findOrEmpty($talent_info["enterprise_id"]);
- //$fields = DictApi::getTalentFields(2);
- $field_tmp = [];
- if ($fields) {
- 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"]];
- $where[] = ["isConditionFile", "<>", 1];
- if ($process == 3) {
- $where = [];
- $cwfts = explode(";", $condition["companyWithFileType"]);
- foreach ($cwfts as $cwft) {
- $_company_setting = explode(":", $cwft);
- if ($_company_setting[0] == $this->user["companyId"]) {
- $where[] = ["id", "in", explode(",", $_company_setting[1])];
- break;
- }
- }
- if ($where) {
- $files = \think\facade\Db::table("new_common_filetype")->where($where)->select();
- } else {
- $files = [];
- }
- } else {
- 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 findFieldsAndFiles() {
-
- }
- public function commonExport() {
- $params = $this->request->param();
- $fields = $params["export"];
- if (!$fields)
- return json(["msg" => "请选择要导出的数据"]);
- $names = DictApi::getTalentFields(4);
- $names["industryFieldNew"] = "产业领域";
- $names["enterpriseName"] = "单位名称";
- $names["enterpriseTag"] = "单位标签";
- $names["street"] = "所属镇街";
- $names["checkState"] = "审核状态";
- $list = VerifyApi::getExportDatas($fields);
- foreach ($fields as $field) {
- $columns[] = $names[$field];
- }
- $datas = [];
- for ($i = 0; $i < count($list); $i++) {
- $data = [];
- for ($n = 0; $n < count($fields); $n++) {
- $data[] = $list[$i][$fields[$n]];
- }
- $datas[] = $data;
- }
- if ($datas) {
- export($columns, $datas);
- exit();
- }
- echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
- }
- public function getPhones() {
- $list = VerifyApi::getListByProcess($this->request->param("process"));
- $result = [];
- if ($list) {
- foreach ($list as $item) {
- if ($item["phone"] && $item["name"]) {
- $result[] = sprintf("%s:%s", $item["name"], $item["phone"]);
- }
- }
- }
- return json(["code" => 200, "obj" => implode(";", $result)]);
- }
- public function getEnterprisePhones() {
- $list = VerifyApi::getListByProcess($this->request->param("process"));
- $result = [];
- if ($list) {
- foreach ($list as $item) {
- if ($item["agentName"] && $item["agentPhone"]) {
- $result[] = sprintf("%s:%s", $item["agentName"], $item["agentPhone"]);
- }
- }
- }
- return json(["code" => 200, "obj" => implode(";", $result)]);
- }
- }
|