test:本地环境测试功能

This commit is contained in:
liangcheng 2025-07-28 16:20:18 +08:00
parent e94f43df25
commit 3d104ac67a
4 changed files with 228 additions and 0 deletions

1
.gitignore vendored
View File

@ -12,6 +12,7 @@
/build.gradle
/gradle/
/secondev-xianghui-performance/build/
/secondev-chapanda-attend/build/
/buildSrc/

View File

@ -0,0 +1,8 @@
plugins{
id 'java'
}
description = ""
dependencies {
//
}

View File

@ -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<Object> monthData() {
List<Map<String, Object>> datas = chaPandaEbFormMonthConfigService.getDatas("0");
return WeaResult.success(datas);
}
}

View File

@ -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<String, String> fields,String group) {
Query query = new Query();
query.setPageNo(1);
query.setPageSize(100);
query.setStatCount(true);
// 搜索条件
query.setConditionTrees(buildConditionTree(fields,group));
// 权限相关
Map<String, Object> ebuilderDataConfig = Maps.newHashMap();
Map<String, Object> dataSetup = Maps.newHashMap();
dataSetup.put("dataPermission", "ALL");
ebuilderDataConfig.put("dataSetup", dataSetup);
query.setEbuilderDataConfig(ebuilderDataConfig);
// 查询字段
List<String> fieldIds = Arrays.asList(String.valueOf(fields.get("cqzd")),String.valueOf(fields.get("jtzd")));
List<QueryField> 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<String, String> 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<Map<String, Object>> getDatas(String group){
List<Map<String, Object>> 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<ModuleField> field = iEtFormDatasetService.getFields(fieldsQueryDto);
Map<String, String> 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<String, Object> ebFormDataMap = iEtFormDatasetService.getDatas(Long.valueOf(attendConfigFormId), "attend", queryStr, null);
result.addAll((List<Map<String, Object>>) 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<Map<String, Object>>) ebFormDataMap.getOrDefault("list", Collections.emptyList()));
}
}
} catch (Exception e) {
log.error("表单不存在或已被删除", e);
}
List<Map<String, Object>> transList = result.stream()
.map(originalMap -> {
Map<String, Object> 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;
}
}