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; }