From 3d104ac67aeda2963581d57c0bbaef91529b0c76 Mon Sep 17 00:00:00 2001 From: liangcheng <1546584672@qq.com> Date: Mon, 28 Jul 2025 16:20:18 +0800 Subject: [PATCH] =?UTF-8?q?test:=E6=9C=AC=E5=9C=B0=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../secondev-chapanda-attend.gradle | 8 + .../controller/EbFormRpcController.java | 35 ++++ .../eb/ChaPandaEbFormMonthConfigService.java | 184 ++++++++++++++++++ 4 files changed, 228 insertions(+) create mode 100644 secondev-chapanda-attend/secondev-chapanda-attend.gradle create mode 100644 secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/controller/EbFormRpcController.java create mode 100644 secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/eb/ChaPandaEbFormMonthConfigService.java diff --git a/.gitignore b/.gitignore index 2613975..59b6e71 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ /build.gradle /gradle/ /secondev-xianghui-performance/build/ +/secondev-chapanda-attend/build/ /buildSrc/ diff --git a/secondev-chapanda-attend/secondev-chapanda-attend.gradle b/secondev-chapanda-attend/secondev-chapanda-attend.gradle new file mode 100644 index 0000000..e70ed51 --- /dev/null +++ b/secondev-chapanda-attend/secondev-chapanda-attend.gradle @@ -0,0 +1,8 @@ +plugins{ + id 'java' +} +description = "" + +dependencies { + // 子项目私有依赖添加 +} \ No newline at end of file diff --git a/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/controller/EbFormRpcController.java b/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/controller/EbFormRpcController.java new file mode 100644 index 0000000..7c04e49 --- /dev/null +++ b/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/controller/EbFormRpcController.java @@ -0,0 +1,35 @@ +package com.weaver.seconddev.chapanda.controller; + +import com.weaver.common.authority.annotation.WeaPermission; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.seconddev.chapanda.eb.ChaPandaEbFormMonthConfigService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + + +@RestController +@Api("EbFormRpc接口测试") +@RequestMapping("/api/secondev/chaPanda/sync") +@WeaPermission(publicPermission = true) +@Slf4j +public class EbFormRpcController { + + @Autowired + private ChaPandaEbFormMonthConfigService chaPandaEbFormMonthConfigService; + + @GetMapping("/testRpc") + public WeaResult monthData() { + List> datas = chaPandaEbFormMonthConfigService.getDatas("0"); + return WeaResult.success(datas); + } + + + +} diff --git a/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/eb/ChaPandaEbFormMonthConfigService.java b/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/eb/ChaPandaEbFormMonthConfigService.java new file mode 100644 index 0000000..8711063 --- /dev/null +++ b/secondev-chapanda-attend/src/main/java/com/weaver/seconddev/chapanda/eb/ChaPandaEbFormMonthConfigService.java @@ -0,0 +1,184 @@ +package com.weaver.seconddev.chapanda.eb; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.weaver.common.distribution.genid.IdGenerator; +import com.weaver.ebuilder.form.client.entity.field.FieldsQueryDto; +import com.weaver.ebuilder.form.client.entity.field.ModuleField; +import com.weaver.ebuilder.form.client.service.emobile.IEtFormDatasetService; +import com.weaver.ebuilder.teams.etform.base.query.ConditionTreeDto; +import com.weaver.ebuilder.teams.etform.base.query.Query; +import com.weaver.ebuilder.teams.etform.base.query.QueryField; +import com.weaver.ebuilder.teams.etform.org.bean.EBSimpleEmployee; +import com.weaver.framework.util.JsonUtil; +import com.weaver.publishkit.api.util.PublishKitRuntimeUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.logging.log4j.util.Base64Util; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Author liang.cheng + * @Date 2025/7/8 09:47 + * @Description: 茶百道考勤静态Eb表单 出勤汇总映射表 + */ +@Service +@Slf4j +public class ChaPandaEbFormMonthConfigService { + + @Resource + private PublishKitRuntimeUtil publishKitRuntimeUtil; + + private String attendConfigFormId; + private String tenantKey; + private String operator; + + + @Value("${attend.chaPanda.attendConfigFormId:1161713839596036100}") + public void setAttendConfigFormId(String attendConfigFormId) { + this.attendConfigFormId = attendConfigFormId; + } + + @Value("${attend.chaPanda.scheduler.tenantKey:tma3ktp1q7}") + public void setTenantKey(String tenantKey) { + this.tenantKey = tenantKey; + } + + @Value("${attend.chaPanda.scheduler.operator:1123182988002492419") + public void setOperator(String operator) { + this.operator = operator; + } + + public Query buildQuery(Map fields,String group) { + Query query = new Query(); + query.setPageNo(1); + query.setPageSize(100); + query.setStatCount(true); + // 搜索条件 + query.setConditionTrees(buildConditionTree(fields,group)); + // 权限相关 + Map ebuilderDataConfig = Maps.newHashMap(); + Map dataSetup = Maps.newHashMap(); + dataSetup.put("dataPermission", "ALL"); + ebuilderDataConfig.put("dataSetup", dataSetup); + query.setEbuilderDataConfig(ebuilderDataConfig); + // 查询字段 + List fieldIds = Arrays.asList(String.valueOf(fields.get("cqzd")),String.valueOf(fields.get("jtzd"))); + List queryFields = fieldIds.stream().map(id -> { + QueryField field = new QueryField(); + field.setFieldId(id); + field.setObjId(Long.valueOf(attendConfigFormId)); + return field; + }).collect(Collectors.toList()); + query.setQueryFields(queryFields); + + return query; + } + + private ConditionTreeDto buildConditionTree(Map fields,String group) { + ConditionTreeDto rootNode = new ConditionTreeDto(); + rootNode.setKey(String.valueOf(IdGenerator.generate())); + rootNode.setRelationship("1"); + rootNode.setIsParent(true); + rootNode.setConditionList(Lists.newArrayList()); + + ConditionTreeDto leaf1Node = new ConditionTreeDto(); + leaf1Node.setIsParent(true); + leaf1Node.setKey(String.valueOf(IdGenerator.generate())); + leaf1Node.setParentNode(rootNode.getKey()); + leaf1Node.setRelationship("1"); + leaf1Node.setConditionList(Lists.newArrayList()); + rootNode.getConditionList().add(leaf1Node); + + ConditionTreeDto leaf2Node = new ConditionTreeDto(); + leaf2Node.setCompareType("eq"); + leaf2Node.setConditionId(fields.get("fz")); + leaf2Node.setConditionValue(group); + leaf2Node.setConditionType("Number"); + leaf2Node.setIsParent(false); + leaf2Node.setKey(String.valueOf(IdGenerator.generate())); + leaf2Node.setObjId(attendConfigFormId); + leaf2Node.setParentNode(leaf1Node.getKey()); + leaf1Node.getConditionList().add(leaf2Node); + + ConditionTreeDto leaf3Node = new ConditionTreeDto(); + leaf3Node.setCompareType("eq"); + leaf3Node.setConditionId(fields.get("fc")); + leaf3Node.setConditionType("Number"); + leaf3Node.setConditionValue("1"); + leaf3Node.setIsParent(false); + leaf3Node.setKey(String.valueOf(IdGenerator.generate())); + leaf3Node.setObjId(attendConfigFormId); + leaf3Node.setParentNode(leaf1Node.getKey()); + leaf1Node.getConditionList().add(leaf3Node); + return rootNode; + } + + public List> getDatas(String group){ + List> result = Lists.newArrayList(); + IEtFormDatasetService iEtFormDatasetService = publishKitRuntimeUtil.buildRpcService(IEtFormDatasetService.class, "ebuilderform", publishKitRuntimeUtil.getDefaultAppId()); + FieldsQueryDto fieldsQueryDto = new FieldsQueryDto(); + fieldsQueryDto.setObjId(Long.valueOf(attendConfigFormId)); + EBSimpleEmployee ebSimpleEmployee = new EBSimpleEmployee(operator,tenantKey); + fieldsQueryDto.setEbSimpleEmployee(ebSimpleEmployee); + List field = iEtFormDatasetService.getFields(fieldsQueryDto); + Map fields = field.stream() + .filter(f -> + f.getDataKey() != null && + !f.getDataKey().isEmpty()) + .collect(Collectors.toMap( + ModuleField::getDataKey, + ModuleField::getFieldId, + (oldValue, newValue) -> oldValue + )); + Query query = buildQuery(fields,group); + String queryStr = Base64Util.encode(JsonUtil.toJsonString(query)); + try { + Map ebFormDataMap = iEtFormDatasetService.getDatas(Long.valueOf(attendConfigFormId), "attend", queryStr, null); + result.addAll((List>) ebFormDataMap.getOrDefault("list", Collections.emptyList())); + Object total = ebFormDataMap.get("count"); + if (Objects.nonNull(total)) { + int totalInt = Integer.parseInt(total.toString()); + for (int i = 1; i * 100 < totalInt; i++) { + query.setPageNo(i + 1); + query.setStatCount(false); + queryStr = Base64Util.encode(JsonUtil.toJsonString(query)); + ebFormDataMap = iEtFormDatasetService.getDatas(Long.valueOf(attendConfigFormId), "attend", queryStr, null); + result.addAll((List>) ebFormDataMap.getOrDefault("list", Collections.emptyList())); + } + } + } catch (Exception e) { + log.error("表单不存在或已被删除", e); + } + List> transList = result.stream() + .map(originalMap -> { + Map newMap = new HashMap<>(); + originalMap.forEach((oldKey, value) -> { + // 找到 fields 中 Value 等于 oldKey 的 Key + fields.entrySet().stream() + .filter(entry -> entry.getValue().equals(oldKey)) + .findFirst() + .ifPresent(entry -> newMap.put(entry.getKey(), value)); // 替换 Key + }); + return newMap; + }) + .filter(newMap -> !newMap.isEmpty()) // 过滤掉未匹配到 fields 的 Map + .collect(Collectors.toList()); + + return transList; + } + + + + + +}