DictApi.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. <?php
  2. namespace app\common\api;
  3. use app\common\model\Dict;
  4. use think\Facade\Db;
  5. /**
  6. * Description of DictApi
  7. *
  8. * @author sgq
  9. */
  10. class DictApi {
  11. public static function create($params) {
  12. $data["code"] = $params["dictCode"];
  13. $data["name"] = $params["dictName"];
  14. $data["tips"] = $params["dictTips"];
  15. $data["pid"] = 0;
  16. $values = $params["dictValues"];
  17. if (self::isExistByCode($data["code"]))
  18. return ["msg" => sprintf("编码[%s]已经存在", $data["code"])];
  19. $items = array_filter(explode(";", $values));
  20. $id = Dict::insertGetId($data);
  21. $childs = [];
  22. for ($i = 0; $i < count($items); $i++) {
  23. $fields = array_filter(explode(":", $items[$i]));
  24. $childs[] = ["pid" => $id, "code" => $fields[0], "name" => $fields[1], "num" => $fields[2]];
  25. }
  26. Dict::insertAll($childs);
  27. return ["code" => 200, "msg" => "成功"];
  28. }
  29. public static function update($params) {
  30. $data["id"] = $params["dictId"];
  31. $data["code"] = $params["dictCode"];
  32. $data["name"] = $params["dictName"];
  33. $data["tips"] = $params["dictTips"];
  34. $data["pid"] = 0;
  35. $values = $params["dictValues"];
  36. if (self::isExistByCode($data["code"], $params["dictId"]))
  37. return ["msg" => sprintf("编码[%s]已经存在", $data["code"])];
  38. $items = array_filter(explode(";", $values));
  39. Dict::update($data);
  40. //删除原来的子项
  41. Dict::where(["pid" => $params["dictId"]])->delete();
  42. $childs = [];
  43. for ($i = 0; $i < count($items); $i++) {
  44. $fields = array_filter(explode(":", $items[$i]));
  45. $childs[] = ["pid" => $params["dictId"], "code" => $fields[0], "name" => $fields[1], "num" => $fields[2]];
  46. }
  47. Dict::insertAll($childs);
  48. return ["code" => 200, "msg" => "成功"];
  49. }
  50. public static function delete($id) {
  51. Dict::where(["id" => $id])->delete();
  52. Dict::where(["pid" => $id])->delete();
  53. return ["code" => 200, "msg" => "成功"];
  54. }
  55. public static function isExistByCode($code, $id = 0) {
  56. $where = [];
  57. if ($id > 0) {
  58. $where[] = ["id", "<>", $id];
  59. }
  60. $where[] = ["code", "=", $code];
  61. $dict = Dict::where($where)->findOrEmpty()->toArray();
  62. return $dict;
  63. }
  64. /**
  65. * 获取一条
  66. * @param type $id
  67. * @return type
  68. */
  69. public static function getOne($id) {
  70. $info = Dict::where("id", $id)->findOrEmpty()->toArray();
  71. if ($info) {
  72. $items = Dict::where("pid", "=", $id)->order("num asc")->select()->toArray();
  73. $info["children"] = $items;
  74. }
  75. return $info;
  76. }
  77. /**
  78. * 获取列表
  79. * @param type $request
  80. * @return type
  81. */
  82. public static function getList($request) {
  83. $order = trim($request->param("order")) ?: "desc";
  84. $offset = trim($request->param("offset")) ?: 0;
  85. $limit = trim($request->param("limit")) ?: 10;
  86. $name = trim($request->param("condition"));
  87. $where = [];
  88. $where[] = ["pid", "=", "0"];
  89. if ($name) {
  90. $where[] = ["name", "like", "%" . $name . "%"];
  91. }
  92. $count = Dict::where($where)->count();
  93. $list = Dict::where($where)->limit($offset, $limit)->order("id " . $order)->select()->toArray();
  94. foreach ($list as &$item) {
  95. $items = Dict::where("pid", "=", $item["id"])->column("name");
  96. $item["detail"] = implode(",", $items);
  97. }
  98. return ["total" => $count, "rows" => $list];
  99. }
  100. /**
  101. *
  102. * @param type $code
  103. * @return type
  104. */
  105. public static function selectByParentCode($code) {
  106. $parent = Dict::where("code", $code)->findOrEmpty()->toArray();
  107. $dictList = Dict::where("pid", $parent["id"])->select()->toArray();
  108. $tmp = [];
  109. foreach ($dictList as $dict) {
  110. $tmp[$dict["code"]] = $dict["name"];
  111. }
  112. return $tmp;
  113. }
  114. /**
  115. *
  116. * @param type $code
  117. * @return type
  118. */
  119. public static function findChildDictByCode($code) {
  120. $parent = Dict::where("code", $code)->findOrEmpty()->toArray();
  121. $dictList = Dict::where("pid", $parent["id"])->select()->toArray();
  122. return $dictList;
  123. }
  124. public static function findDictByCode($code) {
  125. $dict = Dict::where("code", $code)->findOrEmpty();
  126. return $dict;
  127. }
  128. public static function getIntegralFields() {
  129. return [
  130. "name" => "姓名",
  131. "card_type" => "证件类型",
  132. "card_number" => "证件号码",
  133. "phone" => "手机号码",
  134. "email" => "电子邮箱",
  135. "shareholder" => "是否股东"
  136. ];
  137. }
  138. public static function getTalentFields($step, $isImport = 0) {
  139. $dict1 = [
  140. "name" => "姓名",
  141. "nation" => "民族",
  142. "headimgurl" => "头像",
  143. "card_type" => "证件类型",
  144. "card_number" => "证件号码",
  145. "sex" => "性别",
  146. "birthday" => "出生日期",
  147. "politics" => "政治面貌",
  148. "nationality" => "国籍/地区",
  149. "province" => "籍贯省",
  150. "city" => "籍贯市",
  151. "county" => "籍贯县",
  152. "talent_type" => "人才类型",
  153. "fst_work_time" => "来晋工作时间",
  154. "tax_insurance_month" => "在我市缴交社会保险或个人所得税月份",
  155. "labor_contract_rangetime" => "劳动合同起止时间",
  156. "salary_pay_way" => "工资发放渠道",
  157. "salary_pay_month" => "工资发放月份",
  158. "pre_import_type" => "预引进类型",
  159. "return" => "流出晋江满3年后又返回晋江的",
  160. "import_way" => "引进方式",
  161. "cur_entry_time" => "本单位入职时间",
  162. "position" => "本单位现任职务",
  163. "experience" => "工作简历",
  164. "education" => "教育背景",
  165. ];
  166. $dict2 = [
  167. "apply_year" => "申报年度",
  168. "phone" => "手机号码",
  169. "email" => "电子邮箱",
  170. "highest_degree" => "最高学历",
  171. "graduate_school" => "毕业院校",
  172. "major" => "专业",
  173. "study_abroad" => "是否有留学经历",
  174. "abroad_school" => "留学毕业院校",
  175. "abroad_major" => "留学专业",
  176. "pro_qua" => "职业资格",
  177. "professional" => "专业技术职称",
  178. ];
  179. if ($isImport) {
  180. $dict2["isMatchZhiren"] = "是否符合直认条件";
  181. }
  182. $dict2_ = [
  183. "source" => "申报来源",
  184. "source_city" => "入选来源地级市",
  185. "source_county" => "入选来源县市区",
  186. "talent_arrange" => "人才层次",
  187. "talent_arrange_category" => "人才条款",
  188. "talent_condition" => "认定条件",
  189. "identifyGetTime" => "认定条件取得时间",
  190. "annual_salary" => "上一年度年薪(元)",
  191. "bank" => "开户银行",
  192. "bank_number" => "银行行号",
  193. "bank_branch_name" => "开户银行网点",
  194. "bank_account" => "个人银行账号"
  195. //"source_batch" => "入选名单的文件号及批次",
  196. //"fujian_highcert_pubtime" => "福建省高层次人才证书发证日期",
  197. //"fujian_highcert_exptime" => "福建省高层次人才证书有效期",
  198. //"quanzhou_highcert_pubtime" => "泉州高层次人才证书发证日期",
  199. //"quanzhou_highcert_exptime" => "泉州高层次人才证书有效期",
  200. ];
  201. $dict2 = array_merge($dict2, $dict2_);
  202. if ($step == 1) {
  203. return $dict1;
  204. }
  205. if ($step == 2) {
  206. return $dict2;
  207. }
  208. if ($step == 3) {
  209. return null;
  210. }
  211. return array_merge($dict1, $dict2);
  212. }
  213. public static function getTalentFields_IC() {
  214. $dict = [
  215. "name" => "姓名",
  216. "card_type" => "证件类型",
  217. "card_number" => "证件号码",
  218. "sex" => "性别",
  219. "birthday" => "出生日期",
  220. "nationality" => "国籍/地区",
  221. "province" => "籍贯省",
  222. "city" => "籍贯市",
  223. "county" => "籍贯县",
  224. "nation" => "民族",
  225. "politics" => "政治面貌",
  226. "break_faith" => "是否曾被相关主管部门列为失信个人",
  227. "phone" => "手机号码",
  228. "email" => "电子邮箱",
  229. "highest_degree" => "最高学历",
  230. "graduate_school" => "毕业院校",
  231. "major" => "专业",
  232. "study_abroad" => "是否有留学经历",
  233. "position" => "职务",
  234. "cur_entry_time" => "入职时间",
  235. "labor_contract_rangetime" => "工作合同起止时间",
  236. "talent_arrange" => "人才层次",
  237. "talent_condition" => "认定条件",
  238. "identifyConditionName" => "认定条件名称",
  239. "identifyGetTime" => "认定条件取得时间",
  240. "title" => "职称",
  241. "pro_qua" => "国家职业资格",
  242. "bank" => "开户银行",
  243. "bank_branch_name" => "开户银行网点",
  244. "bank_account" => "银行账号",
  245. "education" => "教育背景及工作简历",
  246. "experience" => "主要业绩及取得的荣誉",
  247. "description" => "备注",
  248. "headimgurl" => "头像"
  249. ];
  250. return $dict;
  251. }
  252. public static function getTalentFields_WJ() {
  253. $dict = [
  254. "name" => "姓名",
  255. "sex" => "性别",
  256. "nation" => "民族",
  257. "politics" => "政治面貌",
  258. "card_type" => "证件类型",
  259. "card_number" => "证件号码",
  260. "birthday" => "出生日期",
  261. "talent_type" => "人才类型",
  262. "highest_degree" => "最高学历",
  263. "graduate_school" => "毕业院校",
  264. "major" => "专业",
  265. "study_abroad" => "是否有留学经历",
  266. "abroad_school" => "留学毕业院校",
  267. "abroad_major" => "留学专业",
  268. "position" => "职务",
  269. "cur_entry_time" => "入职时间",
  270. "labor_contract_rangetime" => "工作合同起止时间",
  271. "title" => "职称",
  272. "fst_city_work_time" => "来泉工作时间",
  273. "talent_arrange" => "人才层次",
  274. "talent_condition" => "认定条件",
  275. "phone" => "手机号码",
  276. "email" => "电子邮箱",
  277. "bank" => "开户银行",
  278. "bank_account" => "银行账号",
  279. "bank_number" => "银行行号",
  280. "bank_branch_name" => "开户银行网点",
  281. "education" => "教育背景及工作简历",
  282. "experience" => "主要业绩及取得的荣誉",
  283. "headimgurl" => "头像"
  284. ];
  285. return $dict;
  286. }
  287. public static function getTalentFields_GJ() {
  288. $dict = [
  289. "name" => "姓名",
  290. "nation" => "民族",
  291. "card_type" => "证件类型",
  292. "card_number" => "证件号码",
  293. "sex" => "性别",
  294. "birthday" => "出生日期",
  295. "politics" => "政治面貌",
  296. "nationality" => "国籍/地区",
  297. "province" => "籍贯省",
  298. "city" => "籍贯市",
  299. "county" => "籍贯县",
  300. "talent_type" => "人才类型",
  301. "position" => "职务",
  302. "cur_entry_time" => "入职时间",
  303. "labor_contract_rangetime" => "工作合同起止时间",
  304. "highest_degree" => "最高学历",
  305. "graduate_school" => "毕业院校",
  306. "major" => "专业",
  307. "study_abroad" => "是否有留学经历",
  308. "abroad_school" => "留学院校",
  309. "abroad_major" => "留学专业",
  310. "title" => "职称",
  311. "pro_qua" => "职业资格",
  312. "phone" => "手机号码",
  313. "email" => "电子邮箱",
  314. "talent_arrange" => "人才层次",
  315. "talent_arrange_category" => "人才条款",
  316. "talent_condition" => "认定条件",
  317. "bank" => "开户银行",
  318. "bank_account" => "银行账号",
  319. "bank_number" => "银行行号",
  320. "bank_branch_name" => "开户银行网点",
  321. "education" => "教育背景及工作简历",
  322. "experience" => "主要业绩及取得的荣誉",
  323. "headimgurl" => "头像"
  324. ];
  325. return $dict;
  326. }
  327. // 1保存未提交 2已提交未审核 3已审核 4驳回 5保存补充材料未提交 6提交补充材料进入初审 7初审通过 8初审驳回 9部门审核通过 10部门审核驳回 11复核通过 12复核驳回 13复核失败
  328. public static function getCheckLogStepName($state, $step) {
  329. $stepName = "";
  330. switch ($state) {
  331. case -1:
  332. case 3:
  333. case 4:
  334. $stepName = '<span class="label label-primary">总院审核</span>';
  335. break;
  336. case 5:
  337. case 6:
  338. case 7:
  339. $stepName = '<span class="label label-primary">基础信息复审</span>';
  340. break;
  341. case -2:
  342. case 10:
  343. case 11:
  344. if ($step == 3) {
  345. $stepName = '<span class="label label-primary">部门审核</span>';
  346. } else {
  347. $stepName = '<span class="label label-primary">初级审核</span>';
  348. }
  349. break;
  350. case 12:
  351. case 13:
  352. $stepName = '<span class="label label-primary">部门审核</span>';
  353. break;
  354. case -14:
  355. case 14:
  356. case 15:
  357. $stepName = '<span class="label label-info">复核</span>';
  358. break;
  359. case 16:
  360. $stepName = '<span class="label label-danger">审核不通过</span>';
  361. break;
  362. case 21:
  363. case 22:
  364. $stepName = '<span class="label label-info">核查征信</span>';
  365. break;
  366. case 23:
  367. case 24:
  368. case 25:
  369. $stepName = '<span class="label label-info">公示</span>';
  370. break;
  371. case 26:
  372. case 27:
  373. $stepName = '<span class="label label-info">公布</span>';
  374. break;
  375. case 28:
  376. $stepName = '<span class="label label-inverse">发放人才码</span>';
  377. break;
  378. default:
  379. switch ($step) {
  380. case 60:
  381. $stepName = '<span class="label">取消优秀人才</span>';
  382. break;
  383. case 65:
  384. $stepName = '<span class="label">恢复优秀人才</span>';
  385. break;
  386. default:
  387. $stepName = '<span class="label">用户操作</span>';
  388. break;
  389. }
  390. break;
  391. }
  392. return $stepName;
  393. }
  394. public static function getTalentInfoStateName($state, $step = 0, $last_state = 0) {
  395. $str = "";
  396. switch ($state) {
  397. case -14:
  398. $str = '<span class="label label-success">待复审</span>';
  399. break;
  400. case -2:
  401. $str = '<span class="label label-danger">初审失败</span>';
  402. break;
  403. case -1:
  404. $str = '<span class="label label-danger">基础信息审核失败</span>';
  405. break;
  406. case 1:
  407. if ($last_state > $state) {
  408. $str = '<span class="label label-danger">驳回到分院</span>';
  409. } else {
  410. $str = '<span class="label">待提交总院</span>';
  411. }
  412. break;
  413. case 2:
  414. /* if ($last_state > $state) {
  415. $str = '<span class="label label-success">待重审</span>';
  416. } else */
  417. if ($last_state == 3) {
  418. $str = '<span class="label label-danger">基础信息复审驳回</span>';
  419. } else {
  420. $str = '<span class="label label-success">待总院审核</span>';
  421. }
  422. break;
  423. case 3:
  424. $str = '<span class="label label-primary">总院审核通过</span>';
  425. break;
  426. case 4:
  427. $str = '<span class="label">再提交总院</span>';
  428. break;
  429. case 5:
  430. $str = '<span class="label label-primary">基础信息复审通过</span>';
  431. break;
  432. case 6:
  433. $str = '<span class="label label-danger">基础信息复审驳回</span>';
  434. break;
  435. case 7:
  436. $str = '<span class="label label-danger">基础信息复审失败</span>';
  437. break;
  438. case 8:
  439. if ($last_state > $state) {
  440. $str = '<span class="label label-danger">初审驳回</span>';
  441. } else {
  442. $str = '<span class="label">待提交认定材料</span>';
  443. }
  444. break;
  445. case 9:
  446. if ($step == 3) {
  447. $str = '<span class="label label-danger">部门驳回</span>';
  448. } else {
  449. if ($last_state == TalentState::FST_VERIFY_REJECT) {
  450. $str = '<span class="label label-success">待重审</span>';
  451. } else if ($last_state == TalentState::DEPT_VERIFY_REJECT) {
  452. $str = '<span class="label label-danger">部门驳回</span>';
  453. } else if ($last_state == TalentState::REVERIFY_REJECT) {
  454. $str = '<span class="label label-danger">复核驳回</span>';
  455. } else {
  456. $str = '<span class="label label-success">待初审</span>';
  457. }
  458. }
  459. break;
  460. case 10:
  461. if ($step == 3) {
  462. $str = '<span class="label label-success">待部门审核</span>';
  463. } else {
  464. $str = '<span class="label label-success">待复审</span>';
  465. }
  466. break;
  467. case 11:
  468. $str = '<span class="label">再提交认定材料</span>';
  469. break;
  470. case 12:
  471. if ($step == 3) {
  472. $str = '<span class="label label-primary">部门通过</span>';
  473. } else {
  474. $str = '<span class="label label-success">待复审</span>';
  475. }
  476. break;
  477. case 13:
  478. if ($step == 3) {
  479. $str = '<span class="label label-danger">部门驳回</span>';
  480. } else {
  481. $str = '<span class="label label-success">待初审</span>';
  482. }
  483. break;
  484. case 14:
  485. $str = '<span class="label label-success">待核查征信</span>';
  486. break;
  487. case 15:
  488. $str = '<span class="label label-danger">待重新审核</span>';
  489. break;
  490. case 16:
  491. $str = '<span class="label label-danger">复核不通过</span>';
  492. break;
  493. case 22:
  494. $str = '<span class="label label-danger">征信不通过</span>';
  495. break;
  496. case 25:
  497. $str = '<span class="label label-danger">公示审核不通过</span>';
  498. break;
  499. case 27:
  500. $str = '<span class="label label-danger">公布不通过</span>';
  501. break;
  502. case 21:
  503. $str = '<span class="label label-success">待公示</span>';
  504. break;
  505. case 23:
  506. $str = '<span class="label label-success">待公示审核</span>';
  507. break;
  508. case 24:
  509. $str = '<span class="label label-success">待公布</span>';
  510. break;
  511. case 26:
  512. $str = '<span class="label label-success">待发放人才码</span>';
  513. break;
  514. case 28:
  515. $str = '<span class="label label-primary">已发放人才码</span>';
  516. break;
  517. }
  518. return $str;
  519. }
  520. public static function getOldStateNameByState($state) {
  521. switch ($state) {
  522. case -2:
  523. return "<span class='label label-success'>待提交</span>";
  524. case -1:
  525. return "<span class='label label-success'>审核不通过</span>";
  526. case 1:
  527. return "<span class='label label-success'>待审核</span>";
  528. case 2:
  529. return "<span class='label label-danger'>审核驳回</span>";
  530. case 3:
  531. return "<span class='label label-primary'>审核通过</span>";
  532. case 4:
  533. return "<span class='label label-warm'>上级驳回</span>";
  534. case 10:
  535. return "<span class='label label-default'>冻结</span>";
  536. case 8:
  537. return "<span class='label label-primary'>提交审核</span>";
  538. case 11:
  539. return "<span class='label label-primary'>撤销审核</span>";
  540. case 9:
  541. return "<span class='label label-primary'>重新提交</span>";
  542. default:
  543. return "";
  544. }
  545. }
  546. public static function getOldStepNameByStep($step) {
  547. switch ($step) {
  548. case -1:
  549. return "<span class='label label-primary'>部门初审</span>";
  550. case 0:
  551. return "<span class='label'>用户操作</span>";
  552. case 1:
  553. return "<span class='label label-primary'>初级审核</span>";
  554. case 2:
  555. return "<span class='label label-success'>部门审核</span>";
  556. case 3:
  557. return "<span class='label label-danger'>复核</span>";
  558. case 4:
  559. return "<span class='label label-warning'>核查征信</span>";
  560. case 5:
  561. return "<span class='label label-warning'>公示</span>";
  562. case 6:
  563. return "<span class='label label-success'>公示再审核</span>";
  564. case 7:
  565. return "<span class='label label-warning'>公布</span>";
  566. case 8:
  567. return "<span class='label label-info'>发证</span>";
  568. case 11:
  569. return "<span class='label label-danger'>审核</span>";
  570. case 12:
  571. return "<span class='label label-primary'>撤回审核</span>";
  572. case 20:
  573. return "<span class='label label-success'>人才层次变更</span>";
  574. case 21:
  575. return "<span class='label label-success'>工作单位变更</span>";
  576. case 22:
  577. return "<span class='label label-success'>离职变更</span>";
  578. case 23:
  579. return "<span class='label label-success'>银行账号变更</span>";
  580. case 24:
  581. return "<span class='label label-success'>基础信息变更</span>";
  582. case 50:
  583. return "<span class='label label-primary'>兑现</span>";
  584. case 55:
  585. return "<span class='label label-primary'>撤销公布</span>";
  586. case 60:
  587. return "<span class='label label-primary'>取消优秀人才</span>";
  588. case 65:
  589. return "<span class='label label-primary'>恢复优秀人才</span>";
  590. case 70:
  591. return "<span class='label label-danger'>设置审核不通过</span>";
  592. default:
  593. return "";
  594. }
  595. }
  596. public static function findByParentCodeAndCode($parentCode, $code) {
  597. $parent_info = Dict::where('code', $parentCode)->findOrEmpty();
  598. if ($parent_info) {
  599. return Dict::where('pid', $parent_info['id'])->where('code', $code)->findOrEmpty();
  600. }
  601. return false;
  602. }
  603. public static function getLayerCatsByLayer($lv) {
  604. $kv = [1 => "A", 2 => "B", 3 => "C", 4 => "D", 5 => "E", 6 => "F", 7 => "G"];
  605. $chr = $kv[$lv];
  606. if ($chr) {
  607. $parent_info = Dict::where('code', "talent_condition_cats")->findOrEmpty();
  608. $where[] = ["pid", "=", $parent_info["id"]];
  609. if ($parent_info) {
  610. $where[] = ["code", "like", $chr . "%"];
  611. return Dict::where($where)->select()->toArray();
  612. }
  613. }
  614. return false;
  615. }
  616. }