diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index fd03191..0f01050 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -6,14 +6,13 @@
cn.axzo
riven
- 2.0.0-SNAPSHOT
+ ${revision}
+ ../pom.xml
integration-test
- 11
- 11
UTF-8
diff --git a/integration-test/src/test/resources/third-project-person-api.http b/integration-test/src/test/resources/third-project-person-api.http
new file mode 100644
index 0000000..458db63
--- /dev/null
+++ b/integration-test/src/test/resources/third-project-person-api.http
@@ -0,0 +1,12 @@
+###
+POST localhost:8080/api/thirdPart/listProjectPeople
+Accept: application/json
+Content-Type: application/json
+Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJOVF9PTVNfV0VCOjkwMDA0MDAzMjIiLCJyblN0ciI6IndWbXF6d1VYWG5sZ2lHRm1MRmpHVXdzdGVac0xrbkpnIn0.fapfkozDj51dA2lFmCmIkv7ZFaLVOFGzn6OAyvndW1c
+
+{
+ "thirdCode": "taizhou",
+ "thirdProjectId": "Jh0Cj4e%2BJhtDDYYdhmkV0flbxjUPOZXzS4z%2BAXKMf%2B8=",
+ "thirdUniquePersonIds": [],
+ "needThirdPerson": true
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdPartPersonApi.java b/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdPartPersonApi.java
index 89d680a..7ecd89f 100644
--- a/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdPartPersonApi.java
+++ b/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdPartPersonApi.java
@@ -2,17 +2,22 @@ package cn.axzo.riven.client.feign;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
-import cn.axzo.riven.client.req.ListDeptReq;
+import cn.axzo.riven.client.req.ListThirdProjectPeopleReq;
import cn.axzo.riven.client.res.ThirdPartPersonRes;
-import cn.axzo.riven.client.res.ThirdPartUserRes;
-import cn.axzo.riven.client.res.ThirdPartyDeptTreeRes;
-import cn.axzo.riven.client.res.ThirdPartyDeptUserTreeRes;
+import cn.axzo.riven.client.res.ThirdProjectPersonRes;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
+import javax.validation.Valid;
import java.util.List;
+import java.util.Set;
/**
@@ -24,12 +29,19 @@ public interface ThirdPartPersonApi {
/**
* 通过安心筑人员账号和三方类型获取三方人员信息
+ *
* @param personId 安心筑人员ID
* @param thirdCode 三方类型,枚举值
* @return
*/
@GetMapping("/api/thirdPart/getPerson")
- ApiResult getThirdPartPerson(@RequestParam("personId")Long personId,@RequestParam("thirdCode") ThirdCodeEnum thirdCode);
-
+ ApiResult getThirdPartPerson(@RequestParam("personId") Long personId, @RequestParam("thirdCode") ThirdCodeEnum thirdCode);
+ /**
+ * 查询三方项目用户
+ * @param param
+ * @return
+ */
+ @PostMapping("/api/thirdPart/listProjectPeople")
+ ApiResult> listThirdProjectPeople(@RequestBody @Valid ListThirdProjectPeopleReq param);
}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdProjectApi.java b/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdProjectApi.java
new file mode 100644
index 0000000..c34f204
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/feign/ThirdProjectApi.java
@@ -0,0 +1,22 @@
+package cn.axzo.riven.client.feign;
+
+import cn.axzo.framework.domain.web.result.ApiResult;
+import cn.axzo.riven.client.req.ThirdProjectReq;
+import cn.axzo.riven.client.res.ThirdProjectResp;
+import java.util.List;
+import javax.validation.Valid;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@FeignClient(name = "riven", url = "${axzo.service.riven:http://riven:8080}")
+public interface ThirdProjectApi {
+
+ @PostMapping("/api/third/queryProject")
+ ApiResult> queryThirdProject(@RequestBody @Valid ThirdProjectReq req);
+
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/req/ListThirdProjectPeopleReq.java b/riven-api/src/main/java/cn/axzo/riven/client/req/ListThirdProjectPeopleReq.java
new file mode 100644
index 0000000..17f10c6
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/req/ListThirdProjectPeopleReq.java
@@ -0,0 +1,39 @@
+package cn.axzo.riven.client.req;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Set;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ListThirdProjectPeopleReq implements Serializable {
+
+ /**
+ * 三方名称code
+ */
+ @NotBlank(message = "thirdCode不能为空")
+ private String thirdCode;
+ /**
+ * '三方项目编号'
+ */
+ @NotBlank(message = "thirdProjectId不能为空")
+ private String thirdProjectId;
+ /**
+ * 三方人员唯一ID
+ */
+ private Set thirdUniquePersonIds;
+
+ /**
+ * 人员id集合
+ */
+ private Set personIds;
+
+ private Boolean needThirdPerson;
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/req/ThirdProjectReq.java b/riven-api/src/main/java/cn/axzo/riven/client/req/ThirdProjectReq.java
new file mode 100644
index 0000000..1e52ec1
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/req/ThirdProjectReq.java
@@ -0,0 +1,25 @@
+package cn.axzo.riven.client.req;
+
+import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
+import javax.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ThirdProjectReq {
+
+ /**
+ * 第三方编码code
+ */
+ @NotNull(message = "第三方编码不能为空")
+ private ThirdCodeEnum thirdCode;
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/res/TaiZhouThirdProjectExtDto.java b/riven-api/src/main/java/cn/axzo/riven/client/res/TaiZhouThirdProjectExtDto.java
new file mode 100644
index 0000000..c95317f
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/res/TaiZhouThirdProjectExtDto.java
@@ -0,0 +1,27 @@
+package cn.axzo.riven.client.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaiZhouThirdProjectExtDto {
+
+ /**
+ * 考勤供应商登记编号
+ */
+ private String bagsBH;
+
+ /**
+ * 项目数据指纹
+ */
+ private String dataNumber;
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdPersonRes.java b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdPersonRes.java
new file mode 100644
index 0000000..ea91adb
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdPersonRes.java
@@ -0,0 +1,73 @@
+package cn.axzo.riven.client.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ThirdPersonRes implements Serializable {
+
+ private Long id;
+ /**
+ * 三方名称code
+ */
+ private String thirdCode;
+
+
+ /**
+ * 三方人员唯一ID
+ */
+ private String thirdUniquePersonId;
+ /**
+ * 三方人员姓名
+ */
+ private String thirdPersonName;
+ /**
+ * 三方人员手机号
+ */
+ private String thirdPersonPhone;
+
+ /**
+ * 三方人员身份证照片
+ */
+ private String thirdPersonPhoto;
+
+ /**
+ * 身份证签发单位
+ */
+ private String thirdAuthority;
+
+
+ /**
+ * 三方身份证号
+ */
+ private String thirdIdNumber;
+
+ /**
+ * 三方人脸照片
+ */
+ private String thirdPersonFaceUrl;
+
+ /**
+ * 三方性别
+ */
+ private String thirdSex;
+
+ /**
+ * 安心筑人员ID,安心筑唯一识别码
+ */
+ private Long personId;
+
+ private String thirdExt;
+ private Long isDelete = 0L;
+ private Date createAt;
+ private Date updateAt;
+
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectPersonRes.java b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectPersonRes.java
new file mode 100644
index 0000000..0d0a455
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectPersonRes.java
@@ -0,0 +1,85 @@
+package cn.axzo.riven.client.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ThirdProjectPersonRes {
+
+ private Long id;
+ /**
+ * 三方名称code
+ */
+ private String thirdCode;
+
+ /**
+ * '三方项目编号'
+ */
+ private String thirdProjectId;
+
+
+ /**
+ * 三方人员唯一ID
+ */
+ private String thirdUniquePersonId;
+
+ /**
+ * 三方人员工号ID
+ */
+ private String thirdWorkerId;
+ /**
+ * 三方工人类型
+ */
+ private String thirdWorkType;
+
+ /**
+ * 三方所属班组
+ */
+ private String thirdTeamId;
+
+ /**
+ * 三方所属班组名称
+ */
+ private String thirdTeamName;
+
+ /**
+ * 三方班组ID
+ */
+ private String thirdWorkId;
+
+ /**
+ * 三方部门ID
+ */
+ private String thirdDepartmentId;
+
+ /**
+ * 三方岗位名称
+ */
+ private String thirdPostName;
+
+ /**
+ * 最后一次同步时间
+ */
+ private Date lastSyncAt;
+ private Long workspaceId;
+
+ /**
+ * 三方ext,扩展域等等,工种信息等等
+ */
+ private String thirdExt;
+ private Long isDelete = 0L;
+ private Date createAt;
+ private Date updateAt;
+
+ /**
+ * 需要指定 needThirdPerson = true
+ */
+ private ThirdPersonRes thirdPersonRes;
+}
diff --git a/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectResp.java b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectResp.java
new file mode 100644
index 0000000..fd9719a
--- /dev/null
+++ b/riven-api/src/main/java/cn/axzo/riven/client/res/ThirdProjectResp.java
@@ -0,0 +1,59 @@
+package cn.axzo.riven.client.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ThirdProjectResp {
+
+ /**
+ * 三方名称code
+ */
+ private String thirdCode;
+
+ /**
+ * 三方项目编号
+ */
+ private String thirdProjectId;
+
+ /**
+ * 三方项目名称
+ */
+ private String thirdProjectName;
+
+ /**
+ * 同步策略,0不创建人员,1创建普通员工,2创建管理员,3创建普通员工+管理员)
+ */
+ private String syncType;
+
+ /**
+ * 三方单位统一社会信用代码
+ */
+ private String uniformSocialCreditCode;
+
+
+ /**
+ * 三方建设单位名称
+ */
+ private String thirdProjectConstructionUnit;
+
+ /**
+ * 三方扩展域
+ * 每个三方对应扩展域不同
+ */
+ private String thirdProjectExt;
+
+ /**
+ * 泰州项目扩展配置
+ */
+ private TaiZhouThirdProjectExtDto taiZhouThirdProjectExt;
+}
diff --git a/riven-server/src/main/java/cn/axzo/riven/RivenTestApplication.java b/riven-server/src/main/java/cn/axzo/riven/RivenTestApplication.java
new file mode 100644
index 0000000..2708932
--- /dev/null
+++ b/riven-server/src/main/java/cn/axzo/riven/RivenTestApplication.java
@@ -0,0 +1,54 @@
+package cn.axzo.riven;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.env.Environment;
+
+/**
+ *
+ */
+//@SpringBootApplication(scanBasePackages = "cn.axzo")
+@EnableFeignClients(basePackages = {"cn.axzo"})
+@Log4j2
+public class RivenTestApplication {
+
+ public static void main(String[] args) throws Exception {
+ System.setProperty("spring.profiles.active", "test");
+ System.setProperty("NACOS_HOST", "https://test-nacos.axzo.cn");
+ System.setProperty("NACOS_NAMESPACE_ID", "f3c0f0d2-bac4-4498-bee7-9c3636b3afdf");
+ System.setProperty("CUSTOM_ENV", "test");
+ System.setProperty("NACOS_PORT", "443");
+
+ System.setProperty("spring.redis.port", "6379");
+ System.setProperty("spring.redis.host", "172.16.2.149");
+ System.setProperty("spring.datasource.url", "jdbc:mysql://172.16.2.143:3306/pudge?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false");
+
+ System.setProperty("rocketmq.name-server", "172.16.2.82:9876");
+
+ SpringApplication application = new SpringApplication(RivenTestApplication.class);
+ ApplicationContext applicationContext = application.run(args);
+ Environment env = applicationContext.getEnvironment();
+ log.info(
+ "--------------------------------------------------------------------------------------------------------------------\n" +
+ "Application 【{}】 is running on 【{}】 environment!\n" +
+ "Api Local: \thttp://127.0.0.1:{}\n" +
+ "Mysql: \t{}\t username:{}\n" +
+ "Redis: \t{}:{}\t database:{}\n" +
+ "RabbitMQ: \t{}\t username:{}",
+ env.getProperty("spring.application.name"),
+ env.getProperty("spring.profiles.active"),
+ env.getProperty("server.port"),
+ env.getProperty("spring.datasource.url"),
+ env.getProperty("spring.datasource.username"),
+ env.getProperty("spring.redis.host"),
+ env.getProperty("spring.redis.port"),
+ env.getProperty("spring.redis.database"),
+ env.getProperty("spring.rabbitmq.addresses"),
+ env.getProperty("spring.rabbitmq.username") +
+ "\n----------------------------------------------------------");
+ }
+
+}
diff --git a/riven-third/src/main/java/cn/axzo/riven/third/api/ThirdProjectApiImpl.java b/riven-third/src/main/java/cn/axzo/riven/third/api/ThirdProjectApiImpl.java
new file mode 100644
index 0000000..20bbd06
--- /dev/null
+++ b/riven-third/src/main/java/cn/axzo/riven/third/api/ThirdProjectApiImpl.java
@@ -0,0 +1,39 @@
+package cn.axzo.riven.third.api;
+
+import cn.axzo.framework.domain.web.result.ApiResult;
+import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
+import cn.axzo.riven.client.feign.ThirdProjectApi;
+import cn.axzo.riven.client.req.ThirdProjectReq;
+import cn.axzo.riven.client.res.ThirdProjectResp;
+import cn.axzo.riven.third.mapstruct.ThirdProjectConverter;
+import cn.axzo.riven.third.taizhou.entity.TaiZhouProject;
+import cn.axzo.riven.third.taizhou.service.TaiZhouService;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@Slf4j
+@RestController
+public class ThirdProjectApiImpl implements ThirdProjectApi {
+
+ @Autowired
+ private TaiZhouService taiZhouService;
+
+ @Override
+ public ApiResult> queryThirdProject(ThirdProjectReq req) {
+ // 目前仅对接泰州,所以这里仅支持泰州项目查询
+ if (!Objects.equals(ThirdCodeEnum.TAI_ZHOU, req.getThirdCode())) {
+ return ApiResult.ok(new ArrayList<>());
+ }
+ List taiZhouProjectList = taiZhouService.queryThirdProjectForTaiZhou();
+ List result = ThirdProjectConverter.INSTANCE.convertFromProjects(taiZhouProjectList);
+ return ApiResult.ok(result);
+ }
+}
diff --git a/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPartPersonController.java b/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPartPersonController.java
index 9dac55a..31c453d 100644
--- a/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPartPersonController.java
+++ b/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPartPersonController.java
@@ -1,14 +1,34 @@
package cn.axzo.riven.third.controller;
+import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
import cn.axzo.riven.client.feign.ThirdPartPersonApi;
+import cn.axzo.riven.client.req.ListThirdProjectPeopleReq;
import cn.axzo.riven.client.res.ThirdPartPersonRes;
+import cn.axzo.riven.client.res.ThirdPersonRes;
+import cn.axzo.riven.client.res.ThirdProjectPersonRes;
+import cn.axzo.riven.third.dao.ThirdPersonDao;
+import cn.axzo.riven.third.dao.ThirdProjectDao;
+import cn.axzo.riven.third.dao.ThirdProjectPersonDao;
+import cn.axzo.riven.third.entity.ThirdPerson;
+import cn.axzo.riven.third.entity.ThirdProject;
+import cn.axzo.riven.third.entity.ThirdProjectPerson;
import cn.axzo.riven.third.service.ThirdPersonService;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.google.common.collect.ImmutableList;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
/**
* @author zhongpeng
* @date 2024/8/9 18:10
@@ -18,12 +38,103 @@ import org.springframework.web.bind.annotation.RestController;
public class ThirdPartPersonController implements ThirdPartPersonApi {
private final ThirdPersonService thirdPersonService;
+ private final ThirdProjectPersonDao thirdProjectPersonDao;
+ private final ThirdPersonDao thirdPersonDao;
+ private final ThirdProjectDao thirdProjectDao;
@Override
public ApiResult getThirdPartPerson(Long personId, ThirdCodeEnum thirdCode) {
- ThirdPartPersonRes thirdPartPersonRes = thirdPersonService.getThirdPartPerson(personId,thirdCode);
+ ThirdPartPersonRes thirdPartPersonRes = thirdPersonService.getThirdPartPerson(personId, thirdCode);
return ApiResult.ok(thirdPartPersonRes);
}
+
+ @Override
+ public ApiResult> listThirdProjectPeople(ListThirdProjectPeopleReq param) {
+ ThirdProject thirdProject = thirdProjectDao.lambdaQuery().eq(ThirdProject::getThirdCode, param.getThirdCode())
+ .eq(ThirdProject::getThirdProjectId, param.getThirdProjectId())
+ .eq(ThirdProject::getIsDelete, TableIsDeleteEnum.NORMAL.value)
+ .one();
+ if (thirdProject == null){
+ return ApiResult.ok(ImmutableList.of());
+ }
+ if (CollUtil.isNotEmpty(param.getPersonIds())) {
+ return ApiResult.ok(queryByPerson(param, thirdProject));
+ }
+ List result = thirdProjectPersonDao.lambdaQuery()
+ .eq(ThirdProjectPerson::getThirdCode, param.getThirdCode())
+ .eq(ThirdProjectPerson::getThirdProjectId, param.getThirdProjectId())
+ .in(CollUtil.isNotEmpty(param.getThirdUniquePersonIds()), ThirdProjectPerson::getThirdUniquePersonId, param.getThirdUniquePersonIds())
+ .eq(ThirdProjectPerson::getIsDelete, TableIsDeleteEnum.NORMAL.value)
+ .list()
+ .stream().map(e -> {
+ ThirdProjectPersonRes res = BeanUtil.toBean(e, ThirdProjectPersonRes.class);
+ res.setWorkspaceId(thirdProject.normalizedExt().getWorkspaceId());
+ return res;
+ })
+ .collect(Collectors.toList());
+ assembleThirdPersonIfNeed(result, param);
+ return ApiResult.ok(result);
+ }
+
+ private List queryByPerson(ListThirdProjectPeopleReq param, ThirdProject thirdProject) {
+ Map thirdPersonMap = thirdPersonDao.lambdaQuery()
+ .eq(ThirdPerson::getThirdCode, param.getThirdCode())
+ .in(CollUtil.isNotEmpty(param.getThirdUniquePersonIds()),
+ ThirdPerson::getThirdUniquePersonId, param.getThirdUniquePersonIds())
+ .in(CollUtil.isNotEmpty(param.getPersonIds()), ThirdPerson::getPersonId, param.getPersonIds())
+ .eq(ThirdPerson::getIsDelete, TableIsDeleteEnum.NORMAL.value)
+ .list()
+ .stream()
+ .collect(Collectors.toMap(ThirdPerson::getThirdUniquePersonId, Function.identity()));
+
+ if (CollUtil.isEmpty(thirdPersonMap)) {
+ return ImmutableList.of();
+ }
+
+ List result = thirdProjectPersonDao.lambdaQuery()
+ .eq(ThirdProjectPerson::getThirdCode, param.getThirdCode())
+ .eq(ThirdProjectPerson::getThirdProjectId, param.getThirdProjectId())
+ .in(ThirdProjectPerson::getThirdUniquePersonId, thirdPersonMap.keySet())
+ .eq(ThirdProjectPerson::getIsDelete, TableIsDeleteEnum.NORMAL.value)
+ .list()
+ .stream().map(e -> {
+ ThirdProjectPersonRes res = BeanUtil.toBean(e, ThirdProjectPersonRes.class);
+ res.setWorkspaceId(thirdProject.normalizedExt().getWorkspaceId());
+
+ ThirdPerson thirdPerson = thirdPersonMap.get(e.getThirdUniquePersonId());
+ res.setThirdPersonRes(thirdPerson == null ? null : BeanUtil.toBean(thirdPerson, ThirdPersonRes.class));
+ return res;
+ })
+ .collect(Collectors.toList());
+ return result;
+ }
+
+ private void assembleThirdPersonIfNeed(List result, ListThirdProjectPeopleReq param) {
+ if (result.isEmpty()) {
+ return;
+ }
+ if (!BooleanUtil.isTrue(param.getNeedThirdPerson())) {
+ return;
+ }
+ Set thirdPersonIds = result.stream()
+ .map(ThirdProjectPersonRes::getThirdUniquePersonId)
+ .filter(StrUtil::isNotBlank)
+ .collect(Collectors.toSet());
+ if (thirdPersonIds.isEmpty()) {
+ return;
+ }
+ Map thirdPersonMap = thirdPersonDao.lambdaQuery()
+ .eq(ThirdPerson::getThirdCode, param.getThirdCode())
+ .in(ThirdPerson::getThirdUniquePersonId, thirdPersonIds)
+ .in(CollUtil.isNotEmpty(param.getPersonIds()), ThirdPerson::getPersonId, param.getPersonIds())
+ .eq(ThirdPerson::getIsDelete, TableIsDeleteEnum.NORMAL.value)
+ .list().stream()
+ .collect(Collectors.toMap(ThirdPerson::getThirdUniquePersonId, Function.identity()));
+ result.forEach(t -> {
+ ThirdPerson thirdPerson = thirdPersonMap.get(t.getThirdUniquePersonId());
+ t.setThirdPersonRes(thirdPerson == null ? null : BeanUtil.toBean(thirdPerson, ThirdPersonRes.class));
+ });
+ }
}
diff --git a/riven-third/src/main/java/cn/axzo/riven/third/entity/ThirdProject.java b/riven-third/src/main/java/cn/axzo/riven/third/entity/ThirdProject.java
index 68ac833..5d5db5b 100644
--- a/riven-third/src/main/java/cn/axzo/riven/third/entity/ThirdProject.java
+++ b/riven-third/src/main/java/cn/axzo/riven/third/entity/ThirdProject.java
@@ -1,6 +1,10 @@
package cn.axzo.riven.third.entity;
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
+import cn.axzo.riven.third.taizhou.entity.TaiZhouThirdProjectExt;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
@@ -49,4 +53,9 @@ public class ThirdProject extends BaseEntity {
*/
private String thirdProjectExt;
+ public TaiZhouThirdProjectExt normalizedExt() {
+ return StrUtil.isBlank(thirdProjectExt) ? new TaiZhouThirdProjectExt()
+ : JSON.parseObject(thirdProjectExt, TaiZhouThirdProjectExt.class);
+ }
+
}
diff --git a/riven-third/src/main/java/cn/axzo/riven/third/mapstruct/ThirdProjectConverter.java b/riven-third/src/main/java/cn/axzo/riven/third/mapstruct/ThirdProjectConverter.java
new file mode 100644
index 0000000..f0791f3
--- /dev/null
+++ b/riven-third/src/main/java/cn/axzo/riven/third/mapstruct/ThirdProjectConverter.java
@@ -0,0 +1,26 @@
+package cn.axzo.riven.third.mapstruct;
+
+import cn.axzo.riven.client.res.ThirdProjectResp;
+import cn.axzo.riven.third.taizhou.entity.TaiZhouProject;
+import java.util.List;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author syl
+ * @date 2024/10/24
+ */
+@Mapper(builder = @org.mapstruct.Builder(disableBuilder = true))
+public interface ThirdProjectConverter {
+
+ ThirdProjectConverter INSTANCE = Mappers.getMapper(ThirdProjectConverter.class);
+
+ @Mappings({
+ @Mapping(source = "taiZhouThirdProjectExt", target = "taiZhouThirdProjectExt"),
+ })
+ ThirdProjectResp map(TaiZhouProject project);
+
+ List convertFromProjects(List req);
+}
diff --git a/riven-third/src/main/java/cn/axzo/riven/third/taizhou/entity/TaiZhouThirdProjectExt.java b/riven-third/src/main/java/cn/axzo/riven/third/taizhou/entity/TaiZhouThirdProjectExt.java
index d9460fd..a151913 100644
--- a/riven-third/src/main/java/cn/axzo/riven/third/taizhou/entity/TaiZhouThirdProjectExt.java
+++ b/riven-third/src/main/java/cn/axzo/riven/third/taizhou/entity/TaiZhouThirdProjectExt.java
@@ -22,5 +22,9 @@ public class TaiZhouThirdProjectExt implements Serializable {
*/
private String dataNumber;
+ /**
+ * 对应安心筑项目id
+ */
+ private Long workspaceId;
}