|
@@ -1,442 +0,0 @@
|
|
|
-package com.malk.minjiaoyuan.controller;
|
|
|
-
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
-import com.malk.Util.UtilList;
|
|
|
-import com.malk.Util.UtilMap;
|
|
|
-import com.malk.Util.UtilServlet;
|
|
|
-import com.malk.minjiaoyuan.service.MJYService;
|
|
|
-import com.malk.server.aliwork.YDConf;
|
|
|
-import com.malk.server.aliwork.YDParam;
|
|
|
-import com.malk.server.common.McException;
|
|
|
-import com.malk.server.common.McR;
|
|
|
-import com.malk.service.aliwork.YDClient;
|
|
|
-import com.malk.service.aliwork.YDService;
|
|
|
-import lombok.Synchronized;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.web.bind.annotation.PostMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
-
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-/**
|
|
|
- * 错误抛出与拦截详见CatchException
|
|
|
- */
|
|
|
-@Slf4j
|
|
|
-@RestController
|
|
|
-@RequestMapping("/minjiaoyuan")
|
|
|
-public class MJYController {
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private YDConf ydConf;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private YDClient ydClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private MJYService mjyService;
|
|
|
-
|
|
|
- /**
|
|
|
- * 同步名额数据
|
|
|
- */
|
|
|
- @Synchronized
|
|
|
- @PostMapping("sync/quota")
|
|
|
- McR quotaSync(@RequestBody Map<String, String> data) {
|
|
|
-
|
|
|
- log.info("###### 同步名额数据 #####");
|
|
|
-
|
|
|
- // 参数合法校验
|
|
|
- McException.assertParamException_Null(data, "period");
|
|
|
- String period = data.get("period");
|
|
|
-
|
|
|
- // 是否重新计算
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLLE")
|
|
|
- .pageSize(1)
|
|
|
- .searchCondition(JSON.toJSONString(UtilMap.map("selectField_lggd61a7", period)))
|
|
|
- .build();
|
|
|
- long totalCount = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_list).getTotalCount();
|
|
|
- McException.assertAccessException(totalCount > 0, period + "名额已计算, 若需重置请删除后台数据后重试");
|
|
|
-
|
|
|
- // 查询教师档案
|
|
|
- ydParam.setSearchCondition(null);
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLAE");
|
|
|
- List<Map> teacherList = mjyService.queryAllBySync(ydParam);
|
|
|
- log.info("教师档案数据, {}", teacherList.size());
|
|
|
-
|
|
|
- // 学校档案去重
|
|
|
- List<Map> schoolList = new ArrayList<>();
|
|
|
- for (Map teacher : teacherList) {
|
|
|
- Map formData = (Map) teacher.get("formData");
|
|
|
- // 条件: 学校全称
|
|
|
- Optional matchData = schoolList.stream().filter(school -> formData.get("textField_lgeyihed").equals(school.get("textField_lgezb8r7"))).findAny();
|
|
|
- Map schoolMap;
|
|
|
- if (!matchData.isPresent()) {
|
|
|
- schoolMap = UtilMap.map("selectField_lggd61a7, radioField_lgf7zdi5", period, "未开始");
|
|
|
- schoolMap.put("textField_lgezb8r7", formData.get("textField_lgeyihed")); // 学校全称
|
|
|
- schoolMap.put("textField_lggdp94o", formData.get("textField_lgeyihe8")); // 学校简称
|
|
|
- schoolMap.put("selectField_lggdghio", formData.get("selectField_lggdghio")); // 所属学段
|
|
|
- schoolMap.put("numberField_lgf2au4s", 0); // 在编在岗人数
|
|
|
- schoolList.add(schoolMap);
|
|
|
- } else {
|
|
|
- schoolMap = (Map) matchData.get();
|
|
|
- }
|
|
|
- // prd: 档案教师计算比例都是在编在岗
|
|
|
- if (formData.get("radioField_lgezgr8l").equals("是")) {
|
|
|
- schoolMap.put("numberField_lgf2au4s", (int) schoolMap.get("numberField_lgf2au4s") + 1);
|
|
|
- }
|
|
|
- log.debug("教师档案处理, {}", formData);
|
|
|
- }
|
|
|
- log.info("学校档案数据, {}, {}", schoolList.size(), schoolList);
|
|
|
-
|
|
|
- // 学校名额计算
|
|
|
- for (Map schoolData : schoolList) {
|
|
|
- String schoolName = String.valueOf(schoolData.get("textField_lgezb8r7"));
|
|
|
- int numZBZG = Integer.valueOf(String.valueOf(schoolData.get("numberField_lgf2au4s")));
|
|
|
- // 骨干系列: prd 骨干比例拆分比例分项计算, 合计数不一定匹配, 因此不计算骨干系列名额
|
|
|
- int ratioGDXT = mjyService.getSchoolRatio(schoolName, "骨干系列");
|
|
|
- schoolData.put("numberField_lgf2au4t", ratioGDXT);
|
|
|
- // 学科带头人和骨干教师
|
|
|
- int ratioXDGG = mjyService.getSchoolRatio(schoolName, "学科带头人和骨干教师");
|
|
|
- schoolData.put("numberField_lgf2au51", ratioXDGG);
|
|
|
- schoolData.put("numberField_lgf2au52", Math.round(numZBZG * ratioXDGG / 100));
|
|
|
- // 骨干后备
|
|
|
- int numGGHB = Math.round(numZBZG * (ratioGDXT - ratioXDGG) / 100);
|
|
|
- schoolData.put("numberField_lghpgjyk", ratioGDXT - ratioXDGG);
|
|
|
- schoolData.put("numberField_lgf2au4z", numGGHB);
|
|
|
- // 写入学校档案
|
|
|
- log.info("学校名额计算, {}", schoolData);
|
|
|
- ydParam.setFormDataJson(JSON.toJSONString(schoolData));
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLLE");
|
|
|
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.create);
|
|
|
- }
|
|
|
- return McR.success(mjyService.matchQuery(schoolList));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询学校名额
|
|
|
- */
|
|
|
- @PostMapping("query/quota")
|
|
|
- McR quotaQuery(@RequestBody Map<String, String> data) {
|
|
|
- McException.assertParamException_Null(data, "period");
|
|
|
- String period = data.get("period");
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLLE")
|
|
|
- .searchCondition(JSON.toJSONString(UtilMap.map("selectField_lggd61a7", period)))
|
|
|
- .build();
|
|
|
- List<Map> schoolList = mjyService.queryAllBySync(ydParam);
|
|
|
- log.info("学校名额数据, {}", schoolList.size());
|
|
|
- List list = schoolList.stream().map(item -> (Map) item.get("formData")).collect(Collectors.toList());
|
|
|
- return McR.success(mjyService.matchQuery(list));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 推送学校名额确认
|
|
|
- */
|
|
|
- @PostMapping("confirm/quota")
|
|
|
- McR quotaConfirm(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- McException.assertParamException_Null(data, "formInstanceId");
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formInstanceId(String.valueOf(data.get("formInstanceId")))
|
|
|
- .build();
|
|
|
- Map formData = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
- List<Map> details = (List<Map>) formData.get("tableField_lgf41nj3");
|
|
|
- // 创建学校确认流程: src - cur, 发起流程 - 学校确认; 明细内: 全称, 简称, 在编在岗, 学带 + 骨干教师, 后备, 学校负责人
|
|
|
- Map<String, String> keyMap = UtilMap.map("selectField_lgf41nj4, selectField_lgi7oaqo, numberField_lgf2au4s, numberField_lgi7oaqq, numberField_lgi7oaqr, employeeField_lgf7ky0h",
|
|
|
- "selectField_lgf41nj4, selectField_lgi7oaqo, numberField_lgf2au4s, numberField_lgi7oaqq, numberField_lgi7oaqr, employeeField_lgf7m9s4");
|
|
|
- for (Map detail : details) {
|
|
|
- // 主表读取: 届别, 提交人
|
|
|
- Map formJson = UtilMap.map("selectField_lggd61a7, employeeField_lgf7ky0i", formData.get("selectField_lggd61a7"), formData.get("employeeField_lgf6dzrv_id"));
|
|
|
- for (String key : keyMap.keySet()) {
|
|
|
- if (key.contains("employeeField_")) {
|
|
|
- formJson.put(key, detail.get(keyMap.get(key) + "_id"));
|
|
|
- } else {
|
|
|
- formJson.put(key, detail.get(keyMap.get(key)));
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("名额确认记录, {}, {}", formJson, detail);
|
|
|
- ydParam.setFormDataJson(JSON.toJSONString(formJson));
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLYD");
|
|
|
- ydParam.setProcessCode("TPROC--G2666871DH3AGJ52BWGGY62N9HGV39Y1TRTGLL6");
|
|
|
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.start);
|
|
|
- }
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 汇总学校复核数据
|
|
|
- */
|
|
|
- @Synchronized
|
|
|
- @PostMapping("approve/quota")
|
|
|
- McR quotaApprove(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- McException.assertParamException_Null(data, "formInstanceId");
|
|
|
- log.info("学校汇总, {}", data);
|
|
|
-
|
|
|
- // 查询教师申请数据
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formInstanceId(String.valueOf(data.get("formInstanceId")))
|
|
|
- .build();
|
|
|
- Map teacherData = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
-
|
|
|
- // 匹配学校汇总数据: 届别 + 学校全称
|
|
|
- Map formData = UtilMap.map("selectField_lggd61a7, selectField_lgf41nj4", teacherData.get("selectField_lgs5yclt"), teacherData.get("textField_lgf4ppaw"));
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLWD");
|
|
|
- ydParam.setSearchCondition(JSON.toJSONString(formData));
|
|
|
- List<Map> schoolApprove = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
-
|
|
|
- // 组装评审明细数据: 关联评选记录, 教师进修编号, 教师成员, 手机号, 评选类型, 行政职务
|
|
|
- formData.put("selectField_lgi7oaqo", teacherData.get("textField_lgib58q3")); // 学校简称
|
|
|
- formData.put("employeeField_lgf7ky0h", teacherData.get("employeeField_lgf7ky0h_id")); // 学校负责人
|
|
|
- formData.put("radioField_lggd61a8", "进行中"); // 届别评选状态
|
|
|
- List<Map> details = new ArrayList<>();
|
|
|
- if (UtilList.isNotEmpty(schoolApprove)) {
|
|
|
- Map recordData = schoolApprove.get(0);
|
|
|
- details = (List<Map>) (((Map) recordData.get("formData"))).get("tableField_lgiacs44");
|
|
|
- // 成员组件 && 关联表单数据处理
|
|
|
- details.forEach(item -> {
|
|
|
- item.put("employeeField_lgialujd", item.get("employeeField_lgialujd_id"));
|
|
|
- item.put("associationFormField_lgiacs47", JSON.parse(String.valueOf(item.get("associationFormField_lgiacs47_id"))));
|
|
|
- });
|
|
|
- ydParam.setFormInstanceId(String.valueOf(recordData.get("formInstanceId")));
|
|
|
- }
|
|
|
- Map detail = UtilMap.map("textField_lgialujb, employeeField_lgialujd, numberField_lgeyihee, selectField_lgf4ppa6, textField_lgt9sb8f", teacherData.get("textField_lgf4ppax"), teacherData.get("employeeField_lgf4ppa7_id"), teacherData.get("numberField_lgeyihee"), teacherData.get("selectField_lgf4ppa6"), teacherData.get("textField_lgt9sb8f"));
|
|
|
- detail.put("associationFormField_lgiacs47", Arrays.asList(UtilMap.map("appType, formUuid, instanceId, title, formType, subTitle", ydConf.getAppType(), "FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLVD", data.get("formInstanceId"), teacherData.get("textField_lgs8ej3g"), "receipt", teacherData.get("textField_lgf4ppax"))));
|
|
|
- details.add(detail);
|
|
|
- // prd 按照评选类型, 排序: 学带, 骨干, 特色, 后备
|
|
|
- Map sortRule = UtilMap.map("学科带头人, 骨干教师, 骨干后备, 特色骨干", 1, 2, 3, 4);
|
|
|
- details.forEach(item -> item.put("sort", sortRule.get(item.get("selectField_lgf4ppa6"))));
|
|
|
- Collections.sort(details, Comparator.comparingInt(o -> Integer.parseInt(String.valueOf(o.get("sort")))));
|
|
|
- formData.put("tableField_lgiacs44", details);
|
|
|
- log.info("学校汇总记录, {}", JSON.toJSONString(formData));
|
|
|
- ydParam.setFormDataJson(JSON.toJSONString(formData));
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLWD");
|
|
|
- ydParam.setProcessCode("TPROC--G2666871DH3AGJ52BWGGY62N9HGV39Y1TRTGLN6");
|
|
|
- if (UtilList.isNotEmpty(schoolApprove)) {
|
|
|
- ydParam.setUpdateFormDataJson(ydParam.getFormDataJson());
|
|
|
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.start);
|
|
|
-
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private YDService ydService;
|
|
|
-
|
|
|
- /**
|
|
|
- * 学校申报区里, 名额校验
|
|
|
- */
|
|
|
- @PostMapping("validate/quota")
|
|
|
- McR quotaValidate(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- McException.assertParamException_Null(data, "formInstanceId");
|
|
|
- log.info("名额校验, {}", data);
|
|
|
-
|
|
|
- List usersZRMD = mjyService.getDirectList(); // 直入名单
|
|
|
- // 学校申报数据
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formInstanceId(String.valueOf(data.get("formInstanceId")))
|
|
|
- .build();
|
|
|
- Map approveData = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
- List<Map> details = (List<Map>) approveData.get("tableField_lgiacs44");
|
|
|
- // 储存排名并进行排序
|
|
|
- List arrSort = (List) JSON.parse(String.valueOf(data.get("details_sort")));
|
|
|
- for (int i = 0; i < arrSort.size(); i++) {
|
|
|
- details.get(i).put("numberField_lh8monwb", arrSort.get(i));
|
|
|
- }
|
|
|
- Collections.sort(details, Comparator.comparingInt(o -> Integer.parseInt(String.valueOf(o.get("numberField_lh8monwb")))));
|
|
|
-
|
|
|
- // 匹配通过数据 & 未在直入名单 [进修编号]
|
|
|
- List arrStatus = (List) JSON.parse(String.valueOf(data.get("details_status")));
|
|
|
- List arrType = (List) JSON.parse(String.valueOf(data.get("details_type")));
|
|
|
- List arrPeerRatio = (List) JSON.parse(String.valueOf(data.get("details_peer_ratio")));
|
|
|
- List<Integer> approveList = new ArrayList();
|
|
|
- int appXKDTR = 0, appGGJS = 0, appGGHB = 0, appTSGG = 0;
|
|
|
- for (int i = 0; i < arrStatus.size(); i++) {
|
|
|
- // prd 直入名单通过人员匹配, 不占用名额, 教师信息报区里
|
|
|
- if (usersZRMD.contains(details.get(i).get("textField_lgialujb"))) {
|
|
|
- details.get(i).put("isDirect", "直入名单");
|
|
|
- approveList.add(i);
|
|
|
- log.info("直入名单, {}", details.get(i));
|
|
|
- } else if (arrStatus.get(i).equals("通过")) {
|
|
|
- if (arrType.get(i).equals("学科带头人")) appXKDTR += 1;
|
|
|
- if (arrType.get(i).equals("骨干教师")) appGGJS += 1;
|
|
|
- if (arrType.get(i).equals("骨干后备")) appGGHB += 1;
|
|
|
- if (arrType.get(i).equals("特色骨干")) appTSGG += 1;
|
|
|
- approveList.add(i);
|
|
|
- }
|
|
|
- // 记录前台填写同职比
|
|
|
- details.get(i).put("textField_lgst1j31", arrPeerRatio.get(i));
|
|
|
- }
|
|
|
- log.info("申报数量, appXKDTR = {}, appGGJS = {}, appGGHB = {}, appTSGG = {}", appXKDTR, appGGJS, appGGHB, appTSGG);
|
|
|
-
|
|
|
- // 学校名额信息: 届别 + 学校全称
|
|
|
- ydParam.setFormInstanceId(null);
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLLE");
|
|
|
- ydParam.setSearchCondition(JSON.toJSONString(UtilMap.map("selectField_lggd61a7, textField_lgezb8r7", approveData.get("selectField_lggd61a7"), approveData.get("selectField_lgf41nj4"))));
|
|
|
- ydParam.setPageSize(1);
|
|
|
- Map schoolData = (Map) ((List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_list).getData()).get(0).get("formData");
|
|
|
- int numXDGG = Integer.valueOf(String.valueOf(schoolData.get("numberField_lgf2au52")));
|
|
|
- int numGGHB = Integer.valueOf(String.valueOf(schoolData.get("numberField_lgf2au4z")));
|
|
|
- // 学带 + 骨干教师名额校验
|
|
|
- McException.assertAccessException((appXKDTR + appGGJS) > numXDGG, "申报名额校验未通过,请核查!");
|
|
|
- // 名额降级逻辑,骨干后备可以占骨干教师 + 学带名额 [prd 申报名额未用完或超标均不能上报]
|
|
|
- McException.assertAccessException((appGGHB + appXKDTR + appGGJS) != (numGGHB + numXDGG), "申报名额校验未通过,请核查!");
|
|
|
-
|
|
|
- // 更新申报信息: 进修编号, 评选类型, 同职比, 手机号
|
|
|
- Map updateJson = UtilMap.map("numberField_lgstol7i, numberField_lgstol7k, numberField_lgstol7j, numberField_lgstol7l", appXKDTR, appGGJS, appGGHB, appTSGG);
|
|
|
- List<Map> appDetails = approveList.stream().map(index -> {
|
|
|
- Map item = details.get(index); // 记录索引
|
|
|
- Map row = UtilMap.map("textField_lgst1j33, selectField_lgst1j35, textField_lgst1j3g, numberField_lgst1j37", item.get("textField_lgialujb"), item.get("selectField_lgf4ppa6"), item.get("textField_lgst1j31"), item.get("numberField_lgeyihee"));
|
|
|
- row.put("textField_lgt59zeb", item.get("isDirect"));
|
|
|
- row.put("employeeField_lgst1j34", item.get("employeeField_lgialujd_id"));
|
|
|
- row.put("associationFormField_lgst1j32", JSON.parse(String.valueOf(item.get("associationFormField_lgiacs47_id"))));
|
|
|
- return row;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- updateJson.put("tableField_lgst1j3e", appDetails);
|
|
|
- updateJson.put("tableField_lgiacs44", details); // 更新学校排序
|
|
|
- ydParam.setFormInstanceId(String.valueOf(data.get("formInstanceId")));
|
|
|
- ydParam.setUpdateFormDataJson(JSON.toJSONString(updateJson));
|
|
|
- // 操作数据 [异步] - 审批通过立即更新, 会无效
|
|
|
- ydService.operateData(ydParam, YDConf.FORM_OPERATION.update);
|
|
|
- log.info("更新申报信息, {}", appDetails);
|
|
|
-
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-
|
|
|
- // 宜搭审批页面弱校验提示框会被覆盖, 或另一个校验冲销. 添加记录, 第二次请求放行
|
|
|
- private Map checkMap = new HashMap();
|
|
|
-
|
|
|
- /**
|
|
|
- * 学校申报区里, 学校中层或校级副职干部, 弱校验
|
|
|
- */
|
|
|
- @PostMapping("check/quota")
|
|
|
- McR quotaCheck(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- McException.assertParamException_Null(data, "formInstanceId");
|
|
|
- log.info("名额验证, {}", data);
|
|
|
-
|
|
|
- List usersZRMD = mjyService.getDirectList(); // 直入名单
|
|
|
- // 学校申报数据
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formInstanceId(String.valueOf(data.get("formInstanceId")))
|
|
|
- .build();
|
|
|
- Map approveData = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
- List<Map> details = (List<Map>) approveData.get("tableField_lgiacs44");
|
|
|
- // 匹配通过数据 & 未在直入名单 [进修编号]
|
|
|
- List arrStatus = (List) JSON.parse(String.valueOf(data.get("details_status")));
|
|
|
- List arrType = (List) JSON.parse(String.valueOf(data.get("details_type")));
|
|
|
- List<Map> approveList = new ArrayList();
|
|
|
- int appGGHB = 0;
|
|
|
- for (int i = 0; i < arrStatus.size(); i++) {
|
|
|
- // prd 直入名单通过人员匹配, 不占用名额, 教师信息报区里
|
|
|
- if (usersZRMD.contains(details.get(i).get("textField_lgialujb"))) {
|
|
|
- approveList.add(details.get(i));
|
|
|
- details.get(i).put("isDirect", "直入名单");
|
|
|
- log.info("直入名单, {}", details.get(i));
|
|
|
- } else if (arrStatus.get(i).equals("通过")) {
|
|
|
- approveList.add(details.get(i));
|
|
|
- if (arrType.get(i).equals("骨干后备")) appGGHB += 1;
|
|
|
- }
|
|
|
- }
|
|
|
- float numZCXF = approveList.stream().filter(item -> Arrays.asList("学校副职", "中层副职", "中层正职").contains(item.get("textField_lgt9sb8f"))).collect(Collectors.toList()).size();
|
|
|
- log.info("学校中层或校级副职干部, 弱校验, appGGHB = {}, nunZCXF = {}", appGGHB, numZCXF);
|
|
|
-
|
|
|
- // 学校名额信息: 届别 + 学校全称
|
|
|
- ydParam.setFormInstanceId(null);
|
|
|
- ydParam.setFormUuid("FORM-AC666081555ANZAZ6D4IVCQLY5Y12P4ZSRTGLLE");
|
|
|
- ydParam.setSearchCondition(JSON.toJSONString(UtilMap.map("selectField_lggd61a7, textField_lgezb8r7", approveData.get("selectField_lggd61a7"), approveData.get("selectField_lgf41nj4"))));
|
|
|
- ydParam.setPageSize(1);
|
|
|
- Map schoolData = (Map) ((List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_list).getData()).get(0).get("formData");
|
|
|
- // prd 学校中层或校级副职干部,每周兼课时数需达到教育局规定课时量,比例不超过学校申报骨干后备教师人选的20%。(学校教师人在编在岗数不满30人,比例不超过学校申报骨干后备教师人选的25%)
|
|
|
- float numZBZG = Integer.valueOf(String.valueOf(schoolData.get("numberField_lgf2au4s")));
|
|
|
- int ratio = numZBZG >= 30 ? 25 : 20;
|
|
|
- log.info("学校中层或校级副职干部, 弱校验, check = {}, ratio = {}", appGGHB / numZBZG, ratio / 100F);
|
|
|
- if (!checkMap.containsKey(data.get("formInstanceId"))) {
|
|
|
- checkMap.put(data.get("formInstanceId"), true);
|
|
|
- McException.assertAccessException((appGGHB / numZBZG) > (ratio / 100F), "学校中层或校级副职干部, 占比骨干后备超标准");
|
|
|
- }
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否直入名单
|
|
|
- */
|
|
|
- @PostMapping("direct/quota")
|
|
|
- McR directQuota(@RequestBody Map data) {
|
|
|
- log.info("是否直入名单", data);
|
|
|
- McException.assertParamException_Null(data, "code");
|
|
|
- List usersZRMD = mjyService.getDirectList(); // 直入名单
|
|
|
- return McR.success(UtilMap.map("isDirect", usersZRMD.contains(data.get("code"))));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 退回卡片通知
|
|
|
- * 被学校退回:某某老师,您的骨干系列评选材料已被学校退回。
|
|
|
- * 被区级退回:某某老师,您的骨干系列评选材料已被区级退回;某某学校,您校某某老师的评选资料已被区级退回。
|
|
|
- */
|
|
|
- @PostMapping("notice/sendback")
|
|
|
- McR sendBackNotice(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- log.info("退回卡片通知, {}", data);
|
|
|
- McException.assertParamException_Null(data, "teachers, administrator, results, associations, createUserId, schoolName");
|
|
|
- List<String> teachers = (List<String>) JSON.parse(String.valueOf(data.get("teachers")));
|
|
|
- List<String> associations = (List<String>) JSON.parse(String.valueOf(data.get("associations")));
|
|
|
- List<String> results = (List<String>) JSON.parse(String.valueOf(data.get("results")));
|
|
|
- String createUserId = String.valueOf(data.get("createUserId"));
|
|
|
- String schoolName = String.valueOf(data.get("schoolName"));
|
|
|
- for (int i = 0; i < results.size(); i++) {
|
|
|
- String status = results.get(i);
|
|
|
- if (!Arrays.asList("不通过", "退回").contains(status)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- List<Map> associationForm = (List<Map>) JSON.parse(associations.get(i));
|
|
|
- String notice = associationForm.get(0).get("title") + "老师[" + associationForm.get(0).get("subTitle") + "]";
|
|
|
- Map formData = UtilMap.map("employeeField_lhgj6tc7, employeeField_lhgj6tc9, associationFormField_lgiacs47", JSON.parse(teachers.get(i)), data.get("administrator"), associationForm);
|
|
|
- if ("不通过".equals(status)) {
|
|
|
- notice += ", 您好: \n您的骨干系列评选材料已被学校退回。";
|
|
|
- }
|
|
|
- if ("退回".equals(status)) {
|
|
|
- notice += ", 您好: \n您的骨干系列评选材料已被区级退回。";
|
|
|
- // 通知学校
|
|
|
- String new_notice = schoolName + ", 管理员您好: \n您校" + associationForm.get(0).get("title") + "老师[" + associationForm.get(0).get("subTitle") + "]";
|
|
|
- new_notice += "的评选资料已被区级退回。";
|
|
|
- formData.put("textareaField_lhgj6tcu", new_notice);
|
|
|
- mjyService.triggerNotice("FORM-NC966W81139A3Y5QEEXT5AZ6BU7M3TB0C9LHLO", createUserId, formData);
|
|
|
- }
|
|
|
- // 通知老师
|
|
|
- formData.put("textareaField_lhgj6tcu", notice);
|
|
|
- mjyService.triggerNotice("FORM-NT766881D48AF5W78VL7L6VLZTAJ2TOE6JGHL92", createUserId, formData);
|
|
|
- }
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 评选信息变更
|
|
|
- */
|
|
|
- @PostMapping("update/details")
|
|
|
- McR updateDetails(HttpServletRequest request) {
|
|
|
- Map data = UtilServlet.getParamMap(request);
|
|
|
- McException.assertParamException_Null(data, "formInstanceId");
|
|
|
- log.info("信息变更, {}", data);
|
|
|
-
|
|
|
- YDParam ydParam = YDParam.builder()
|
|
|
- .formInstanceId(String.valueOf(data.get("formInstanceId")))
|
|
|
- .build();
|
|
|
- Map formData = ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
- List<Map> details = (List<Map>) formData.get("tableField_lgs5ycm5");
|
|
|
-
|
|
|
- List<Map> association = (List<Map>) JSON.parse(String.valueOf(data.get("associationComp")));
|
|
|
- ydParam.setFormInstanceId(String.valueOf(association.get(0).get("instanceId")));
|
|
|
- ydParam.setUpdateFormDataJson(JSON.toJSONString(UtilMap.map("tableField_lgs5ycm5", details)));
|
|
|
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
|
|
|
- return McR.success();
|
|
|
- }
|
|
|
-}
|