| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704 |
- package com.malk.hangshi.service.Impl;
- import cn.hutool.core.util.ObjectUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.malk.hangshi.service.DingTalkService;
- import com.malk.hangshi.service.PayService;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.aliwork.YDParam;
- import com.malk.server.common.McException;
- import com.malk.server.dingtalk.DDConf;
- import com.malk.server.dingtalk.DDR;
- import com.malk.server.dingtalk.MDR;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.aliwork.YDService;
- import com.malk.service.dingtalk.*;
- import com.malk.utils.UtilMap;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.ZoneId;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- @Service
- @Slf4j
- public class PayServiceImpl implements PayService {
- @Autowired
- private DDClient ddClient;
- @Autowired
- private DDClient_Workflow ddClient_workflow;
- @Autowired
- private DDClient_Meeting ddClientMeeting;
- @Autowired
- private DDClient_Contacts ddClient_contacts;
- @Autowired
- private DDClient_Personnel ddClientPersonnel;
- @Value("${dingtalk.appKey}")
- private String APP_EKY;
- @Value("${dingtalk.appSecret}")
- private String APP_SECRET;
- @Value("${dingtalk.agentId}")
- private Long agentId;
- @Autowired
- DingTalkService dingTalkService;
- @Autowired
- DDService ddService;
- @Autowired
- private YDClient ydClient;
- @Autowired
- private YDService ydService;
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- private static final String API_TOKEN = "/corpAccessToken/get/V2";
- private static final String POST_GET_USER = "/user/getByMobile";
- private static final String POST_DATA_UPDATE = "/crm/custom/v2/data/update";
- private static final String TABLE_PRODUCT_FIELID = "TableField_BEUZFS0B8R40";
- private static final String TABLE_CELLLINES_FIELID = "TableField_M04O3XGALA80";
- private static String CROPID = "";
- private ConcurrentHashMap<String, LocalDateTime> formInstanceIdStore = new ConcurrentHashMap<>();
- //所有的人员控件枚举
- private static final Map<String, String> EMPLOYEE_ENUM = new HashMap<>();
- static {
- EMPLOYEE_ENUM.put("下属公司","employeeField_mji9tann");
- EMPLOYEE_ENUM.put("一线部门","employeeField_mji9tany");
- EMPLOYEE_ENUM.put("室","employeeField_mji9tao9");
- EMPLOYEE_ENUM.put("班组","employeeField_mjiac7gr");
- }
- //运行控制子表枚举
- private static final Map<String, String> OPERATION_CONTROL = new HashMap<>();
- static {
- OPERATION_CONTROL.put("投资公司","tableField_mjavj2r6");
- OPERATION_CONTROL.put("下属公司","tableField_mji9tanq");
- OPERATION_CONTROL.put("一线部门","tableField_mji9tao1");
- OPERATION_CONTROL.put("室","tableField_mji9taoc");
- }
- //安全生产子表枚举
- private static final Map<String, String> WORK_SAFETY = new HashMap<>();
- static {
- WORK_SAFETY.put("投资公司","tableField_mjgiipn0");
- // WORK_SAFETY.put("下属公司","tableField_mji9tant");
- // WORK_SAFETY.put("一线部门","tableField_mji9tao4");
- // WORK_SAFETY.put("室","tableField_mji9taof");
- }
- //质量控制子表枚举
- private static final Map<String, String> QUALITY_CONTROL = new HashMap<>();
- static {
- QUALITY_CONTROL.put("投资公司","tableField_mjgiipn4");
- // QUALITY_CONTROL.put("下属公司","tableField_mji9tanw");
- // QUALITY_CONTROL.put("一线部门","tableField_mji9tao7");
- // QUALITY_CONTROL.put("室","tableField_mji9taoi");
- }
- private YDParam.YDParamBuilder _initLYParam() {
- return YDParam.builder()
- .appType("APP_PG9VWQVT23CRFBOOOG6Y")
- .systemToken("73D66971EQO1KI40NT9M96FHV3BK3CZNBQGJMWX1");
- }
- /**
- * token存储
- * @param formInstanceId
- * @param expireMinutes
- */
- public void addToken(String formInstanceId, int expireMinutes) {
- log.info("缓存添加id:{}",formInstanceId);
- LocalDateTime expirationTime = LocalDateTime.now().plusMinutes(expireMinutes);
- formInstanceIdStore.put(formInstanceId, expirationTime);
- }
- /**
- * 清理过期token
- * @param token
- * @return
- */
- public boolean validateToken(String token) {
- LocalDateTime expirationTime = formInstanceIdStore.get(token);
- if (expirationTime == null || expirationTime.isBefore(LocalDateTime.now())) {
- formInstanceIdStore.remove(token); // 清理过期 Token
- return false;
- }
- return true;
- }
- /**
- * 发起流程审批
- * @param formInstanceId
- * @param depId 部门id
- * @return 流程实例id和地址
- */
- @Override
- public Map<String, Object> startProcess(String formInstanceId, String depId, String serial) {
- log.info("开始发起流程审批");
- addToken(formInstanceId + ",0",1440);
- //获取部门下所有员工id
- List<String> workingEmployeeIds = ddClient_contacts.listDepartmentUserId(ddClient.getAccessToken(), Long.parseLong(depId));
- List<String> instanceIds = new ArrayList<>();
- //发送失败的userid
- List<String> errorEmployeeIds = new ArrayList<>();
- Map formData = ydClient.queryData(_initLYParam()
- .formInstId(formInstanceId).build()
- , YDConf.FORM_QUERY.retrieve_id).getFormData();
- //整合子表
- List<List<Map>> lastList = new ArrayList<>();
- // extracted(formData, lastList, OPERATION_CONTROL, "(一)运行控制");
- // extracted(formData, lastList, WORK_SAFETY, "(二)安全生产");
- // extracted(formData, lastList, QUALITY_CONTROL, "(三)质量控制");
- extracted(formData, lastList);
- String meetingTitle = UtilMap.getString(formData, "textField_mjsiv3xl");
- String ClassContent = UtilMap.getString(formData, "textareaField_mkg9hebk");
- List banzus = UtilMap.getList(formData, "departmentSelectField_mjb7ixr6");//班组
- List yixianbumen = UtilMap.getList(formData, "departmentSelectField_mjb7ixr6");//一线部门
- String attachmentStr = UtilMap.getString(formData, "attachmentField_mkv4ln1q");
- JSONArray attachments = JSONArray.parseArray(attachmentStr);
- List<Map<String, Object>> resultList = new ArrayList<>();
- if (ObjectUtil.isNotNull(attachments) && attachments.size() > 0){
- log.info("开始处理附件上传");
- attachments.forEach(e->{
- JSONObject value = (JSONObject) JSONObject.parse(e.toString());
- String[] split = UtilMap.getString(value, "name").split("\\.");
- String downLoadUrl = "https://c6eln1.aliwork.com"+UtilMap.getString(value, "downloadUrl");
- String fileName = split[0];
- String type = split[1];
- downLoadUrl = ydClient.convertTemporaryUrl(downLoadUrl,"APP_PG9VWQVT23CRFBOOOG6Y","73D66971EQO1KI40NT9M96FHV3BK3CZNBQGJMWX1");
- Map map = ddService.uploadFileFormUrlForOverflow(ddClient.getAccessToken(), "957340835", downLoadUrl, fileName, type);
- Map<String, Object> result = UtilMap.map("spaceId, fileName, fileSize, fileType, fileId", UtilMap.getString(map, "spaceId"), fileName,
- UtilMap.getString(map, "size"), UtilMap.getString(map, "extension"), UtilMap.getString(map, "id"));
- resultList.add(result);
- });
- }
- try {
- workingEmployeeIds.forEach(e->{
- List<Map> formValue = new ArrayList<>();
- List<String> empList = new ArrayList<>();
- empList.add(e);
- formValue.add(UtilMap.map("name, value","附件",JSON.toJSONString(resultList)));
- // empList.add("153620324221442254");
- formValue.add(UtilMap.map("name, value","流水号",serial));
- formValue.add(UtilMap.map("name, value","宣讲明细",JSON.toJSONString(lastList)));
- formValue.add(UtilMap.map("name, value","宜搭班组会id",formInstanceId));
- formValue.add(UtilMap.map("name, value","班组会会议主题",meetingTitle));
- formValue.add(UtilMap.map("name, value","班组宣贯内容",ClassContent));
- formValue.add(UtilMap.map("name, value","creator",e));
- // formValue.add(UtilMap.map("name, value","creator","153620324221442254"));
- formValue.add(UtilMap.map("name, value","联系人", JSON.toJSONString(empList)));
- // String result = ddClient_workflow.doProcessInstancesNew(ddClient.getAccessToken(), e, "PROC-597774D7-7E42-4C88-AC1D-06CA945E70C9", formValue, depId);
- String result = ddClient_workflow.doProcessInstancesNew(ddClient.getAccessToken(), "957340835", "PROC-597774D7-7E42-4C88-AC1D-06CA945E70C9", formValue, depId);
- JSONObject jsonObject = JSONObject.parseObject(result);
- if (!ObjectUtil.isNotNull(jsonObject.get("instanceId"))){
- errorEmployeeIds.add(e);
- }else {
- instanceIds.add(jsonObject.get("instanceId").toString());
- }
- });
- } catch (Exception e) {
- log.info("发起流程失败:{}",e);
- e.printStackTrace();
- }
- String url = "https://applink.dingtalk.com/approval/detail?corpId=ding226da4276814d290a1320dcb25e91351&instanceId=";
- return UtilMap.map("ddProcessId, dtUrl, errorEmpIds", instanceIds, url,errorEmployeeIds);
- }
- private static void extracted(Map formData, List<List<Map>> lastList, Map<String, String> currentMap, String type) {
- List<Map> details = new ArrayList<>();
- final String[] content = {""};
- currentMap.forEach((k1,v1)->{
- List<Map> sonList = (List<Map>) formData.get(v1);
- if (ObjectUtil.isNotNull(sonList) && sonList.size() > 0){
- sonList.forEach(s->{
- s.forEach((k2,v2)->{
- content[0] = content[0] + v2 + System.lineSeparator();
- });
- });
- }
- });
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型",type));
- lastList.add(details);
- }
- private static void extracted(Map formData, List<List<Map>> lastList) {
- List<Map> mapList1 = UtilMap.getList(formData,OPERATION_CONTROL.get("投资公司") );
- List<Map> mapList2 = UtilMap.getList(formData,WORK_SAFETY.get("投资公司"));
- List<Map> mapList3 = UtilMap.getList(formData,QUALITY_CONTROL.get("投资公司"));
- List<Map> mapList4 = UtilMap.getList(formData,OPERATION_CONTROL.get("下属公司"));
- List<Map> mapList5 = UtilMap.getList(formData,OPERATION_CONTROL.get("一线部门"));
- List<Map> mapList6 = UtilMap.getList(formData,OPERATION_CONTROL.get("室"));
- if (ObjectUtil.isNotNull(mapList1) && mapList1.size()>0){
- final String[] content = {""};
- mapList1.forEach(e1->{
- e1.forEach((k,v)->{
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","(一)运行控制"));
- lastList.add(details);
- }
- if (ObjectUtil.isNotNull(mapList2) && mapList2.size()>0) {
- final String[] content = {""};
- mapList2.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","(二)安全生产"));
- lastList.add(details);
- }
- if (ObjectUtil.isNotNull(mapList3) && mapList3.size()>0) {
- final String[] content = {""};
- mapList3.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","(三)质量控制"));
- lastList.add(details);
- }
- if (ObjectUtil.isNotNull(mapList4) && mapList4.size()>0) {
- final String[] content = {""};
- mapList4.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","下属公司"));
- lastList.add(details);
- }
- if (ObjectUtil.isNotNull(mapList5) && mapList5.size()>0) {
- final String[] content = {""};
- mapList5.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","一线部门"));
- lastList.add(details);
- }
- if (ObjectUtil.isNotNull(mapList6) && mapList6.size()>0) {
- final String[] content = {""};
- mapList6.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",content[0]));
- details.add(UtilMap.map("name, value","类型","室"));
- lastList.add(details);
- }
- List<Map> details = new ArrayList<>();
- details.add(UtilMap.map("name, value","内容",UtilMap.getString(formData, "textareaField_mkg9hebk")));
- details.add(UtilMap.map("name, value","类型","班组"));
- lastList.add(details);
- }
- /**
- * 终止流程
- * @param data 传参
- * @return 是否成功
- */
- @Override
- public Map terminateProcess(Map data) {
- boolean isSystem = false;
- if (data.containsKey("isSystem") && ObjectUtil.isNotNull(data.get("isSystem"))){
- isSystem = UtilMap.getBoolean(data,"isSystem");
- }
- String operatingUserId = "";
- if (data.containsKey("operatingUserId")){
- operatingUserId = UtilMap.getString(data,"operatingUserId");
- }
- boolean isOk = ddClient_workflow.terminateRunningApproveNew(ddClient.getAccessToken(), UtilMap.getString(data, "processInstanceId"), isSystem, UtilMap.getString(data, "remark"), operatingUserId);
- return UtilMap.map("result",isOk);
- }
- @Override
- public void meetingIssue(String formInstanceId) {
- LocalDate today = LocalDate.now().plusDays(1);
- String dateStr = today.format(formatter);
- long timestamp = today.atStartOfDay(ZoneId.systemDefault())
- .toInstant()
- .toEpochMilli();
- Map formData = ydClient.queryData(_initLYParam()
- .formInstanceId(formInstanceId)
- .useLatestVersion(true)
- .build(),
- YDConf.FORM_QUERY.retrieve_id).getFormData();
- List department = UtilMap.getList(formData, "departmentSelectField_mjb7ixr6_id");
- log.info("开始执行下发流程,部门类型:{},id:{}",UtilMap.getString(formData, "selectField_mjavj2ry"),formInstanceId);
- List<Map> dataList = new ArrayList<>();
- //如果是投资公司下发,则查询所有下属公司,因为在部门档案表中上级部门无法选择投资公司
- if (UtilMap.getString(formData, "selectField_mjavj2ry").equals("投资公司")){
- //写入AI表格
- insertAIExcel(formData);
- dataList = ydService.queryFormData_all(_initLYParam()
- .formUuid("FORM-651D1713A25E423FB4EC1A5A06A7A741QWEY")
- .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_mjgj9non, radioField_mjgsdrat", "下属公司","开启")))
- .build());
- }else {
- dataList = ydService.queryFormData_all(_initLYParam()
- .formUuid("FORM-651D1713A25E423FB4EC1A5A06A7A741QWEY")
- .searchFieldJson(JSON.toJSONString(UtilMap.map("departmentSelectField_mjgqcjsw, radioField_mjgsdrat", department.get(0),"开启")))
- .build());
- }
- dataList.forEach(e->{
- List issueDepartment = UtilMap.getList(e, "departmentSelectField_mjgj9noi_id");
- List issueEmployee = UtilMap.getList(e, "employeeField_mjgj9noh_id");
- String depType = UtilMap.getString(e,"selectField_mjgj9non");
- formData.put("selectField_mjavj2ry",depType);
- formData.put("departmentSelectField_mjb7ixr6",issueDepartment);
- formData.put("dateField_mjb860nt",System.currentTimeMillis());
- formData.put("textField_mkv4ln1p",UtilMap.getString(formData, "serialNumberField_mkv4ln1o"));
- formData.put("employeeField_mji9tann",UtilMap.getList(formData, "employeeField_mji9tann_id"));
- formData.put("employeeField_mji9tany",UtilMap.getList(formData, "employeeField_mji9tany_id"));
- formData.put("employeeField_mji9tao9",UtilMap.getList(formData, "employeeField_mji9tao9_id"));
- formData.put("departmentSelectField_mkkjlg1x",UtilMap.getList(formData, "departmentSelectField_mkkjlg1x_id"));
- formData.put("departmentSelectField_mkkjlg1y",UtilMap.getList(formData, "departmentSelectField_mkkjlg1y_id"));
- formData.put(EMPLOYEE_ENUM.get(UtilMap.getString(e,"selectField_mjgj9non")),issueEmployee);
- /*发起流程*/
- if (depType.equals("班组")){
- String classType = UtilMap.getString(e,"radioField_mke10pcc");
- List<Map> mapList1 = UtilMap.getList(formData,OPERATION_CONTROL.get("投资公司") );
- List<Map> mapList2 = UtilMap.getList(formData,WORK_SAFETY.get("投资公司"));
- List<Map> mapList3 = UtilMap.getList(formData,QUALITY_CONTROL.get("投资公司"));
- List<Map> mapList4 = UtilMap.getList(formData,OPERATION_CONTROL.get("下属公司"));
- List<Map> mapList5 = UtilMap.getList(formData,OPERATION_CONTROL.get("一线部门"));
- List<Map> mapList6 = UtilMap.getList(formData,OPERATION_CONTROL.get("室"));
- final String[] content = {"投资公司 \n"};
- if (ObjectUtil.isNotNull(mapList1) && mapList1.size()>0){
- content[0] = content[0] + "(一)运行控制 \n";
- mapList1.forEach(e1->{
- e1.forEach((k,v)->{
- content[0] = content[0] + v;
- });
- });
- }
- if (ObjectUtil.isNotNull(mapList2) && mapList2.size()>0) {
- content[0] = content[0] + "\n(二)安全生产 \n";
- mapList2.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (ObjectUtil.isNotNull(mapList3) && mapList3.size()>0) {
- content[0] = content[0] + "\n(三)质量控制 \n";
- mapList3.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (ObjectUtil.isNotNull(mapList4) && mapList4.size()>0 ) {
- content[0] = content[0] + "\n下属公司 \n";
- mapList4.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (ObjectUtil.isNotNull(mapList5) && mapList5.size()>0) {
- content[0] = content[0] + "\n一线部门 \n";
- mapList5.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (ObjectUtil.isNotNull(mapList6) && mapList6.size()>0) {
- content[0] = content[0] + "\n室 \n";
- mapList6.forEach(e1 -> {
- e1.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- formData.put("textField_mjkuqqx4",issueDepartment.get(0));
- formData.put("numberField_mjqsi2ut",0);
- formData.put("dateField_mlj0cv20",timestamp);
- formData.put("radioField_mke10pcc",classType);//是否外包
- formData.put("textareaField_mke0p9o9",content[0]);//上级部门内容
- String name = "";
- try {
- Map deptInfo = ddClient_contacts.getDepartmentInfo(ddClient.getAccessToken(), Long.parseLong(UtilMap.getList(e, "departmentSelectField_mjgj9noi_id").get(0).toString()));
- name = UtilMap.getString(deptInfo, "name");
- log.info("部门信息:{}",deptInfo);
- } catch (NumberFormatException ex) {
- name = UtilMap.getList(e, "departmentSelectField_mjgj9noi").get(0).toString();
- log.info("获取部门信息出错:{}",ex.toString());
- ex.printStackTrace();
- }
- formData.put("textField_mjsiv3xl",name + dateStr + "班前会");//会议主题
- try {
- ydClient.operateData(_initLYParam()
- .formUuid("FORM-18921AB3A1AD4CC6853EB7631B9ABA0AHCF3")
- .formDataJson(JSON.toJSONString(formData))
- .build(), YDConf.FORM_OPERATION.start);
- }catch (McException mcException){
- try {
- Thread.sleep(10000);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- ydClient.operateData(_initLYParam()
- .formUuid("FORM-18921AB3A1AD4CC6853EB7631B9ABA0AHCF3")
- .formDataJson(JSON.toJSONString(formData))
- .build(), YDConf.FORM_OPERATION.start);
- mcException.printStackTrace();
- }
- }else {
- if(depType.equals("下属公司")){
- formData.put("departmentSelectField_mkkjlg1x",issueDepartment);
- }else if(depType.equals("一线部门")){
- formData.put("departmentSelectField_mkkjlg1y",issueDepartment);
- }
- ydClient.operateData(_initLYParam()
- .formUuid("FORM-609926407D9D4CABB771228200AEE57EKGSE")
- .formDataJson(JSON.toJSONString(formData))
- .build(), YDConf.FORM_OPERATION.start);
- }
- });
- }
- /**
- * 写入AI表格
- * @param formData
- */
- private void insertAIExcel(Map formData) {
- log.info("开始执行插入AI表格");
- LocalDate today = LocalDate.now();
- String dateStr = today.format(formatter);
- List<Map> mapList1 = UtilMap.getList(formData,OPERATION_CONTROL.get("投资公司"));
- List<Map> mapList2 = UtilMap.getList(formData,WORK_SAFETY.get("投资公司"));
- List<Map> mapList3 = UtilMap.getList(formData,QUALITY_CONTROL.get("投资公司"));
- final String[] content = {""};
- if (mapList1.size()>0 && ObjectUtil.isNotNull(mapList1)){
- content[0] = content[0] + "(一)运行控制 \n";
- mapList1.forEach(e->{
- e.forEach((k,v)->{
- content[0] = content[0] + v;
- });
- });
- }
- if (mapList2.size()>0 && ObjectUtil.isNotNull(mapList2)) {
- content[0] = content[0] + "\n(二)安全生产 \n";
- mapList2.forEach(e -> {
- e.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (mapList3.size()>0 && ObjectUtil.isNotNull(mapList3)) {
- content[0] = content[0] + "\n(三)质量控制 \n";
- mapList3.forEach(e -> {
- e.forEach((k, v) -> {
- content[0] = content[0] + v;
- });
- });
- }
- if (mapList1.size()>0 || mapList2.size()>0 || mapList3.size()>0){
- List<Map<String,Object>> records = new ArrayList<>();
- Map<String, Object> map = UtilMap.map("fields", UtilMap.map("标题, 内容", "东航食品每日运行风险通告("+dateStr+")",content[0]));
- records.add(map);
- Map body = UtilMap.map("records", records);
- try {
- DDR.doPost("https://api.dingtalk.com/v1.0/notable/bases/XPwkYGxZV3yb9pLrsg2e2ZRZ8AgozOKL/sheets/数据表/records?operatorId=HFfiiOvDDoszFVOKmtiShJQwiEiE", DDConf.initTokenHeader(ddClient.getAccessToken()), null, body);
- } catch (Exception e) {
- log.info("返回值映射问题,不必理会");
- // e.printStackTrace();
- }
- }
- }
- @Override
- public void getInvestmentCompany(boolean isLastTime) {
- LocalDate today = LocalDate.now();
- // 2. 定义常用格式化器(按需选择)
- // 格式1:yyyy-MM-dd(推荐,通用格式)
- String dateStr = today.format(formatter);
- // List<Map> dataList = ydService.queryFormData_all(_initLYParam()
- // .formUuid("FORM-609926407D9D4CABB771228200AEE57EKGSE")
- List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
- .appType("APP_PUWIPZKD59N56D06GBJO")
- .systemToken("KM666OC1PIGVI5674V8ZPAHRBQBD3LO0WQ5WKR1")
- .formUuid("FORM-WY766581TT8BA0H9AYDQZ565KGDD2K9AX5SILH")
- .createFromTimeGMT(dateStr + " 00:00:00").createToTimeGMT(dateStr + " 23:59:59")
- .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_mjjo82fr","否")))
- .build());
- log.info("日期:{},条数:{}",dateStr,dataList.size());
- if ((isLastTime && dataList.size() != 0) || (ObjectUtil.isNotNull(dataList) && dataList.size() >= 3)){
- Map<String, Object> formData = new HashMap<>();
- formData.put("selectField_mjavj2ry","投资公司");
- formData.put("dateField_mjb860nt",System.currentTimeMillis());
- dataList.forEach(e->{
- String type = UtilMap.getString(e,"textField_lis5zo49");
- List<Map> sonList = (List<Map>) e.get("tableField_mj9dnvr7");
- if (sonList.size() > 0 && ObjectUtil.isNotNull(sonList)){
- if("运行控制".equals(type)){
- sonList.forEach(s->{
- s.put("textareaField_mjavj2r7",UtilMap.getString_default(s,"textareaField_mj9dnvr8","-"));
- });
- formData.put("tableField_mjavj2r6",sonList);
- }else if ("安全生产".equals(type)) {
- sonList.forEach(s->{
- s.put("textareaField_mjgiipmy",UtilMap.getString_default(s,"textareaField_mj9dnvr8","-"));
- });
- formData.put("tableField_mjgiipn0",sonList);
- } else if ("质量控制".equals(type)) {
- sonList.forEach(s->{
- s.put("textareaField_mjgiipn2",UtilMap.getString_default(s,"textareaField_mj9dnvr8","-"));
- });
- formData.put("tableField_mjgiipn4",sonList);
- }
- ydClient.operateData(YDParam.builder()
- .appType("APP_PUWIPZKD59N56D06GBJO")
- .systemToken("KM666OC1PIGVI5674V8ZPAHRBQBD3LO0WQ5WKR1")
- .formInstanceId(UtilMap.getString(e, "formInstanceId"))
- .useLatestVersion(true)
- .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_mjjo82fr", "是")))
- .build(), YDConf.FORM_OPERATION.update);
- }
- });
- ydClient.operateData(_initLYParam()
- .formUuid("FORM-609926407D9D4CABB771228200AEE57EKGSE")
- .formDataJson(JSON.toJSONString(formData))
- .build(), YDConf.FORM_OPERATION.start);
- }
- }
- @Override
- public void updateMeeting(String processInstanceId) {
- // addToken( "6e16d9ac-104d-4c85-8d85-ee9d4295e2e5,0",1440);
- log.info("回调执行更新缓存中计数数据:{}",processInstanceId);
- String token = ddClient.getAccessToken(APP_EKY, APP_SECRET);
- Map processData = ddClient_workflow.getProcessInstanceId(token, processInstanceId);
- List<Map> formComponentValues = (List<Map>) processData.get("formComponentValues");
- Map formComp = formComponentValues.stream().filter(item -> "宜搭班组会id".equals(item.get("name"))).findAny().get();
- if (ObjectUtil.isNotNull(formComp)){
- String value = formComp.get("value").toString();
- // 流式判断:anyMatch 找到匹配项立即终止遍历
- boolean hasStartWithS = formInstanceIdStore.keySet().stream()
- .filter(key -> key != null) // 过滤空 Key,避免 NPE
- .anyMatch(key -> key.startsWith(value));
- log.info("是否查询到数据:{}",hasStartWithS);
- // 若存在
- if (hasStartWithS){
- for (String key : formInstanceIdStore.keySet()) {
- // 避免空 Key 导致 NPE,先判空再匹配前缀
- if (key != null && key.startsWith(value)) {
- String[] split = key.split(",");
- int count = Integer.parseInt(split[1]);
- count++;
- formInstanceIdStore.put(split[0]+","+count, formInstanceIdStore.get(key));
- log.info("更新成功id:{},计数:{}",split[0],formInstanceIdStore.get(split[0]+"-"+count));
- formInstanceIdStore.remove(key);
- break; // 找到后立即退出循环,提升性能
- }
- }
- }
- }
- }
- /**
- * 创建视频会议
- * @param userId
- * @param title
- * @return
- */
- @Override
- public String createVideoMeeting(String userId, String title) {
- String unionId = String.valueOf(ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), userId).get("unionid"));
- MDR meeting = ddClientMeeting.createMeeting(ddClient.getAccessToken(), unionId, title, null, true);
- return meeting.getExternalLinkUrl();
- }
- @Override
- public void updateYidaMeeting() {
- formInstanceIdStore.forEach((k, v) -> {
- String[] split = k.split(",");
- int count = Integer.parseInt(split[1]);
- ydClient.operateData(_initLYParam()
- .formInstanceId(split[0])
- .useLatestVersion(true)
- .updateFormDataJson(JSON.toJSONString(UtilMap.map("numberField_mji9taov",count)))
- .build(), YDConf.FORM_OPERATION.update);
- if (validateToken(k)) {
- log.info("已处理流程id:{}",k);
- }else {
- log.info("已在缓存中移除流程id:{}",k);
- }
- });
- }
- @Override
- public void testToken() {
- // approveUpdateCRM(processInstanceId,"DXCPXS","审批拒绝", isAgree);
- }
- @Override
- public void testGet(String id,boolean isAgree) {
- System.out.println(id);
- if (isAgree){
- System.out.println("11111");
- log.info("isAgree:{},",isAgree);
- }
- log.info("id:{},",id);
- }
- }
|