package com.malk.xinwei.controller; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.malk.Util.UtilServlet; 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.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableAsync; 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 错误抛出与拦截详见 CatchException */ @Slf4j @RestController @RequestMapping("/chuoqi") @EnableAsync public class SuoDiSiController { /**** 索迪斯服务 ****/ @Autowired private YDClient ydClient; /** * 动态审批人 */ @PostMapping("sds/test") List sdsTest(HttpServletRequest request) { Map param = UtilServlet.getParamMap(request); McException.assertParamException_Null(param, "finance"); Map condition = new HashMap(); condition.put("textField_lg52q035", param.get("finance")); YDParam ydParam = YDParam.builder() .appType("APP_Y75CEY3YR30YOLEWETJJ") .systemToken("BY866R813JM8XVLGD7YELCPDH9IL29Z5BQQEL48") .formUuid("FORM-8Y866XB1AXM9DFV3AW6D7AV2WWEK2F3OP25GLD") .searchFieldJson(JSON.toJSONString(condition)) .build(); List list = (List) ydClient.queryData(YDConf.API_FORM_QUERY_DATA, ydParam).get("data"); Map formData = (Map) list.get(0).get("formData"); log.info("索迪斯动态审批人, {}, {}", param, formData); return (List) formData.get("employeeField_lg52q036_id"); } /** * 回写招聘子表 */ @PostMapping("sds/update") Map sdsUpdate(HttpServletRequest request) { // 查询招聘申请 Map param = UtilServlet.getParamMap(request); McException.assertParamException_Null(param, "formInstId"); YDParam ydParam = YDParam.builder() .appType("APP_Y75CEY3YR30YOLEWETJJ") .systemToken("BY866R813JM8XVLGD7YELCPDH9IL29Z5BQQEL48") .formInstId(String.valueOf(param.get("formInstId"))) .build(); Map rsp = (Map) ydClient.operateData(YDConf.API_FORM_DETAIL, ydParam); Map formData = (Map) rsp.get("formData"); log.info("索迪斯回写子表, {}, {}", param, formData); // 组装分发子表数据 Map detail = new HashMap(); detail.put("associationFormField_lf7pkag4", JSON.parse(String.valueOf(formData.get("associationFormField_lg54gbt9_id")))); // 职位组 detail.put("textField_lf7pkag5", formData.get("textField_lg54gbta")); // 新员工姓名 detail.put("dateField_lf7pkag6", formData.get("dateField_lg54gbtf")); // 入职日期 // todo: 成员, 附件, 关联表单 List association = JSON.parseArray(String.valueOf(JSON.parse(String.valueOf(formData.get("associationFormField_lg0gmbi8_id")))), Map.class); String formInstId = String.valueOf(association.get(0).get("instanceId")); ydParam.setFormInstId(formInstId); Map rspSrc = (Map) ydClient.operateData(YDConf.API_FORM_DETAIL, ydParam); Map formDataSrc = (Map) rspSrc.get("formData"); List list = new ArrayList<>(); if (ObjectUtil.isNotNull(formDataSrc.get("tableField_lf7pkag3"))) { list = (List) formDataSrc.get("tableField_lf7pkag3"); } // 更新流程数据 Map form = new HashMap(); list.add(detail); form.put("tableField_lf7pkag3", list); form.put("numberField_lfj9d501", 2); ydParam.setUpdateFormDataJson(JSON.toJSONString(form)); ydClient.operateData(YDConf.API_FORM_UPDATE, ydParam); log.info("更新, {}, {}", formInstId, form); Map r = new HashMap(); r.put("success", true); return r; } @Autowired private YDService ydService; /** * GXG基础档案 */ @PostMapping("gxg/data-list") McR gxgDataList(@RequestBody Map data) { Map condition = new HashMap(); YDParam ydParam = YDParam.builder() .appType("APP_YGFK3PFENGL4E7RMLZEV") .systemToken("L5666S81WTM9LWRB9POYW974EWBA3ISV5WBGLDA") .formUuid("FORM-4H666KB1FVP9UEXX8UQBT7GBB5CR20UV5WBGLGJ") .searchFieldJson(JSON.toJSONString(condition)) .currentPage(1) .pageSize(100) .build(); List list = new ArrayList(); ydService.queryLimitData(YDConf.API_FORM_QUERY_DATA, ydParam, YDService.INVOKE_TYPE.AWAIT_CONCURRENCE, list::addAll); log.info("GXG基础档案, {}, {}", data, list.size()); return McR.success(list.stream().map(item -> { Map record = new HashMap(); record.put("name", ((Map) item.get("formData")).get("textField_lg62a86d")); record.put("code", ((Map) item.get("formData")).get("textField_lg62ksb8")); record.put("area", ((Map) item.get("formData")).get("textField_lg62a86e")); return record; }).collect(Collectors.toList())); } }