From 31117e3ee3f7d63ed25e40881a071159885630c7 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 14 Jan 2025 17:00:26 +0800 Subject: [PATCH 001/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=8F=98=E6=B4=BD?= =?UTF-8?q?=E7=AD=BE=E6=A8=A1=E5=9D=97=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/pom.xml | 102 +++++++++++++++++++++++++++++++++++++++ visa/visa-api/pom.xml | 28 +++++++++++ visa/visa-server/pom.xml | 69 ++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 visa/pom.xml create mode 100644 visa/visa-api/pom.xml create mode 100644 visa/visa-server/pom.xml diff --git a/visa/pom.xml b/visa/pom.xml new file mode 100644 index 00000000..850c7b5d --- /dev/null +++ b/visa/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + + + cn.axzo.nanopart + nanopart + ${revision} + ../pom.xml + + + cn.axzo.nanopart + visa + pom + visa + + + 2.0.0-SNAPSHOT + 2.0.0-SNAPSHOT + 1.18.22 + 1.4.2.Final + + + + + + + cn.axzo.infra + axzo-bom + ${axzo-bom.version} + pom + import + + + cn.axzo.infra + axzo-dependencies + ${axzo-dependencies.version} + pom + import + + + + + + + + + org.projectlombok + lombok + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + junit + junit + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + ${lombok.version} + + + org.mapstruct + mapstruct-processor + ${mapstruct.version} + + + + + + + + + + axzo + axzo repository + https://nexus.axzo.cn/repository/axzo/ + + + + visa-api + visa-server + + diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml new file mode 100644 index 00000000..5272d1e0 --- /dev/null +++ b/visa/visa-api/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + + visa + cn.axzo.nanopart + ${revision} + ../pom.xml + + + visa-api + jar + visa-api + + + + org.springframework.cloud + spring-cloud-openfeign-core + + + cn.axzo.framework + axzo-common-domain + + + + diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml new file mode 100644 index 00000000..a32b4e75 --- /dev/null +++ b/visa/visa-server/pom.xml @@ -0,0 +1,69 @@ + + + + cn.axzo.nanopart + visa + ${revision} + ../pom.xml + + 4.0.0 + + visa-server + jar + + visa-server + + + + cn.axzo.framework + axzo-web-spring-boot-starter + + + cn.axzo.framework + axzo-spring-cloud-starter + + + cn.axzo.framework + axzo-consumer-spring-cloud-starter + + + cn.axzo.framework + axzo-processor-spring-boot-starter + + + + cn.axzo.framework + axzo-mybatisplus-spring-boot-starter + + + + cn.axzo.framework + axzo-swagger-yapi-spring-boot-starter + + + mysql + mysql-connector-java + + + cn.hutool + hutool-all + + + cn.axzo.framework + axzo-logger-spring-boot-starter + + + cn.axzo.framework.rocketmq + axzo-common-rocketmq + + + cn.axzo.pokonyan + pokonyan + + + cn.axzo.nanopart + visa-api + + + From ae389593d45db032b7e7d156c5711840cf10c0f9 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 14 Jan 2025 17:18:01 +0800 Subject: [PATCH 002/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=8F=98=E6=B4=BD?= =?UTF-8?q?=E7=AD=BE=E6=A8=A1=E5=9D=97=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + .../axzo/visa/api/config/VisaApiAutoConfiguration.java | 9 +++++++++ .../src/main/resources/META-INF/spring.factories | 2 ++ visa/visa-server/pom.xml | 1 + 4 files changed, 13 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java create mode 100644 visa/visa-api/src/main/resources/META-INF/spring.factories diff --git a/pom.xml b/pom.xml index d9478beb..acadbe39 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,7 @@ op banner dictionary + visa diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java new file mode 100644 index 00000000..5ee5f786 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java @@ -0,0 +1,9 @@ +package cn.axzo.visa.api.config; + +import cn.axzo.op.api.constant.NanopartConstant; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableFeignClients(NanopartConstant.BASIC_FEIGN_PACKAGE) +public class VisaApiAutoConfiguration { + +} diff --git a/visa/visa-api/src/main/resources/META-INF/spring.factories b/visa/visa-api/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..bf796ec6 --- /dev/null +++ b/visa/visa-api/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +cn.axzo.nanopart.api.config.NanopartApiAutoConfiguration \ No newline at end of file diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index a32b4e75..849de233 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -64,6 +64,7 @@ cn.axzo.nanopart visa-api + ${project.version} From 1cec10832576aa97976b37c4a0dc47f3b5efaeb3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 14 Jan 2025 17:21:27 +0800 Subject: [PATCH 003/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=8F=98=E6=B4=BD?= =?UTF-8?q?=E7=AD=BE=E6=A8=A1=E5=9D=97=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/config/VisaApiAutoConfiguration.java | 4 ++-- .../java/cn/axzo/visa/api/constant/VisaConstant.java | 11 +++++++++++ .../src/main/resources/META-INF/spring.factories | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java index 5ee5f786..20366f1c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java @@ -1,9 +1,9 @@ package cn.axzo.visa.api.config; -import cn.axzo.op.api.constant.NanopartConstant; +import cn.axzo.visa.api.constant.VisaConstant; import org.springframework.cloud.openfeign.EnableFeignClients; -@EnableFeignClients(NanopartConstant.BASIC_FEIGN_PACKAGE) +@EnableFeignClients(VisaConstant.BASIC_FEIGN_PACKAGE) public class VisaApiAutoConfiguration { } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java new file mode 100644 index 00000000..92625c24 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java @@ -0,0 +1,11 @@ +package cn.axzo.visa.api.constant; + +/** + * 变洽签 API 基础包路径 + * + * @author wangli + * @since 2025-01-14 17:20 + */ +public class VisaConstant { + public static final String BASIC_FEIGN_PACKAGE = "cn.axzo.visa.api"; +} diff --git a/visa/visa-api/src/main/resources/META-INF/spring.factories b/visa/visa-api/src/main/resources/META-INF/spring.factories index bf796ec6..9e9bac10 100644 --- a/visa/visa-api/src/main/resources/META-INF/spring.factories +++ b/visa/visa-api/src/main/resources/META-INF/spring.factories @@ -1,2 +1,2 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -cn.axzo.nanopart.api.config.NanopartApiAutoConfiguration \ No newline at end of file +cn.axzo.visa.api.config.VisaApiAutoConfiguration \ No newline at end of file From 64efa44f3e2cb83be670db405eafab69b9f8db5e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 15 Jan 2025 16:01:40 +0800 Subject: [PATCH 004/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E4=B8=9A=E5=8A=A1=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/visa/api/enums/VisaTypeEnum.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java new file mode 100644 index 00000000..bf9f8e0a --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 签证业务类型 + * + * @author wangli + * @since 2025-01-15 16:00 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaTypeEnum { + + design_change("设计变更"), + technology_approved("技术核定"), + project_visa("工程签证"); + + private final String desc; +} From f54140e51aa2f7421ecd5eac94a3cf862f42fbf8 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 15 Jan 2025 16:06:56 +0800 Subject: [PATCH 005/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E4=B8=9A=E5=8A=A1=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java index bf9f8e0a..11d2a98b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java @@ -14,9 +14,10 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaTypeEnum { - design_change("设计变更"), - technology_approved("技术核定"), - project_visa("工程签证"); + design_change("设计变更", ""), + technology_approved("技术核定", ""), + project_visa("工程签证", ""); + private final String processDefinitionKey; private final String desc; } From 4300d0e67ef36091966a29e078ed18033beabaaa Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 15 Jan 2025 16:43:29 +0800 Subject: [PATCH 006/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E7=AD=BE?= =?UTF-8?q?domain/service/mapper=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 15 +++ .../api/changerecord/ChangeRecordLogApi.java | 15 +++ .../changerecord/ChangeRecordRelationApi.java | 15 +++ .../controller/ChangeRecordController.java | 23 ++++ .../controller/ChangeRecordLogController.java | 24 ++++ .../ChangeRecordRelationController.java | 23 ++++ .../axzo/visa/server/domain/ChangeRecord.java | 126 ++++++++++++++++++ .../visa/server/domain/ChangeRecordLog.java | 62 +++++++++ .../server/domain/ChangeRecordRelation.java | 74 ++++++++++ .../visa/server/mapper/ChangeRecordDao.java | 15 +++ .../server/mapper/ChangeRecordLogDao.java | 15 +++ .../mapper/ChangeRecordRelationDao.java | 15 +++ .../service/ChangeRecordLogService.java | 9 ++ .../service/ChangeRecordRelationService.java | 9 ++ .../server/service/ChangeRecordService.java | 9 ++ .../impl/ChangeRecordLogServiceImpl.java | 22 +++ .../impl/ChangeRecordRelationServiceImpl.java | 22 +++ .../service/impl/ChangeRecordServiceImpl.java | 22 +++ 18 files changed, 515 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java new file mode 100644 index 00000000..630c0f9e --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.api.changerecord; + +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") +public interface ChangeRecordApi { + + + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java new file mode 100644 index 00000000..a66a575c --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.api.changerecord; + +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录操作日志 + */ +@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") +public interface ChangeRecordLogApi { + + + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java new file mode 100644 index 00000000..4fc2b859 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.api.changerecord; + +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +@FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") +public interface ChangeRecordRelationApi { + + + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java new file mode 100644 index 00000000..a2d20a0a --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -0,0 +1,23 @@ +package cn.axzo.visa.server.controller; + +import cn.axzo.visa.api.changerecord.ChangeRecordApi; +import cn.axzo.visa.server.service.ChangeRecordService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ChangeRecordController implements ChangeRecordApi { + + @Autowired + private ChangeRecordService changeRecordService; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java new file mode 100644 index 00000000..242a931d --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java @@ -0,0 +1,24 @@ +package cn.axzo.visa.server.controller; + +import cn.axzo.visa.api.changerecord.ChangeRecordLogApi; +import cn.axzo.visa.server.service.ChangeRecordLogService; +import cn.axzo.visa.server.service.ChangeRecordService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录操作日志 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ChangeRecordLogController implements ChangeRecordLogApi { + + @Autowired + private ChangeRecordLogService changeRecordLogService; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java new file mode 100644 index 00000000..e939939c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java @@ -0,0 +1,23 @@ +package cn.axzo.visa.server.controller; + +import cn.axzo.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.visa.server.service.ChangeRecordRelationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表ø + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ChangeRecordRelationController implements ChangeRecordRelationApi { + + @Autowired + private ChangeRecordRelationService changeRecordRelationService; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java new file mode 100644 index 00000000..93f3fe6c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -0,0 +1,126 @@ +package cn.axzo.visa.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "visa_change_record", autoResultMap = true) +public class ChangeRecord extends BaseEntity { + + /** + * 单据号 + */ + @TableField(value = "no") + private String no; + + /** + * 主题 + */ + @TableField(value = "topic") + private String topic; + + /** + * 工程 + */ + @TableField(value = "relation_project") + private Long relationProject; + + /** + * 区域集合 + */ + + @TableField(value = "relation_area",typeHandler = FastjsonTypeHandler.class) + private JSONObject relationArea; + + /** + * 专业集合 + */ + @TableField(value = "relation_professional", typeHandler = FastjsonTypeHandler.class) + private JSONObject relationProfessional; + + /** + * 有符号的变更金额 + */ + @TableField(value = "amount_change") + private Integer amountChange; + + /** + * 发生原因 + */ + @TableField(value = "reason") + private String reason; + + /** + * 单据类型 + */ + @TableField(value = "type") + private String type; + + /** + * 状态 + */ + @TableField(value = "status") + private String status; + + /** + * 最终审批ID + */ + @TableField(value = "approval_id") + private String approvalId; + + /** + * 最终审批状态 + */ + @TableField(value = "approval_status") + private String approvalStatus; + + /** + * 最终审批时间 + */ + @TableField(value = "approval_complete_time") + private Date approvalCompleteTime; + + /** + * IM群组ID + */ + @TableField(value = "im_group_id") + private String imGroupId; + + /** + * 额外信息 + */ + @TableField(value = "extra", typeHandler = FastjsonTypeHandler.class) + private JSONObject extra; + + /** + * 创建人id + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 修改人id + */ + @TableField(value = "updateBy") + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java new file mode 100644 index 00000000..5ea1c964 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -0,0 +1,62 @@ +package cn.axzo.visa.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录操作日志 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "visa_change_record_log", autoResultMap = true) +public class ChangeRecordLog extends BaseEntity { + + /** + * 变更签证记录id + */ + @TableField(value = "visa_id") + private Long visaId; + + /** + * 操作名称 + */ + @TableField(value = "name") + private String name; + + /** + * 操作标题 + */ + @TableField(value = "title") + private String title; + + /** + * 操作内容 + */ + + @TableField(value = "content") + private String content; + + /** + * 创建人id + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 修改人id + */ + @TableField(value = "updateBy") + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java new file mode 100644 index 00000000..2c6e630e --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java @@ -0,0 +1,74 @@ +package cn.axzo.visa.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "visa_change_record_relation", autoResultMap = true) +public class ChangeRecordRelation extends BaseEntity { + + /** + * 变更签证记录id + */ + @TableField(value = "visa_id") + private Long visaId; + + /** + * 关联的内容名称(发生内容及说明、相关单位及人员,单据,附件,审批记录) + */ + @TableField(value = "var_name") + private String varName; + + /** + * 扩展内容名称 + */ + @TableField(value = "var_ext") + private String varExt; + + /** + * 值类型 + */ + + @TableField(value = "var_type") + private String varType; + + /** + * 内容值 + */ + @TableField(value = "content") + private String content; + + /** + * 内容描述 + */ + @TableField(value = "description") + private String description; + + /** + * 创建人id + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 修改人id + */ + @TableField(value = "updateBy") + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java new file mode 100644 index 00000000..9ed96183 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.server.mapper; + +import cn.axzo.visa.server.domain.ChangeRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@Mapper +public interface ChangeRecordDao extends BaseMapper { + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java new file mode 100644 index 00000000..d30fe419 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.server.mapper; + +import cn.axzo.visa.server.domain.ChangeRecordLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录操作日志 + */ +@Mapper +public interface ChangeRecordLogDao extends BaseMapper { + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java new file mode 100644 index 00000000..821b3c7a --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.server.mapper; + +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +@Mapper +public interface ChangeRecordRelationDao extends BaseMapper { + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java new file mode 100644 index 00000000..ec7d3b09 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -0,0 +1,9 @@ +package cn.axzo.visa.server.service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录操作日志 + */ +public interface ChangeRecordLogService { +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java new file mode 100644 index 00000000..3c0d291f --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -0,0 +1,9 @@ +package cn.axzo.visa.server.service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +public interface ChangeRecordRelationService { +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java new file mode 100644 index 00000000..8758eb94 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -0,0 +1,9 @@ +package cn.axzo.visa.server.service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +public interface ChangeRecordService { +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java new file mode 100644 index 00000000..ea07a3d2 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -0,0 +1,22 @@ +package cn.axzo.visa.server.service.impl; + +import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.mapper.ChangeRecordLogDao; +import cn.axzo.visa.server.service.ChangeRecordLogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ChangeRecordLogServiceImpl extends ServiceImpl implements ChangeRecordLogService { + + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java new file mode 100644 index 00000000..d414f53a --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -0,0 +1,22 @@ +package cn.axzo.visa.server.service.impl; + +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; +import cn.axzo.visa.server.service.ChangeRecordRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { + + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java new file mode 100644 index 00000000..a6791dcd --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -0,0 +1,22 @@ +package cn.axzo.visa.server.service.impl; + +import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.visa.server.mapper.ChangeRecordDao; +import cn.axzo.visa.server.service.ChangeRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { + + +} From 84640982bdec42e11aee84dfc9ae31a081887ab5 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 15 Jan 2025 16:44:37 +0800 Subject: [PATCH 007/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E4=B8=9A=E5=8A=A1=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java index 11d2a98b..6c723001 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java @@ -14,9 +14,9 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaTypeEnum { - design_change("设计变更", ""), - technology_approved("技术核定", ""), - project_visa("工程签证", ""); + design_change("bgqz01", "设计变更"), + technology_approved("bgqz02", "技术核定"), + project_visa("bgqz03", "工程签证"); private final String processDefinitionKey; private final String desc; From d7c4ef6f71312b7a7d1aaa8cbeda53a0a2a41dd6 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 15 Jan 2025 17:09:54 +0800 Subject: [PATCH 008/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E7=AD=BE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9E=9A=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/api/enums/VisaStatusEnum.java | 27 +++++++++++++++++++ .../cn/axzo/visa/api/enums/VisaTypeEnum.java | 7 ++--- .../axzo/visa/server/domain/ChangeRecord.java | 6 +++-- 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java new file mode 100644 index 00000000..93f44acb --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -0,0 +1,27 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 签证业务状态 + * + * @author xudawei + * @since 2025-01-15 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaStatusEnum { + + TO_REPORT("to_report", "待提报"), + DECIDING("deciding", "决策中"), + EXECUTING( "executing","执行中"), + APPROVING( "approving","审批中"), + COMPLETED( "completed","已完成"), + FORBIDED( "forbided","已废除"), + ; + + private final String code; + private final String desc; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java index 6c723001..b0886598 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java @@ -14,10 +14,11 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaTypeEnum { - design_change("bgqz01", "设计变更"), - technology_approved("bgqz02", "技术核定"), - project_visa("bgqz03", "工程签证"); + DESIGN_CHANGE("bgqz01","design_change", "设计变更"), + TECHNOLOGY_APPROVED("bgqz02","technology_approved", "技术核定"), + PROJECT_VISA("bgqz03", "project_visa","工程签证"); private final String processDefinitionKey; + private final String code; private final String desc; } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 93f3fe6c..8793e802 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -1,6 +1,8 @@ package cn.axzo.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -73,13 +75,13 @@ public class ChangeRecord extends BaseEntity { * 单据类型 */ @TableField(value = "type") - private String type; + private VisaTypeEnum type; /** * 状态 */ @TableField(value = "status") - private String status; + private VisaStatusEnum status; /** * 最终审批ID From 2dcd43d43bb84f3d761e70f90ce504e324443945 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 15 Jan 2025 18:00:53 +0800 Subject: [PATCH 009/341] =?UTF-8?q?feat:=20(REQ-3300)=20amountChange?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/server/domain/ChangeRecord.java | 3 ++- .../server/service/ChangeRecordService.java | 10 ++++++++ .../service/impl/ChangeRecordServiceImpl.java | 23 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 8793e802..44ffde69 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -13,6 +13,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.math.BigDecimal; import java.util.Date; /** @@ -63,7 +64,7 @@ public class ChangeRecord extends BaseEntity { * 有符号的变更金额 */ @TableField(value = "amount_change") - private Integer amountChange; + private BigDecimal amountChange; /** * 发生原因 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 8758eb94..baa0a168 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,9 +1,19 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.api.enums.VisaStatusEnum; + /** * @author xudawei * @date 2025/01/15 * @desc 变更签证记录 */ public interface ChangeRecordService { + + /** + * 状态变更 + * @param changeRecordNo 变签单号 + * @param updateStatus 更新状态 + */ + Boolean changeStatus(String changeRecordNo, VisaStatusEnum updateStatus); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index a6791dcd..4d7ed879 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,13 +1,17 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.service.ChangeRecordService; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Objects; + /** * @author xudawei * @date 2025/01/15 @@ -19,4 +23,23 @@ import org.springframework.stereotype.Service; public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { + public Boolean changeStatus(String changeRecordNo, VisaStatusEnum updateStatus) { + if (StringUtils.isBlank(changeRecordNo) || Objects.isNull(updateStatus)) { + return false; + } + + + + switch (updateStatus) { + case DECIDING: + } +// return this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo) +// .eq(ChangeRecord::getIsDelete, 0) +// .in(ChangeRecord::getStatus,) +// .set(ChangeRecord::getStatus, updateStatus) +// .update(); + return true; + } + + } From 1d9faea3d459ca303f11f1af4ece9900d2dbc77a Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 15 Jan 2025 20:11:20 +0800 Subject: [PATCH 010/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=9B=B4=E6=8D=A2?= =?UTF-8?q?=E7=8A=B6=E6=80=81+=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/api/enums/VisaStatusEnum.java | 10 +-- .../visa/server/domain/ChangeRecordLog.java | 2 + .../service/ChangeRecordLogService.java | 8 +++ .../impl/ChangeRecordLogServiceImpl.java | 8 ++- .../service/impl/ChangeRecordServiceImpl.java | 61 +++++++++++++++---- 5 files changed, 73 insertions(+), 16 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 93f44acb..8b5941e7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -16,10 +16,12 @@ public enum VisaStatusEnum { TO_REPORT("to_report", "待提报"), DECIDING("deciding", "决策中"), - EXECUTING( "executing","执行中"), - APPROVING( "approving","审批中"), - COMPLETED( "completed","已完成"), - FORBIDED( "forbided","已废除"), + EXECUTING("executing","执行中"), + APPROVING("approving","审批中"), + COMPLETED("completed","已完成"), + FORBIDED("forbided","已废除"), + REPORT_FROM_APPROVE( "report_from_approve","审批到待提报"), + DECIDING_FROM_APPROVE( "deciding_from_approve","审批到决策中"), ; private final String code; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java index 5ea1c964..bded7e7a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -4,6 +4,7 @@ import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -19,6 +20,7 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor +@Builder @TableName(value = "visa_change_record_log", autoResultMap = true) public class ChangeRecordLog extends BaseEntity { diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index ec7d3b09..90140fb2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -1,9 +1,17 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.server.domain.ChangeRecordLog; + /** * @author xudawei * @date 2025/01/15 * @desc 变更签证记录操作日志 */ public interface ChangeRecordLogService { + + /** + * 增加操作日志 + */ + void addLog(ChangeRecordLog log); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index ea07a3d2..59385afc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -18,5 +18,11 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class ChangeRecordLogServiceImpl extends ServiceImpl implements ChangeRecordLogService { - + /** + * 增加操作日志 + */ + @Override + public void addLog(ChangeRecordLog log) { + this.saveOrUpdate(log); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 4d7ed879..04350145 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,15 +1,20 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.framework.domain.ServiceException; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.mapper.ChangeRecordDao; +import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordService; import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; import java.util.Objects; /** @@ -19,27 +24,61 @@ import java.util.Objects; */ @Slf4j @Service -@RequiredArgsConstructor public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { + @Resource + private ChangeRecordLogService changeRecordLogService; public Boolean changeStatus(String changeRecordNo, VisaStatusEnum updateStatus) { if (StringUtils.isBlank(changeRecordNo) || Objects.isNull(updateStatus)) { return false; } - - - switch (updateStatus) { - case DECIDING: + boolean update = this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo) + .eq(ChangeRecord::getIsDelete, 0) + .in(ChangeRecord::getStatus, this.preStatusListByUpdateStatus(updateStatus)) + .set(ChangeRecord::getStatus, updateStatus) + .update(); + if (!update) { + throw new ServiceException("更新状态失败"); } -// return this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo) -// .eq(ChangeRecord::getIsDelete, 0) -// .in(ChangeRecord::getStatus,) -// .set(ChangeRecord::getStatus, updateStatus) -// .update(); + ChangeRecordLog log = ChangeRecordLog.builder().build(); + changeRecordLogService.addLog(log); return true; } + /** + * 更新前置状态 + */ + private List preStatusListByUpdateStatus(VisaStatusEnum updateStatus) { + List preStatusList; + switch (updateStatus) { + case REPORT_FROM_APPROVE: + preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); + break; + case DECIDING_FROM_APPROVE: + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.APPROVING); + break; + case DECIDING: + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE,VisaStatusEnum.APPROVING); + break; + case EXECUTING: + preStatusList = Lists.newArrayList(VisaStatusEnum.DECIDING); + break; + case APPROVING: + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING); + break; + case COMPLETED: + preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); + break; + case FORBIDED: + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING,VisaStatusEnum.APPROVING); + break; + default: + throw new ServiceException("更新状态不匹配"); + } + return preStatusList; + } + } From e74fa123506e8dbf2fb61065aae85cecd4680ce3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 09:48:36 +0800 Subject: [PATCH 011/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaRelationFieldEnum.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java new file mode 100644 index 00000000..df54197b --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java @@ -0,0 +1,26 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 变洽签业务的 relation 表数据行的类型枚举 + * + * @author wangli + * @since 2025-01-16 09:42 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaRelationFieldEnum { + //发生内容及说明、相关单位及人员,单据,附件,审批记录 + CONTENT_DESCRIPTION("content_description", "发生内容及说明"), + TASK_ORDER("task_order", "任务单"), + RECTIFICATION_ORDER("rectification_order", "整改单"), + VISA_ORDER("visa_order", "变洽签变更单"), + ATTACHMENT("attachment", "附件"), + PROCESS_INSTANCE("process_instance", "审批实例"), + ; + private final String code; + private final String desc; +} From 1f0e4e168dc9f8ae1e63ae46b06f1000f68cab57 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 09:58:26 +0800 Subject: [PATCH 012/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changerecord/ChangeRecordRelationApi.java | 8 +++ .../visa/api/response/VisaRelationResp.java | 50 +++++++++++++++++++ .../ChangeRecordRelationController.java | 14 ++++++ .../server/domain/ChangeRecordRelation.java | 4 +- 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java index 4fc2b859..21d1702a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java @@ -1,7 +1,12 @@ package cn.axzo.visa.api.changerecord; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -10,6 +15,9 @@ import org.springframework.cloud.openfeign.FeignClient; @FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") public interface ChangeRecordRelationApi { + ApiResult> listByVisaId(String visaId); + + ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java new file mode 100644 index 00000000..2c6f25a2 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java @@ -0,0 +1,50 @@ +package cn.axzo.visa.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 变洽签关联的行数据相应模型 + * + * @author wangli + * @since 2025-01-16 09:50 + */ +@Data +@Accessors(chain = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaRelationResp { + + private Long id; + /** + * 变洽签主单据编号 + */ + private String visaId; + /** + * 变洽签单据关联的行数据类型 + * {@link cn.axzo.visa.api.enums.VisaRelationFieldEnum} + */ + private String varName; + + /** + * 数据类型的扩展内容 + */ + private String varExt; + /** + * 数据值的 java 类型 + */ + private String varType; + /** + * 数据值 + */ + private String content; + /** + * 数据值的一些额外描述 + */ + private String content_ext; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java index e939939c..c1ac4d6f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java @@ -1,12 +1,17 @@ package cn.axzo.visa.server.controller; +import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.response.VisaRelationResp; import cn.axzo.visa.server.service.ChangeRecordRelationService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -20,4 +25,13 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { @Autowired private ChangeRecordRelationService changeRecordRelationService; + @Override + public ApiResult> listByVisaId(String visaId) { + return null; + } + + @Override + public ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum) { + return null; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java index 2c6e630e..3d09f71b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java @@ -56,8 +56,8 @@ public class ChangeRecordRelation extends BaseEntity { /** * 内容描述 */ - @TableField(value = "description") - private String description; + @TableField(value = "content_ext") + private String content_ext; /** * 创建人id From d07375295cbbd1bfdba780945d10fff26810cda2 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 10:44:19 +0800 Subject: [PATCH 013/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/response/VisaRelationResp.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java index 2c6f25a2..9cccb322 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java @@ -6,6 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.util.Date; + /** * 变洽签关联的行数据相应模型 * @@ -47,4 +49,9 @@ public class VisaRelationResp { */ private String content_ext; + /** + * 创建时间 + */ + private Date createAt; + } From 0568485691bb60aa3d93866d21616fa17b9487f1 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 10:49:32 +0800 Subject: [PATCH 014/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changerecord/ChangeRecordRelationApi.java | 2 -- .../visa/api/request/VisaRelationReq.java | 36 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java index 21d1702a..c5a04b6b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java @@ -15,8 +15,6 @@ import java.util.List; @FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") public interface ChangeRecordRelationApi { - ApiResult> listByVisaId(String visaId); - ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum); diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java new file mode 100644 index 00000000..f4d1949b --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java @@ -0,0 +1,36 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; + +/** + * 变洽签关联数据查询入参模型 + * + * @author wangli + * @since 2025-01-16 10:46 + */ +@Data +@Accessors(chain = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaRelationReq { + + /** + * 变洽签单据 ID + */ + @NotBlank(message = "变洽签单据 ID不能为空") + private Long visaId; + + /** + * 关联表中指定类型 + * 可为空,则查询所有关联的数据 + */ + private VisaRelationFieldEnum fieldEnum; +} From 896fa7a635ae79c5ea57efe24463165dd302477a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 11:01:55 +0800 Subject: [PATCH 015/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/controller/ChangeRecordRelationController.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java index c1ac4d6f..87e96ed4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java @@ -25,11 +25,6 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { @Autowired private ChangeRecordRelationService changeRecordRelationService; - @Override - public ApiResult> listByVisaId(String visaId) { - return null; - } - @Override public ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum) { return null; From 0a1b1787812b88ff8cb9a69b3a088752a8ff2592 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 16 Jan 2025 11:14:32 +0800 Subject: [PATCH 016/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/changerecord/ChangeRecordRelationApi.java | 7 ++++++- .../server/controller/ChangeRecordRelationController.java | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java index c5a04b6b..6573e521 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java @@ -2,8 +2,12 @@ package cn.axzo.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.request.VisaRelationReq; import cn.axzo.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -15,7 +19,8 @@ import java.util.List; @FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") public interface ChangeRecordRelationApi { - ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum); + @PostMapping("/api/visa/relation/list") + ApiResult> listByVisaId(@Validated @RequestBody VisaRelationReq req) ; } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java index 87e96ed4..dfc17f61 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java @@ -3,6 +3,7 @@ package cn.axzo.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordRelationApi; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.request.VisaRelationReq; import cn.axzo.visa.api.response.VisaRelationResp; import cn.axzo.visa.server.service.ChangeRecordRelationService; import lombok.RequiredArgsConstructor; @@ -26,7 +27,7 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { private ChangeRecordRelationService changeRecordRelationService; @Override - public ApiResult> listByVisaId(String visaId, VisaRelationFieldEnum fieldEnum) { + public ApiResult> listByVisaId(VisaRelationReq req) { return null; } } From 21259b941d79e9093a9df8fdcff18e4d745f3928 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 14:28:09 +0800 Subject: [PATCH 017/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9A=82=E5=AD=98=E3=80=81=E6=B4=BD=E5=95=86=E3=80=81=E6=8F=90?= =?UTF-8?q?=E5=AE=A1=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-api/pom.xml | 4 + .../api/changerecord/ChangeRecordApi.java | 32 ++++ .../api/req/VisaChangeApproveCreateReq.java | 56 ++++++ .../api/req/VisaChangeDiscussCreateReq.java | 20 +++ .../visa/api/req/VisaChangeTempCreateReq.java | 160 ++++++++++++++++++ .../controller/ChangeRecordController.java | 18 ++ .../axzo/visa/server/domain/ChangeRecord.java | 6 + 7 files changed, 296 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml index 5272d1e0..4f31a062 100644 --- a/visa/visa-api/pom.xml +++ b/visa/visa-api/pom.xml @@ -23,6 +23,10 @@ cn.axzo.framework axzo-common-domain + + com.alibaba + fastjson + diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 630c0f9e..23870aa4 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -1,6 +1,13 @@ package cn.axzo.visa.api.changerecord; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.visa.api.req.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.req.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.req.VisaChangeTempCreateReq; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * @author xudawei @@ -10,6 +17,31 @@ import org.springframework.cloud.openfeign.FeignClient; @FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") public interface ChangeRecordApi { + /** + * 暂存变更签证记录 + * + * @param req {@link VisaChangeTempCreateReq} 签证变更表单数据 + * @return 签证变更记录id + */ + @PostMapping("/api/visa/change/tempCreate") + ApiResult tempCreateVisaChangeRecord(@RequestBody @Validated VisaChangeTempCreateReq req); + /** + * 创建群聊洽商变更签证 + * + * @param req {@link VisaChangeDiscussCreateReq} + * @return 签证变更记录id + */ + @PostMapping("/api/visa/change/discussCreate") + ApiResult discussCreateVisaChangeRecord(@RequestBody @Validated VisaChangeDiscussCreateReq req); + + /** + * 发起变更签证审批 + * + * @param req {@link VisaChangeApproveCreateReq} 签证变更表单数据域审批人信息 + * @return 签证变更记录id + */ + @PostMapping("/api/visa/change/approveCreate") + ApiResult approveCreateVisaChangeRecord(@RequestBody @Validated VisaChangeApproveCreateReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java new file mode 100644 index 00000000..ee012166 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java @@ -0,0 +1,56 @@ +package cn.axzo.visa.api.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 13:33 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { + + /** + * 审批人信息 + */ + private List approvePersonInfoList; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ApprovePersonInfo { + /** + * 单位类型 1:施工单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 9:项目内班组 13:设计单位 + * + * @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum + */ + private Integer type; + + /** + * 项目id + */ + private Long workspaceId; + + /** + * 单位id + */ + private Long unitId; + + /** + * 审批人personId列表 + */ + private List personIdList; + } + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java new file mode 100644 index 00000000..d5a31400 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java @@ -0,0 +1,20 @@ +package cn.axzo.visa.api.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 11:55 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeDiscussCreateReq extends VisaChangeTempCreateReq { +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java new file mode 100644 index 00000000..b9bcec33 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java @@ -0,0 +1,160 @@ +package cn.axzo.visa.api.req; + +import cn.axzo.visa.api.enums.VisaTypeEnum; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 11:53 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeTempCreateReq { + + + /** + * 单号 + */ + @NotBlank(message = "请输入单号") + private String no; + + /** + * 主题 + */ + @NotBlank(message = "请输入主题") + private String topic; + + /** + * 项目 + */ + @NotNull(message = "关联项目不能为空") + @Min(value = 1, message = "关联项目不能为空") + private Long relationWorkspaceId; + + /** + * 工程 + */ + @NotBlank(message = "请选择工程") + @Min(value = 1, message = "请选择工程") + private Long relationProject; + + /** + * 区域集合 + */ + private JSONObject relationArea; + + /** + * 提交日期 + */ + @NotNull(message = "请选择提交日期") + private Date submitDate; + + /** + * 专业集合 + */ + @NotNull(message = "请选择专业") + private JSONObject relationProfessional; + + /** + * 发生原因 + */ + @NotBlank(message = "请填写发生原因") + private String reason; + + /** + * 单据类型 + */ + @NotNull(message = "请选择变更签证类型") + private VisaTypeEnum type; + + /** + * 相关单位及人员 + */ + private List relationUnitAndPersonList; + + /** + * 发生内容说明 + */ + private List changeContextAndDescriptionList; + + /** + * 有符号的变更金额 + */ + private BigDecimal amountChange; + + /** + * 关联的单据,key: 单据类型,value: 单据id集合 + *

+ * TASK :任务单 RECTIFY :整改单 CHANGE:变更单 + * 只有变更签证类型即{@code type}为“技术核定”或“工程签证”时才可能会有关联变更单 + *

+ */ + private Map> relationOrderMap; + + /** + * 附件 + */ + @Size(max = 30, message = "最多支持上传30个附件,已超出请重新选择") + private List attach; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationUnitAndPerson { + /** + * 单位类型 1:施工单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 9:项目内班组 13:设计单位 + * + * @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum + */ + private Integer type; + + /** + * 单位id + */ + private Long unitId; + + /** + * 确认人personId + */ + private Long personId; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ChangeContextAndDescription { + /** + * 内容类型,1:图片 2:图纸批注 + */ + private Integer Type; + + /** + * 图片或图纸 + */ + private String imgUrl; + + /** + * 内容说明 + */ + private String text; + + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index a2d20a0a..7cf21119 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -1,6 +1,10 @@ package cn.axzo.visa.server.controller; +import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordApi; +import cn.axzo.visa.api.req.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.req.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.req.VisaChangeTempCreateReq; import cn.axzo.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -20,4 +24,18 @@ public class ChangeRecordController implements ChangeRecordApi { @Autowired private ChangeRecordService changeRecordService; + @Override + public ApiResult tempCreateVisaChangeRecord(VisaChangeTempCreateReq req) { + return null; + } + + @Override + public ApiResult discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { + return null; + } + + @Override + public ApiResult approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) { + return null; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 44ffde69..56381f85 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -41,6 +41,12 @@ public class ChangeRecord extends BaseEntity { @TableField(value = "topic") private String topic; + /** + * 项目 + */ + @TableField(value = "relation_workspaceId") + private Long relationWorkspaceId; + /** * 工程 */ From 30c71a721119baabc7167857e90b290cf7c88c7f Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 15:04:01 +0800 Subject: [PATCH 018/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9A=82=E5=AD=98=E3=80=81=E6=B4=BD=E5=95=86=E3=80=81=E6=8F=90?= =?UTF-8?q?=E5=AE=A1=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java | 3 ++- .../cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java | 6 ++---- .../java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java index ee012166..43d42bdb 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import java.util.List; @@ -15,7 +16,7 @@ import java.util.List; */ @EqualsAndHashCode(callSuper = true) @Data -@Builder +@SuperBuilder @NoArgsConstructor @AllArgsConstructor public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java index d5a31400..c764d4cb 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java @@ -1,10 +1,9 @@ package cn.axzo.visa.api.req; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * @author chenwenjian @@ -13,8 +12,7 @@ import lombok.NoArgsConstructor; */ @EqualsAndHashCode(callSuper = true) @Data -@Builder +@SuperBuilder @NoArgsConstructor -@AllArgsConstructor public class VisaChangeDiscussCreateReq extends VisaChangeTempCreateReq { } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java index b9bcec33..6b7df8fc 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; @@ -22,7 +23,7 @@ import java.util.Map; * @date 2025/1/16 11:53 */ @Data -@Builder +@SuperBuilder @NoArgsConstructor @AllArgsConstructor public class VisaChangeTempCreateReq { From ec35f45ea63f3ead5909aaca7fcbf55334df4fb7 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 15:37:47 +0800 Subject: [PATCH 019/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9A=82=E5=AD=98=E3=80=81=E6=B4=BD=E5=95=86=E3=80=81=E6=8F=90?= =?UTF-8?q?=E5=AE=A1=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java index 6b7df8fc..6249bfbb 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java @@ -131,6 +131,11 @@ public class VisaChangeTempCreateReq { */ private Long unitId; + /** + * 班组节点id,{@code type}为项目内班组时使用 + */ + private Long teamNodeId; + /** * 确认人personId */ From 5d71979ad06fdae613a3c84bc316a2ed389c97a8 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 16 Jan 2025 16:33:13 +0800 Subject: [PATCH 020/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E7=AD=BE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=B7=BB=E5=8A=A0API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 23 ++- .../api/changerecord/ChangeRecordLogApi.java | 13 +- .../visa/api/enums/VisaButtonTypeEnum.java | 31 +++ .../axzo/visa/api/enums/VisaLogTypeEnum.java | 65 +++++++ .../axzo/visa/api/enums/VisaStatusEnum.java | 17 +- .../visa/api/request/AddVisaLogRequest.java | 52 ++++++ .../visa/api/request/ChangeStatusRequest.java | 67 +++++++ .../request/FetchVisaLogByVisaIdRequest.java | 26 +++ .../VisaChangeApproveCreateReq.java | 2 +- .../VisaChangeDiscussCreateReq.java | 2 +- .../VisaChangeTempCreateReq.java | 2 +- .../api/request/VisaDetailByIdRequest.java | 27 +++ .../FetchVisaLogByVisaIdResponse.java | 36 ++++ .../api/response/VisaDetailByIdResponse.java | 176 ++++++++++++++++++ .../controller/ChangeRecordController.java | 27 ++- .../controller/ChangeRecordLogController.java | 21 ++- .../visa/server/domain/ChangeRecordLog.java | 6 +- .../service/ChangeRecordLogService.java | 15 ++ .../server/service/ChangeRecordService.java | 6 +- .../impl/ChangeRecordLogServiceImpl.java | 66 +++++++ .../service/impl/ChangeRecordServiceImpl.java | 119 +++++++++--- 21 files changed, 746 insertions(+), 53 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java rename visa/visa-api/src/main/java/cn/axzo/visa/api/{req => request}/VisaChangeApproveCreateReq.java (97%) rename visa/visa-api/src/main/java/cn/axzo/visa/api/{req => request}/VisaChangeDiscussCreateReq.java (91%) rename visa/visa-api/src/main/java/cn/axzo/visa/api/{req => request}/VisaChangeTempCreateReq.java (99%) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 23870aa4..4e02c8df 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -1,14 +1,19 @@ package cn.axzo.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.visa.api.req.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.req.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.req.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import javax.validation.Valid; + /** * @author xudawei * @date 2025/01/15 @@ -44,4 +49,16 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/approveCreate") ApiResult approveCreateVisaChangeRecord(@RequestBody @Validated VisaChangeApproveCreateReq req); + /** + * 变签状态变更 + */ + @PostMapping("/api/visa/changeStatus") + boolean changeStatus(@RequestBody @Valid ChangeStatusRequest request); + + /** + * 变签详情 + */ + @PostMapping("/api/visa/visaDetailById") + VisaDetailByIdResponse visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request); + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java index a66a575c..b8a21eed 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java @@ -1,6 +1,13 @@ package cn.axzo.visa.api.changerecord; +import cn.axzo.framework.domain.web.result.ApiListResult; +import cn.axzo.visa.api.request.FetchVisaLogByVisaIdRequest; +import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; /** * @author xudawei @@ -10,6 +17,10 @@ import org.springframework.cloud.openfeign.FeignClient; @FeignClient(name = "nanopart", url = "${axzo.service.nanopart:http://nanopart:8080}") public interface ChangeRecordLogApi { - + /** + * 根据变签Id,获取变签日志 + */ + @PostMapping("api/visa/log/fetchVisaLogByVisaId") + ApiListResult fetchVisaLogByVisaId(@RequestBody @Valid FetchVisaLogByVisaIdRequest req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java new file mode 100644 index 00000000..baf9c15d --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 按钮枚举 + * @author xudawei + * @since 2025-01-15 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaButtonTypeEnum { + + UPDATE("update", "编辑"), + DELETE("delete", "删除"), + FORBID("forbid", "作废"), + EXECUTE("execute", "执行"), + TO_APPROVE("to_approve", "提交审批"), + UPLOAD_FILE("upload_file", "上传附件"), + CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录"), + TO_HANDLE("to_handle", "去处理"), + ; + + + private String code; + + private String desc; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java new file mode 100644 index 00000000..12c83dbb --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java @@ -0,0 +1,65 @@ +package cn.axzo.visa.api.enums; + +import com.google.common.collect.Sets; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Objects; +import java.util.Set; + +/** + * 变签日志类型 + * @author xudawei + * @since 2025-01-15 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaLogTypeEnum { + + CHAT_GROUP("chat_group", "发起群聊洽商","发起群聊洽商","%s发起群聊洽商"), + EDIT_FORM("edit_form", "编辑表单","%s编辑表单","%s编辑一下表单字段:"), + EDIT_AMOUNT("edit_amount", "编辑金额变化","%s编辑金额变化","原值:金额变化:%s;/n 新值:金额变化:%s;"), + UPLOAD_FILE("upload_file", "上传附件","%s上传附件","%s上传%d个附件:"), + DELETE_UPLOAD_FILE("delete_upload_file", "删除附件","%s删除附件","%s删除%d个附件:"), + TO_EXECUTE("to_execute", "发起执行","发起执行", "%s发起执行"), + TO_APPRROVE("to_apprrove", "发起审批","发起%s审批", "%s发起%s审批"), + APPROVED_AGRESS("approved_agress", "审批流:某审批人审批通过","%s审批通过", "%s审批通过"), + FORBIDED("forbided", "单据作废","单据废止", "%s操作废止单据"), + REVERT_APPROVE("revert_approve", "审批流:撤回审批","审批流程撤回", "%s撤回审批流程"), + REJECT_APPROVE("reject_approve", "审批流:已驳回","%s驳回审批", "%s已驳回,原因为%s"), + TRANSMIT_APPROVE("transmit_approve", "审批流操作:转交","审批人变更", "%s将审批转交至%s,原因为%s"), + FALLBACK_APPROVE("fallback_approve", "审批流操作:回退","%s回退审批", "%s回退审批至审批节点:%s"), + APPROVE_COMPLETED("approved_completed", "审批流:审批通过","%s通过", "%s流程已完成"), + ; + + /** + * 审批不通过的日志集合 + */ + private static final Set approveNotAgree = Sets.newHashSet(REVERT_APPROVE, REJECT_APPROVE, FALLBACK_APPROVE); + + /** + * 审批不通过的日志集合 + */ +// private static final Set approveNotAgree = Sets.newHashSet(EDIT_FORM, EDIT_AMOUNT, UPLOAD_FILE, DELETE_UPLOAD_FILE, APPROVED_AGRESS); + + + + private String code; + + private String action; + + private String title; + + private String content; + +// private boolean + + /** + * 是否审批不通过 + */ + public static boolean isApproveNotAgree(VisaLogTypeEnum logType) { + return Objects.nonNull(logType) && approveNotAgree.contains(logType); + } + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 8b5941e7..9965c029 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -14,16 +14,17 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaStatusEnum { - TO_REPORT("to_report", "待提报"), - DECIDING("deciding", "决策中"), - EXECUTING("executing","执行中"), - APPROVING("approving","审批中"), - COMPLETED("completed","已完成"), - FORBIDED("forbided","已废除"), - REPORT_FROM_APPROVE( "report_from_approve","审批到待提报"), - DECIDING_FROM_APPROVE( "deciding_from_approve","审批到决策中"), + TO_REPORT("to_report", "待提报", null), + DECIDING("deciding", "决策中", VisaLogTypeEnum.CHAT_GROUP), + EXECUTING("executing","执行中", VisaLogTypeEnum.TO_EXECUTE), + APPROVING("approving","审批中", VisaLogTypeEnum.TO_APPRROVE), + COMPLETED("completed","已完成",VisaLogTypeEnum.APPROVE_COMPLETED), + FORBIDED("forbided","已废除",VisaLogTypeEnum.FORBIDED), + REPORT_FROM_APPROVE("report_from_approve","审批到待提报", null), + DECIDING_FROM_APPROVE("deciding_from_approve","审批到决策中", null), ; private final String code; private final String desc; + private final VisaLogTypeEnum logType; } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java new file mode 100644 index 00000000..b09d19be --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java @@ -0,0 +1,52 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 添加变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class AddVisaLogRequest { + + /** + * 变签Id + */ + @NotNull(message = "变签Id不能为空") + private Long visaId; + + /** + * 日志类型 + */ + @NotNull(message = "日志类型不能为空") + private VisaLogTypeEnum logType; + + /** + * 操作人Id + */ + @NotNull(message = "操作人Id不能为空") + private Long personId; + /** + * 操作人单位Id + */ + @NotNull(message = "操作人单位Id不能为空") + private Long ouId; + /** + * 操作人项目Id + */ + @NotNull(message = "操作人项目Id不能为空") + private Long workspaceId; + + + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java new file mode 100644 index 00000000..51f661fd --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java @@ -0,0 +1,67 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.framework.domain.ServiceException; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class ChangeStatusRequest { + + /** + * 变签Id + */ + @NotNull(message = "变签Id不能为空") + private Long visaId; + /** + * 更新成状态 + */ + @NotNull(message = "更新成状态不能为空") + private VisaStatusEnum updateStatus; + /** + * 操作人Id + */ + @NotNull(message = "操作人Id不能为空") + private Long personId; + /** + * 操作人单位Id + */ + @NotNull(message = "操作人单位Id不能为空") + private Long ouId; + /** + * 操作人项目Id + */ + @NotNull(message = "操作人项目Id不能为空") + private Long workspaceId; + + /** + * 日志类型, + * 审批不通过(已驳回、已撤回、已中止) 才需要传这个信息 + * 1 REVERT_APPROVE("revert_approve", "审批流:撤回审批","审批流程撤回", "%s撤回审批流程"), + * 2 REJECT_APPROVE("reject_approve", "审批流:已驳回","%s驳回审批", "%s已驳回,原因为%s"), + * 3 FALLBACK_APPROVE("fallback_approve", "审批流操作:回退","%s回退审批", "%s回退审批至审批节点:%s"), + */ + private VisaLogTypeEnum logType; + + public void check() { + if (Objects.nonNull(logType) && !VisaLogTypeEnum.isApproveNotAgree(logType)) { + throw new ServiceException("不是审核不通过日志"); + } + } + + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java new file mode 100644 index 00000000..aa788f29 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java @@ -0,0 +1,26 @@ +package cn.axzo.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class FetchVisaLogByVisaIdRequest { + + /** + * 变签Id + */ + @NotNull(message = "变签Id不能为空") + private Long visaId; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java similarity index 97% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java index 43d42bdb..3c6ced04 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.req; +package cn.axzo.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java similarity index 91% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java index c764d4cb..8b81d988 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeDiscussCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.req; +package cn.axzo.visa.api.request; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java similarity index 99% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index 6249bfbb..1e501958 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.req; +package cn.axzo.visa.api.request; import cn.axzo.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java new file mode 100644 index 00000000..3964a8ec --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java @@ -0,0 +1,27 @@ +package cn.axzo.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class VisaDetailByIdRequest { + + /** + * 变签Id + */ + @NotNull(message = "变签Id不能为空") + private Long visaId; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java new file mode 100644 index 00000000..fbb55585 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java @@ -0,0 +1,36 @@ +package cn.axzo.visa.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class FetchVisaLogByVisaIdResponse { + + /** + * 操作标题 + */ + private String title; + + /** + * 操作内容 + */ + private String content; + + /** + * 创建时间 + */ + private Date createAt; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java new file mode 100644 index 00000000..b0aa9e78 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -0,0 +1,176 @@ +package cn.axzo.visa.api.response; + +import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class VisaDetailByIdResponse { + + /** + * 变签Id + */ + private Long visaId; + + + /** + * 单号 + */ + private String no; + + /** + * 主题 + */ + private String topic; + + /** + * 项目 + */ + private Long relationWorkspaceId; + + /** + * 项目名称 + */ + private String relationWorkspaceName; + + /** + * 工程 + */ + private Long relationProject; + + /** + * 工程名称 + */ + private String relationProjectName; + + /** + * 区域集合 + */ + private JSONObject relationArea; + + /** + * 提交日期 + */ + private Date submitDate; + + /** + * 专业集合 + */ + private JSONObject relationProfessional; + + /** + * 发生原因 + */ + private String reason; + + /** + * 单据类型 + */ + private VisaTypeEnum type; + + /** + * 相关单位及人员 + */ + private List relationUnitAndPersonList; + + /** + * 发生内容说明 + */ + private List changeContextAndDescriptionList; + + /** + * 有符号的变更金额 + */ + private BigDecimal amountChange; + + /** + * 关联的单据,key: 单据类型,value: 单据id集合 + *

+ * TASK :任务单 RECTIFY :整改单 CHANGE:变更单 + * 只有变更签证类型即{@code type}为“技术核定”或“工程签证”时才可能会有关联变更单 + *

+ */ + private Map> relationOrderMap; + + /** + * 附件 + */ + private List attach; + + /** + * 按钮 + */ + private List btnList; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationUnitAndPerson { + /** + * 单位类型 1:施工单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 9:项目内班组 13:设计单位 + */ + private Integer type; + + /** + * 单位id + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 确认人名称 + */ + private String realName; + + /** + * 确认人personId + */ + private Long personId; + } + + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ChangeContextAndDescription { + /** + * 内容类型,1:图片 2:图纸批注 + */ + private Integer Type; + + /** + * 图片或图纸 + */ + private String imgUrl; + + /** + * 内容说明 + */ + private String text; + + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 7cf21119..60a7a176 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -2,15 +2,21 @@ package cn.axzo.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordApi; -import cn.axzo.visa.api.req.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.req.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.req.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; + /** * @author xudawei * @date 2025/01/15 @@ -38,4 +44,19 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) { return null; } + /** + * 变签状态变更 + */ + @Override + public boolean changeStatus(@RequestBody @Valid ChangeStatusRequest request) { + return changeRecordService.changeStatus(request); + } + + + /** + * 变签详情 + */ + public VisaDetailByIdResponse visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { + return null; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java index 242a931d..abd0edec 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java @@ -1,13 +1,20 @@ package cn.axzo.visa.server.controller; +import cn.axzo.framework.domain.web.result.ApiListResult; import cn.axzo.visa.api.changerecord.ChangeRecordLogApi; +import cn.axzo.visa.api.request.FetchVisaLogByVisaIdRequest; +import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; import cn.axzo.visa.server.service.ChangeRecordLogService; -import cn.axzo.visa.server.service.ChangeRecordService; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -15,10 +22,18 @@ import org.springframework.web.bind.annotation.RestController; */ @Slf4j @RestController -@RequiredArgsConstructor public class ChangeRecordLogController implements ChangeRecordLogApi { @Autowired private ChangeRecordLogService changeRecordLogService; + /** + * 根据变签Id,获取变签日志 + */ + @RequestMapping(value = "api/visa/log/fetchVisaLogByVisaId", method = RequestMethod.POST) + public ApiListResult fetchVisaLogByVisaId(@RequestBody @Valid FetchVisaLogByVisaIdRequest req) { + List responseList = changeRecordLogService.fetchVisaLogByVisaId(req.getVisaId()); + return ApiListResult.ok(responseList); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java index bded7e7a..7565c08f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -31,10 +31,10 @@ public class ChangeRecordLog extends BaseEntity { private Long visaId; /** - * 操作名称 + * 操作动作 */ - @TableField(value = "name") - private String name; + @TableField(value = "action") + private String action; /** * 操作标题 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index 90140fb2..a73162af 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -1,7 +1,11 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; import cn.axzo.visa.server.domain.ChangeRecordLog; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -14,4 +18,15 @@ public interface ChangeRecordLogService { */ void addLog(ChangeRecordLog log); + /** + * 缺少REQ对象 + */ + void addLog(Long visaId, VisaLogTypeEnum type, Long personId, Long ouId, Long workspaceId); + + /** + * 通过变签Id获取日志 + * @param visaId 变签Id + */ + List fetchVisaLogByVisaId(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index baa0a168..4598ea2b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,6 +1,6 @@ package cn.axzo.visa.server.service; -import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.request.ChangeStatusRequest; /** * @author xudawei @@ -11,9 +11,7 @@ public interface ChangeRecordService { /** * 状态变更 - * @param changeRecordNo 变签单号 - * @param updateStatus 更新状态 */ - Boolean changeStatus(String changeRecordNo, VisaStatusEnum updateStatus); + Boolean changeStatus(ChangeStatusRequest request); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 59385afc..d91901ad 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -1,13 +1,22 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.framework.domain.ServiceException; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.mapper.ChangeRecordLogDao; import cn.axzo.visa.server.service.ChangeRecordLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + /** * @author xudawei * @date 2025/01/15 @@ -25,4 +34,61 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl fetchVisaLogByVisaId(Long visaId) { + if (Objects.isNull(visaId)) { + return Lists.newArrayList(); + } + List logList = this.lambdaQuery().eq(ChangeRecordLog::getVisaId, visaId) + .eq(ChangeRecordLog::getIsDelete, 0) + .orderByDesc(ChangeRecordLog::getCreateAt) + .list(); + if (CollectionUtils.isEmpty(logList)) { + return Lists.newArrayList(); + } + return logList.stream().map(item -> FetchVisaLogByVisaIdResponse.builder() + .title(item.getTitle()) + .content(item.getContent()) + .createAt(item.getCreateAt()) + .build()).collect(Collectors.toList()); + + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 04350145..7234916e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,17 +1,20 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordService; -import com.alibaba.excel.util.StringUtils; +import cn.hutool.core.lang.Pair; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; @@ -29,55 +32,121 @@ public class ChangeRecordServiceImpl extends ServiceImpl, ChangeRecordLog> pair = this.buildPreStatusAndLog(request.getUpdateStatus(), request.getLogType()); + // 2 更新状态 + this.updateVisaStatus(request.getVisaId(), pair.getKey(), request.getUpdateStatus()); + // 3 新增日志 + this.addLog(pair.getValue()); + return true; + } - boolean update = this.lambdaUpdate().eq(ChangeRecord::getNo, changeRecordNo) + /** + * 更新变签状态 + */ + private boolean updateVisaStatus(Long visaId, List statusList, VisaStatusEnum updateStatus) { + boolean update = this.lambdaUpdate().eq(ChangeRecord::getId, visaId) .eq(ChangeRecord::getIsDelete, 0) - .in(ChangeRecord::getStatus, this.preStatusListByUpdateStatus(updateStatus)) + .in(ChangeRecord::getStatus, statusList) .set(ChangeRecord::getStatus, updateStatus) .update(); if (!update) { throw new ServiceException("更新状态失败"); } - ChangeRecordLog log = ChangeRecordLog.builder().build(); - changeRecordLogService.addLog(log); - return true; + return update; + } + + /** + * 添加日志 + */ + private void addLog(ChangeRecordLog log) { + if (Objects.nonNull(log) && StringUtils.hasText(log.getTitle())) { + changeRecordLogService.addLog(log); + } + } + + private String userName(Long personId, Long ouId, Long workspaceId) { + return ""; } /** * 更新前置状态 */ - private List preStatusListByUpdateStatus(VisaStatusEnum updateStatus) { + private Pair, ChangeRecordLog> buildPreStatusAndLog(VisaStatusEnum updateStatus, VisaLogTypeEnum logType) { List preStatusList; + ChangeRecordLog.ChangeRecordLogBuilder builder = ChangeRecordLog.builder(); switch (updateStatus) { + case DECIDING: + // 动作: 创建群聊洽商 + // 状态流转:[待提报|审核不通过的待提报] --> [决策中] + builder.action(updateStatus.getLogType().getAction()); + builder.title(updateStatus.getLogType().getTitle()); + builder.content(updateStatus.getLogType().getContent()); + + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE); + break; + case EXECUTING: + // 动作:执行 + // 状态流转:[决策中|审核不通过的待提报]-->[执行中] + builder.action(updateStatus.getLogType().getAction()); + builder.title(updateStatus.getLogType().getTitle()); + builder.content(updateStatus.getLogType().getContent()); + + preStatusList = Lists.newArrayList(VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE); + break; + case APPROVING: + // 动作:发起审批 + // 状态流转:[待提报|审批不通过的待提报|决策中|审批不通过的决策中|执行中]-->[审批中] + builder.action(updateStatus.getLogType().getAction()); + builder.title(updateStatus.getLogType().getTitle()); + builder.content(updateStatus.getLogType().getContent()); + + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING); + break; case REPORT_FROM_APPROVE: + //TODO + // 动作:审批不通过(已驳回、已撤回、已中止) + // 状态流转:[审批中]-->[审核不通过的待提报] + builder.action(logType.getAction()); + builder.title(logType.getTitle()); + builder.content(logType.getContent()); + preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); break; case DECIDING_FROM_APPROVE: - preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.APPROVING); - break; - case DECIDING: - preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE,VisaStatusEnum.APPROVING); - break; - case EXECUTING: - preStatusList = Lists.newArrayList(VisaStatusEnum.DECIDING); - break; - case APPROVING: - preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING); - break; - case COMPLETED: + //TODO + // 动作:审批不通过(已驳回、已撤回、已中止) + // 状态流转:[审批中]-->[审核不通过的决策中] + builder.action(logType.getAction()); + builder.title(logType.getTitle()); + builder.content(logType.getContent()); + preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); break; case FORBIDED: + // 动作:作废 + // 状态流转:[待提报|审核不通过的待提报|决策中|审核不通过的决策中|执行中|审批中]-->[审核不通过的决策中] + builder.action(updateStatus.getLogType().getAction()); + builder.title(updateStatus.getLogType().getTitle()); + builder.content(updateStatus.getLogType().getContent()); + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE,VisaStatusEnum.EXECUTING,VisaStatusEnum.APPROVING); break; + case COMPLETED: + // 动作:整个审批通过 + // 状态流转:[审批中]-->[已完成] + builder.action(updateStatus.getLogType().getAction()); + builder.title(updateStatus.getLogType().getTitle()); + builder.content(updateStatus.getLogType().getContent()); + + preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); + break; default: - throw new ServiceException("更新状态不匹配"); + throw new ServiceException("更新状态类型不匹配"); } - return preStatusList; + return Pair.of(preStatusList, builder.build()); } From 448e6aa4b282091b068dd67c67d97e1270c68ee3 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 16 Jan 2025 16:47:01 +0800 Subject: [PATCH 021/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E7=AD=BE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=B7=BB=E5=8A=A0API-=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java | 2 +- .../cn/axzo/visa/server/controller/ChangeRecordController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 4e02c8df..fbd892f0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -59,6 +59,6 @@ public interface ChangeRecordApi { * 变签详情 */ @PostMapping("/api/visa/visaDetailById") - VisaDetailByIdResponse visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request); + ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 60a7a176..375344ef 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -56,7 +56,7 @@ public class ChangeRecordController implements ChangeRecordApi { /** * 变签详情 */ - public VisaDetailByIdResponse visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { + public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { return null; } } From fd0e1a22dad7a21a3bb7c9a5e67b8274944abfaf Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 16 Jan 2025 16:57:21 +0800 Subject: [PATCH 022/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E7=AD=BE=E7=8A=B6=E6=80=81=E6=B7=BB=E5=8A=A0API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java | 2 +- .../axzo/visa/server/controller/ChangeRecordController.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index fbd892f0..22967180 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -53,7 +53,7 @@ public interface ChangeRecordApi { * 变签状态变更 */ @PostMapping("/api/visa/changeStatus") - boolean changeStatus(@RequestBody @Valid ChangeStatusRequest request); + ApiResult changeStatus(@RequestBody @Valid ChangeStatusRequest request); /** * 变签详情 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 375344ef..84dc4796 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -48,8 +48,8 @@ public class ChangeRecordController implements ChangeRecordApi { * 变签状态变更 */ @Override - public boolean changeStatus(@RequestBody @Valid ChangeStatusRequest request) { - return changeRecordService.changeStatus(request); + public ApiResult changeStatus(@RequestBody @Valid ChangeStatusRequest request) { + return ApiResult.ok(changeRecordService.changeStatus(request)); } From a28acc123bb733dab83390cfddc65617c7515cde Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 17:14:00 +0800 Subject: [PATCH 023/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 11 +++ .../visa/api/req/VisaChangePageSearchReq.java | 75 +++++++++++++++++++ .../visa/api/req/VisaChangeTempCreateReq.java | 12 ++- .../response/VisaChangePageSearchResp.java | 18 +++++ 4 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangePageSearchReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 23870aa4..707b0381 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -3,7 +3,9 @@ package cn.axzo.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.req.VisaChangeApproveCreateReq; import cn.axzo.visa.api.req.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.req.VisaChangePageSearchReq; import cn.axzo.visa.api.req.VisaChangeTempCreateReq; +import cn.axzo.visa.api.response.VisaChangePageSearchResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -44,4 +46,13 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/approveCreate") ApiResult approveCreateVisaChangeRecord(@RequestBody @Validated VisaChangeApproveCreateReq req); + /** + * 分页搜索 + * + * @param req {@link VisaChangePageSearchReq} 筛查条件 + * @return 分页记录 + */ + @PostMapping("/api/visa/change/pageSearch") + ApiResult pageSearchVisaChangeRecord(@RequestBody @Validated VisaChangePageSearchReq req); + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangePageSearchReq.java new file mode 100644 index 00000000..a3f89e17 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangePageSearchReq.java @@ -0,0 +1,75 @@ +package cn.axzo.visa.api.req; + +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 15:46 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangePageSearchReq { + + /** + * 单据类型 + */ + private VisaTypeEnum type; + + /** + * 单号或主题 + *

+ * 单号精确搜索,主题模糊搜索 + *

+ */ + private String keyword; + + /** + * 所属工程 + */ + private Long projectId; + + /** + * 发起人 + */ + private List initiators; + + /** + * 状态 + */ + private List statuses; + + /** + * 变更金额区间 + * 0:最小值 1:最大值 + */ + private List amountChange; + + /** + * 提交时间区间 + * 0:起始时间 1:结束时间 + */ + private List submitDate; + + /** + * 审批完成时间区间 + * 0:起始时间 1:结束时间 + */ + private List approveCompletedDate; + + private Long page; + + private Long pageSize; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java index 6249bfbb..c711ec26 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/req/VisaChangeTempCreateReq.java @@ -1,5 +1,6 @@ package cn.axzo.visa.api.req; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; @@ -61,7 +62,7 @@ public class VisaChangeTempCreateReq { private JSONObject relationArea; /** - * 提交日期 + * 提出日期 */ @NotNull(message = "请选择提交日期") private Date submitDate; @@ -102,9 +103,11 @@ public class VisaChangeTempCreateReq { /** * 关联的单据,key: 单据类型,value: 单据id集合 *

- * TASK :任务单 RECTIFY :整改单 CHANGE:变更单 + * TASK_ORDER :任务单 RECTIFICATION_ORDER :整改单 VISA_ORDER:变更单 * 只有变更签证类型即{@code type}为“技术核定”或“工程签证”时才可能会有关联变更单 *

+ * + * @see VisaRelationFieldEnum */ private Map> relationOrderMap; @@ -114,6 +117,11 @@ public class VisaChangeTempCreateReq { @Size(max = 30, message = "最多支持上传30个附件,已超出请重新选择") private List attach; + /** + * 操作人peronId + */ + private Long operator; + @Data @Builder @NoArgsConstructor diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java new file mode 100644 index 00000000..df80bbed --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java @@ -0,0 +1,18 @@ +package cn.axzo.visa.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 16:29 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangePageSearchResp { +} From 79a98c2e3a579148581ac25d05577699e070f31d Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 17:19:14 +0800 Subject: [PATCH 024/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8C=85=E5=90=8D?= =?UTF-8?q?=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/visa/api/changerecord/ChangeRecordApi.java | 4 +++- .../cn/axzo/visa/api/request/VisaChangePageSearchReq.java | 2 +- .../visa/server/controller/ChangeRecordController.java | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index cc8f737b..2e552988 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -1,11 +1,13 @@ package cn.axzo.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java index a3f89e17..832debab 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.req; +package cn.axzo.visa.api.request; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 84dc4796..aecff546 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -5,8 +5,10 @@ import cn.axzo.visa.api.changerecord.ChangeRecordApi; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; @@ -59,4 +61,9 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { return null; } + + @Override + public ApiResult pageSearchVisaChangeRecord(VisaChangePageSearchReq req) { + return null; + } } From 02861537ebb58cb5efda54e5e22989badf1fb14b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 16 Jan 2025 18:55:20 +0800 Subject: [PATCH 025/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 13 +++- .../visa/api/enums/VisaChangeFieldEnum.java | 44 ++++++++++++ .../visa/api/request/VisaChangeExportReq.java | 31 +++++++++ .../api/request/VisaChangeInitiatorResp.java | 54 +++++++++++++++ .../api/request/VisaChangePageSearchReq.java | 4 +- .../api/request/VisaChangeTempCreateReq.java | 4 +- .../response/VisaChangePageSearchResp.java | 67 +++++++++++++++++++ .../api/response/VisaDetailByIdResponse.java | 4 +- .../controller/ChangeRecordController.java | 9 ++- .../axzo/visa/server/domain/ChangeRecord.java | 6 ++ 10 files changed, 228 insertions(+), 8 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 2e552988..7c61d9dd 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -1,9 +1,11 @@ package cn.axzo.visa.api.changerecord; +import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; @@ -70,6 +72,15 @@ public interface ChangeRecordApi { * @return 分页记录 */ @PostMapping("/api/visa/change/pageSearch") - ApiResult pageSearchVisaChangeRecord(@RequestBody @Validated VisaChangePageSearchReq req); + ApiPageResult pageSearchVisaChangeRecord(@RequestBody @Validated VisaChangePageSearchReq req); + + /** + * 导出 + * + * @param req {@link VisaChangeExportReq} 筛选条件和导出字段 + * @return void + */ + @PostMapping("/api/visa/change/export") + ApiResult exportVisaChangeRecord(@RequestBody VisaChangeExportReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java new file mode 100644 index 00000000..07d7764a --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java @@ -0,0 +1,44 @@ +package cn.axzo.visa.api.enums; + +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 17:10 + */ +@Getter +public enum VisaChangeFieldEnum { + NO("no", "单号"), + TYPE("type", "单据类型"), + STATUS("status", "单据状态"), + TOPIC("topic", "主题"), + AMOUNT_CHANGE("amountChange", "金额变化"), + CREATE_BY("createBy", "发起人"), + CREATE_AT("happenTime", "提出时间"), + APPROVAL_COMPLETE_TIME("approvalCompleteTime", "审批通过时间"), + RELATION_PROJECT("relationProject", "所属工程"), + ; + + private final String value; + + private final String desc; + + VisaChangeFieldEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + public static VisaChangeFieldEnum getByName(String name) { + if (StringUtils.isBlank(name)) { + return null; + } + for (VisaChangeFieldEnum value : values()) { + if (value.value.equals(name)) { + return value; + } + } + return null; + } +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java new file mode 100644 index 00000000..3d1feaa8 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.visa.api.enums.VisaChangeFieldEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 17:38 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeExportReq { + + /** + * 筛选条件 + */ + private VisaChangePageSearchReq filter; + + /** + * 导出字段 + */ + private List fields; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java new file mode 100644 index 00000000..e1a1306b --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java @@ -0,0 +1,54 @@ +package cn.axzo.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/16 18:43 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeInitiatorResp { + + /** + * 发起人personId + */ + private Long personId; + + /** + * 发起人姓名 + */ + private String name; + + /** + * 岗位id + */ + private Long jobId; + + /** + * 岗位名称 + */ + private String jobName; + + /** + * 岗位编码 + */ + private String jobCode; + + /** + * 所属单位id或班组节点id + */ + private Long unitIdOrTeamNodeId; + + /** + * 所属单位名称或班组名称 + */ + private String unitOrTeamName; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java index 832debab..8a2b6b2d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java @@ -57,10 +57,10 @@ public class VisaChangePageSearchReq { private List amountChange; /** - * 提交时间区间 + * 提出时间区间 * 0:起始时间 1:结束时间 */ - private List submitDate; + private List happenTime; /** * 审批完成时间区间 diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index f896535b..69b6b0ca 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -62,10 +62,10 @@ public class VisaChangeTempCreateReq { private JSONObject relationArea; /** - * 提出日期 + * 提出时间 */ @NotNull(message = "请选择提交日期") - private Date submitDate; + private Date happenTime; /** * 专业集合 diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java index df80bbed..e3f5e410 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java @@ -1,10 +1,16 @@ package cn.axzo.visa.api.response; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.visa.api.request.VisaChangeInitiatorResp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; +import java.util.Date; + /** * @author chenwenjian * @version 1.0 @@ -15,4 +21,65 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class VisaChangePageSearchResp { + + private Long id; + + /** + * 单号 + */ + private String no; + + /** + * 主题 + */ + private String topic; + + /** + * 项目 + */ + private Long relationWorkspaceId; + + /** + * 工程 + */ + private Long relationProject; + + /** + * 工程名称 + */ + private String relationProjectName; + + /** + * 提出时间 + */ + private Date happenTime; + + + /** + * 最终审批时间 + */ + private Date approvalCompleteTime; + + /** + * 单据类型 + */ + private VisaTypeEnum type; + + /** + * 状态 + */ + private VisaStatusEnum status; + + /** + * 有符号的变更金额 + */ + private BigDecimal amountChange; + + + /** + * 发起人 + */ + private VisaChangeInitiatorResp initiator; + + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index b0aa9e78..898eb5f3 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -67,9 +67,9 @@ public class VisaDetailByIdResponse { private JSONObject relationArea; /** - * 提交日期 + * 提出时间 */ - private Date submitDate; + private Date happenTime; /** * 专业集合 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index aecff546..b58f6c2e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -1,10 +1,12 @@ package cn.axzo.visa.server.controller; +import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordApi; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; @@ -63,7 +65,12 @@ public class ChangeRecordController implements ChangeRecordApi { } @Override - public ApiResult pageSearchVisaChangeRecord(VisaChangePageSearchReq req) { + public ApiPageResult pageSearchVisaChangeRecord(VisaChangePageSearchReq req) { + return null; + } + + @Override + public ApiResult exportVisaChangeRecord(VisaChangeExportReq req) { return null; } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 56381f85..d2f8e13e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -66,6 +66,12 @@ public class ChangeRecord extends BaseEntity { @TableField(value = "relation_professional", typeHandler = FastjsonTypeHandler.class) private JSONObject relationProfessional; + /** + * 提出时间 + */ + @TableField(value = "happen_time") + private Date happenTime; + /** * 有符号的变更金额 */ From b67950bd813001c83f9763e39dc0410f54066bc2 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 17 Jan 2025 10:18:04 +0800 Subject: [PATCH 026/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20jar=20=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-api/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml index 4f31a062..525d4118 100644 --- a/visa/visa-api/pom.xml +++ b/visa/visa-api/pom.xml @@ -27,6 +27,10 @@ com.alibaba fastjson + + io.github.openfeign + feign-httpclient + From e556fbf701dbc29a87c87d16b20d3d8b8a3d6ac5 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 17 Jan 2025 11:04:17 +0800 Subject: [PATCH 027/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=9A=84=20starter=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/pom.xml | 6 ++++++ visa/visa-server/pom.xml | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/visa/pom.xml b/visa/pom.xml index 850c7b5d..645978ab 100644 --- a/visa/pom.xml +++ b/visa/pom.xml @@ -20,6 +20,7 @@ 2.0.0-SNAPSHOT 1.18.22 1.4.2.Final + 1.5.2-SNAPSHOT @@ -39,6 +40,11 @@ pom import + + cn.axzo.workflow + workflow-engine-spring-boot-starter + ${workflow-engine.version} + diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 849de233..3b1539d9 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -61,6 +61,10 @@ cn.axzo.pokonyan pokonyan + + cn.axzo.workflow + workflow-engine-spring-boot-starter + cn.axzo.nanopart visa-api From e85882aecc50957b9a190b6cfcdd8713836243e3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 17 Jan 2025 16:23:52 +0800 Subject: [PATCH 028/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20MQ=20=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RocketMQEventConfiguration.java | 22 ++++++++ .../ProcessInstanceAllEventHandler.java | 56 +++++++++++++++++++ .../task/ProcessTaskAllEventHandler.java | 45 +++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java index 5d5d3788..a27af970 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java @@ -242,4 +242,26 @@ public class RocketMQEventConfiguration { super.onEvent(message, eventConsumer); } } + + /** + * 变洽签业务消费单据日志 + */ + @Slf4j + @Component + @RocketMQMessageListener(topic = "topic_nanopart_${spring.profiles.active}", + consumerGroup = "GID_visa_change_log_${spring.application.name}_${spring.profiles.active}", + consumeMode = ConsumeMode.ORDERLY, + nameServer = "${rocketmq.name-server}" + ) + public static class VisaChangeLogListener extends BaseListener implements RocketMQListener { + + @Autowired + private EventConsumer eventConsumer; + + @Override + public void onMessage(MessageExt message) { + log.info("VisaChangeLogListener onMessage nanopart, message:{}", JSON.toJSONString(message)); + super.onEvent(message, eventConsumer); + } + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java new file mode 100644 index 00000000..ab6ff533 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -0,0 +1,56 @@ +package cn.axzo.visa.server.mq.listener.workflow.process; + +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; +import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; +import org.springframework.stereotype.Component; + +/** + * 工作流广播的实例维度的所有事件类型 + * + * @author wangli + * @since 2025-01-17 11:35 + */ +@Component +public class ProcessInstanceAllEventHandler implements ProcessInstanceEventHandler { + @Override + public int getOrder() { + return Integer.MIN_VALUE; + } + + @Override + public boolean accept(ProcessInstanceDTO dto, Event event, EventConsumer.Context context) { + return ProcessInstanceEventHandler.super.accept(dto, event, context); + } + + @Override + public void onCreated(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onCreated(dto); + } + + @Override + public void onStarted(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onStarted(dto); + } + + @Override + public void onCompleted(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onCompleted(dto); + } + + @Override + public void onCancelled(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onCancelled(dto); + } + + @Override + public void onRejected(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onRejected(dto); + } + + @Override + public void onAborted(ProcessInstanceDTO dto) { + ProcessInstanceEventHandler.super.onAborted(dto); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java new file mode 100644 index 00000000..9e2f683a --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -0,0 +1,45 @@ +package cn.axzo.visa.server.mq.listener.workflow.task; + +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; +import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; +import io.swagger.models.auth.In; + +/** + * 工作流广播的任务维度的所有事件类型 + * + * @author wangli + * @since 2025-01-17 11:34 + */ +public class ProcessTaskAllEventHandler implements ProcessTaskEventHandler { + @Override + public int getOrder() { + return Integer.MAX_VALUE; + } + + @Override + public boolean accept(ProcessTaskDTO dto, Event event, EventConsumer.Context context) { + return ProcessTaskEventHandler.super.accept(dto, event, context); + } + + @Override + public void onAssigned(ProcessTaskDTO dto) { + ProcessTaskEventHandler.super.onAssigned(dto); + } + + @Override + public void onCreated(ProcessTaskDTO dto) { + ProcessTaskEventHandler.super.onCreated(dto); + } + + @Override + public void onCompleted(ProcessTaskDTO dto) { + ProcessTaskEventHandler.super.onCompleted(dto); + } + + @Override + public void onDeleted(ProcessTaskDTO dto) { + ProcessTaskEventHandler.super.onDeleted(dto); + } +} From 956d6cd06ec418fa0c56d48732c577e9896e305c Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 17 Jan 2025 16:26:32 +0800 Subject: [PATCH 029/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaasCooperateShipCooperateTypeEnum.java | 28 ++++++ .../visa/api/enums/VisaButtonTypeEnum.java | 60 ++++++++++++ .../api/enums/VisaConfirmBizTypeEnum.java | 42 ++++++++ .../axzo/visa/api/enums/VisaStatusEnum.java | 2 + .../server/domain/ChangeRecordConfirm.java | 95 +++++++++++++++++++ .../server/mapper/ChangeRecordConfirmDao.java | 15 +++ .../service/ChangeRecordConfirmService.java | 17 ++++ .../impl/ChangeRecordConfirmServiceImpl.java | 62 ++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 4 + 9 files changed, 325 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java new file mode 100644 index 00000000..66696934 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java @@ -0,0 +1,28 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum SaasCooperateShipCooperateTypeEnum { + + PROJ_PRIMARY_CONTRACTING_UNIT("proj_primary_contracting_unit",1, "施工总承包"), + PROJ_CONSTRUCTION_UNIT("proj_construction_unit", 2, "建设单位"), + PROJ_SUPERVISION_UNIT("proj_supervision_unit", 3, "监理单位"), + PROJ_LABOR_SUBCONTRACTING("proj_labor_subcontracting", 4, "劳务分包"), + PROJ_PROFESSIONAL_SUBCONTRACTING("proj_professional_subcontracting", 5, "专业承包"), + ENT_TEAM("ent_team", 8, "企业内班组"), + PROJ_TEAM("proj_team", 9,"项目内班组"), + ENT_GROUP("ent_group", 10, "企业内小组"), + PROJ_GROUP("proj_group", 11, "项目内小组"), + SURVEY_UNIT("survey_unit", 12, "地勘单位"), + DESIGN_UNIT("design_unit", 13, "设计单位"), + ; + + private final String name; + public final Integer code; + public final String desc; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java index baf9c15d..c5b007c5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -1,8 +1,16 @@ package cn.axzo.visa.api.enums; +import cn.axzo.framework.domain.ServiceException; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import org.springframework.util.CollectionUtils; + +import java.util.Map; +import java.util.Objects; +import java.util.Set; /** * 按钮枚举 @@ -28,4 +36,56 @@ public enum VisaButtonTypeEnum { private String desc; + private static Map> bizTypeBtnMap = Maps.newHashMap(); + + static { + // 发起人不同状态按钮权限 + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE, FORBID)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE)); + + // 决策人不同状态按钮权限 + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE)); + + //[查看洽商记录][打印]按钮是通过OMS统一配置,故此处不处理 + } + + /** + * 根据角色集合与单据状态获取按钮权限 + */ + public static Set fetchBtnSetByBizTypeAndStatus(Set bizTypeSet, VisaStatusEnum status) { + if (CollectionUtils.isEmpty(bizTypeSet) || Objects.isNull(status)) { + return Sets.newHashSet(); + } + Set returnBtnSet = Sets.newHashSet(); + + bizTypeSet.stream() + .filter(item -> Objects.nonNull(item)) + .forEach(item -> { + returnBtnSet.addAll(fetchBtnSetByBizTypeAndStatus(item, status)); + }); + return returnBtnSet; + } + + /** + * 根据角色与单据状态获取按钮权限 + */ + public static Set fetchBtnSetByBizTypeAndStatus(VisaConfirmBizTypeEnum bizTypeSet, VisaStatusEnum status) { + if (Objects.isNull(bizTypeSet) || Objects.isNull(status)) { + return Sets.newHashSet(); + } + switch (bizTypeSet) { + case CREATE: + case CONFIRM: + return bizTypeBtnMap.get(bizTypeSet.name() + status.name()); + default: + throw new ServiceException("单据确认业务类型不匹配"); + } + } + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java new file mode 100644 index 00000000..ee4ed4f5 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java @@ -0,0 +1,42 @@ +package cn.axzo.visa.api.enums; + +import com.google.common.collect.Sets; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Set; + +/** + * 业务类型 + * @author xudawei + * @since 2025-01-17 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaConfirmBizTypeEnum { + + CONFIRM("CONFIRM", "确认"), + CREATE("CREATE", "创建"), + ; + + + private String code; + + private String desc; + + /** + * 确认与创建 + */ + private static Set confirmCreate = Sets.newHashSet(CONFIRM, CREATE); + /** + * 确认 + */ + private static Set confirm = Sets.newHashSet(CONFIRM); + /** + * 创建 + */ + private static Set create = Sets.newHashSet(CREATE); + + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 9965c029..50b6f64e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -27,4 +27,6 @@ public enum VisaStatusEnum { private final String code; private final String desc; private final VisaLogTypeEnum logType; + + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java new file mode 100644 index 00000000..87859ad5 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java @@ -0,0 +1,95 @@ +package cn.axzo.visa.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.visa.api.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录确认 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "visa_change_record_confirm", autoResultMap = true) +public class ChangeRecordConfirm extends BaseEntity { + + /** + * 变更签id + */ + @TableField(value = "visa_id") + private Long visaId; + + /** + * 类型 + */ + @TableField(value = "type") + private SaasCooperateShipCooperateTypeEnum type; + + /** + * 业务类型,CONFIRM:确认;CREATE:创建 + */ + @TableField(value = "biz_type") + private VisaConfirmBizTypeEnum bizType; + + /** + * 确认人 + */ + @TableField(value = "person_id") + private Long personId; + + /** + * 确认单位 + */ + @TableField(value = "ou_id") + private Long ouId; + + /** + * 确认项目 + */ + @TableField(value = "workspace_id") + private Long workspaceId; + + /** + * 确认工程 + */ + @TableField(value = "project_id") + private Long projectId; + + /** + * 确认节点 + */ + @TableField(value = "node_id") + private Long nodeId; + + /** + * 额外信息 + */ + @TableField(value = "extra",typeHandler = FastjsonTypeHandler.class) + private JSONObject extra; + + /** + * 创建人id + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 修改人id + */ + @TableField(value = "update_by") + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java new file mode 100644 index 00000000..0e750000 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.server.mapper; + +import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录确认 + */ +@Mapper +public interface ChangeRecordConfirmDao extends BaseMapper { + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java new file mode 100644 index 00000000..0f78437c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -0,0 +1,17 @@ +package cn.axzo.visa.server.service; + +import cn.axzo.visa.server.domain.ChangeRecordConfirm; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录确认 + */ +public interface ChangeRecordConfirmService { + + /** + * 变更签证确认信息新增 + */ + boolean addConfirm(ChangeRecordConfirm confirm); + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java new file mode 100644 index 00000000..18e1f59c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -0,0 +1,62 @@ +package cn.axzo.visa.server.service.impl; + +import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; +import cn.axzo.visa.server.service.ChangeRecordConfirmService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Sets; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录确认 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { + + + public boolean addConfirm(ChangeRecordConfirm confirm) { + return this.saveOrUpdate(confirm); + } + + /** + * 获取按钮集合 + * 确认人与发起人的不同的单据状态,按钮列表不相同 + */ + public Set fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, Long projectId, VisaStatusEnum status) { + Set bizTypes = fetchBizTypesByCondition(visaId, personId, ouId, workspaceId, projectId); + return VisaButtonTypeEnum.fetchBtnSetByBizTypeAndStatus(bizTypes, status); + } + + /** + * 获取单据确认枚举 + */ + private Set fetchBizTypesByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, Long projectId) { + List list = this.lambdaQuery().eq(ChangeRecordConfirm::getVisaId, visaId) + .eq(ChangeRecordConfirm::getPersonId, personId) + .eq(ChangeRecordConfirm::getOuId, ouId) + .eq(ChangeRecordConfirm::getWorkspaceId, workspaceId) + .eq(ChangeRecordConfirm::getProjectId, projectId) + .eq(ChangeRecordConfirm::getIsDelete, 0) + .list(); + if (CollectionUtils.isEmpty(list)) { + return Sets.newHashSet(); + } + return list.stream().map(item -> item.getBizType()).collect(Collectors.toSet()); + + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 7234916e..de83ebf2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -32,6 +32,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 17 Jan 2025 18:04:50 +0800 Subject: [PATCH 030/341] =?UTF-8?q?feat(REQ-3300):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E3=80=81=E5=8D=95=E6=8D=AE=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 13 ++++- .../request/VisaChangeDiscussCreateReq.java | 43 +++++++++++++++ .../api/request/VisaChangePageSearchReq.java | 7 +++ .../api/request/VisaChangeTempCreateReq.java | 11 +--- .../visa/api/request/VisaRecordSelectReq.java | 55 +++++++++++++++++++ .../VisaChangeInitiatorResp.java | 7 ++- .../response/VisaChangePageSearchResp.java | 28 +++++++++- .../controller/ChangeRecordController.java | 7 +++ 8 files changed, 160 insertions(+), 11 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java rename visa/visa-api/src/main/java/cn/axzo/visa/api/{request => response}/VisaChangeInitiatorResp.java (88%) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index 7c61d9dd..cfe8837c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -9,6 +9,7 @@ import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.request.VisaRecordSelectReq; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import org.springframework.cloud.openfeign.FeignClient; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; +import java.util.List; /** * @author xudawei @@ -81,6 +83,15 @@ public interface ChangeRecordApi { * @return void */ @PostMapping("/api/visa/change/export") - ApiResult exportVisaChangeRecord(@RequestBody VisaChangeExportReq req); + ApiResult exportVisaChangeRecord(@RequestBody @Validated VisaChangeExportReq req); + + /** + * 变更单选择器 + * + * @param req {@link VisaRecordSelectReq} 筛选条件 + * @return 变更单列表 + */ + @PostMapping("/api/visa/change/record/select") + ApiResult> selectVisaChangeRecord(@RequestBody @Validated VisaRecordSelectReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java index 8b81d988..3bb0827f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java @@ -1,10 +1,14 @@ package cn.axzo.visa.api.request; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.List; + /** * @author chenwenjian * @version 1.0 @@ -15,4 +19,43 @@ import lombok.experimental.SuperBuilder; @SuperBuilder @NoArgsConstructor public class VisaChangeDiscussCreateReq extends VisaChangeTempCreateReq { + + /** + * 群聊人员信息 + */ + private List discussPersonInfoList; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class DiscussPersonInfo { + + /** + * 单位类型 1:施工单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 9:项目内班组 13:设计单位 + * + * @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum + */ + private Integer type; + + /** + * 项目id + */ + private Long workspaceId; + + /** + * 单位id + */ + private Long unitId; + + /** + * 群聊成员personId列表 + */ + private Long personId; + + /** + * 是否群主(即发起人) + */ + private Boolean isAdmin; + } } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java index 8a2b6b2d..fd66060d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java @@ -24,6 +24,13 @@ public class VisaChangePageSearchReq { /** * 单据类型 + *

+ * DESIGN_CHANGE:设计变更 + * TECHNOLOGY_APPROVED:技术核定 + * PROJECT_VISA:工程签证 + *

+ * + * @see VisaTypeEnum */ private VisaTypeEnum type; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index 69b6b0ca..d3b4ed41 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -135,19 +135,14 @@ public class VisaChangeTempCreateReq { private Integer type; /** - * 单位id + * 单位id或班组节点id,{@code type}为项目内班组时作为班组节点id使用 */ - private Long unitId; - - /** - * 班组节点id,{@code type}为项目内班组时使用 - */ - private Long teamNodeId; + private Long unitIdOrTeamNodeId; /** * 确认人personId */ - private Long personId; + private List personId; } @Data diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java new file mode 100644 index 00000000..f7929023 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java @@ -0,0 +1,55 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/17 16:55 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaRecordSelectReq { + + + /** + * 单据类型 + *

+ * DESIGN_CHANGE:设计变更 + * TECHNOLOGY_APPROVED:技术核定 + * PROJECT_VISA:工程签证 + *

+ * + * @see VisaTypeEnum + */ + private VisaTypeEnum type; + + /** + * 单号或主题 + *

+ * 单号精确搜索,主题模糊搜索 + *

+ */ + private String keyword; + + + /** + * 发起人 + */ + private List initiators; + + /** + * 状态 + */ + private List statuses; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java similarity index 88% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java rename to visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java index e1a1306b..6fd65ad6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeInitiatorResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.visa.api.response; import lombok.AllArgsConstructor; import lombok.Builder; @@ -26,6 +26,11 @@ public class VisaChangeInitiatorResp { */ private String name; + /** + * 发起人头像 + */ + private String avatar; + /** * 岗位id */ diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java index e3f5e410..b665e31b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java @@ -2,7 +2,6 @@ package cn.axzo.visa.api.response; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; -import cn.axzo.visa.api.request.VisaChangeInitiatorResp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -62,14 +61,41 @@ public class VisaChangePageSearchResp { /** * 单据类型 + *

+ * DESIGN_CHANGE: 设计变更 + * TECHNOLOGY_APPROVED: 技术核定 + * PROJECT_VISA: 工程签证 + *

+ * + * @see VisaTypeEnum */ private VisaTypeEnum type; + /** + * 单据类型描述 + */ + private String typeDesc; + /** * 状态 + *

+ * TO_REPORT: 待提报 + * DECIDING: 决策中 + * EXECUTING: 执行中 + * APPROVING: 审批中 + * COMPLETED: 已完成 + * FORBIDED: 已废除 + *

+ * + * @see VisaStatusEnum */ private VisaStatusEnum status; + /** + * 状态描述 + */ + private String statusDesc; + /** * 有符号的变更金额 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index b58f6c2e..af4a41f8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -10,6 +10,7 @@ import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.request.VisaRecordSelectReq; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.service.ChangeRecordService; @@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.List; /** * @author xudawei @@ -73,4 +75,9 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult exportVisaChangeRecord(VisaChangeExportReq req) { return null; } + + @Override + public ApiResult> selectVisaChangeRecord(VisaRecordSelectReq req) { + return null; + } } From 60540c23b3a07f74ae8af6b8b9f9409e30c7f1de Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 17 Jan 2025 18:11:38 +0800 Subject: [PATCH 031/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-api/pom.xml | 5 + .../SaasCooperateShipCooperateTypeEnum.java | 28 ------ .../api/request/VisaChangeTempCreateReq.java | 9 +- .../api/response/VisaDetailByIdResponse.java | 91 +++++++++++++------ visa/visa-server/pom.xml | 9 ++ .../axzo/visa/server/domain/ChangeRecord.java | 2 + .../server/domain/ChangeRecordConfirm.java | 2 +- .../axzo/visa/server/dto/VisaConfirmDto.java | 63 +++++++++++++ .../visa/server/gateway/ProfileGateway.java | 63 +++++++++++++ .../service/ChangeRecordConfirmService.java | 23 ++++- .../server/service/ChangeRecordService.java | 8 ++ .../impl/ChangeRecordConfirmServiceImpl.java | 68 ++++++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 47 ++++++++++ 13 files changed, 350 insertions(+), 68 deletions(-) delete mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml index 525d4118..3a38bdf0 100644 --- a/visa/visa-api/pom.xml +++ b/visa/visa-api/pom.xml @@ -31,6 +31,11 @@ io.github.openfeign feign-httpclient
+ + cn.axzo.maokai + maokai-common + ${project.version} + diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java deleted file mode 100644 index 66696934..00000000 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/SaasCooperateShipCooperateTypeEnum.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.axzo.visa.api.enums; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public enum SaasCooperateShipCooperateTypeEnum { - - PROJ_PRIMARY_CONTRACTING_UNIT("proj_primary_contracting_unit",1, "施工总承包"), - PROJ_CONSTRUCTION_UNIT("proj_construction_unit", 2, "建设单位"), - PROJ_SUPERVISION_UNIT("proj_supervision_unit", 3, "监理单位"), - PROJ_LABOR_SUBCONTRACTING("proj_labor_subcontracting", 4, "劳务分包"), - PROJ_PROFESSIONAL_SUBCONTRACTING("proj_professional_subcontracting", 5, "专业承包"), - ENT_TEAM("ent_team", 8, "企业内班组"), - PROJ_TEAM("proj_team", 9,"项目内班组"), - ENT_GROUP("ent_group", 10, "企业内小组"), - PROJ_GROUP("proj_group", 11, "项目内小组"), - SURVEY_UNIT("survey_unit", 12, "地勘单位"), - DESIGN_UNIT("design_unit", 13, "设计单位"), - ; - - private final String name; - public final Integer code; - public final String desc; - -} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index d3b4ed41..cb36216c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -1,5 +1,6 @@ package cn.axzo.visa.api.request; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; @@ -132,7 +133,12 @@ public class VisaChangeTempCreateReq { * * @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum */ - private Integer type; + private SaasCooperateShipCooperateTypeEnum type; + + /** + * 单位id + */ + private Long ouId; /** * 单位id或班组节点id,{@code type}为项目内班组时作为班组节点id使用 @@ -143,6 +149,7 @@ public class VisaChangeTempCreateReq { * 确认人personId */ private List personId; + } @Data diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index 898eb5f3..fd9ed984 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -1,5 +1,6 @@ package cn.axzo.visa.api.response; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; @@ -36,6 +37,36 @@ public class VisaDetailByIdResponse { */ private String no; + /** + * 单据类型 + */ + private VisaTypeEnum type; + + /** + * 发生原因 + */ + private String reason; + + /** + * 发起人姓名 + */ + private String createName; + + /** + * 发起人Id + */ + private Long createBy; + + /** + * 所属工程 + */ + private Long relationProject; + + /** + * 所属工程名称 + */ + private String relationProjectName; + /** * 主题 */ @@ -51,16 +82,6 @@ public class VisaDetailByIdResponse { */ private String relationWorkspaceName; - /** - * 工程 - */ - private Long relationProject; - - /** - * 工程名称 - */ - private String relationProjectName; - /** * 区域集合 */ @@ -69,27 +90,23 @@ public class VisaDetailByIdResponse { /** * 提出时间 */ - private Date happenTime; + private String happenTime; + + + /** + * 最终审批时间 + */ + private String approvalCompleteTime; /** * 专业集合 */ private JSONObject relationProfessional; - /** - * 发生原因 - */ - private String reason; - - /** - * 单据类型 - */ - private VisaTypeEnum type; - /** * 相关单位及人员 */ - private List relationUnitAndPersonList; + private Map> relationUnitAndPersonMap; /** * 发生内容说明 @@ -120,25 +137,47 @@ public class VisaDetailByIdResponse { */ private List btnList; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationUnit { + /** + * 类型 + */ + private SaasCooperateShipCooperateTypeEnum type; + + /** + * 单位id + */ + private Long ouId; + + /** + * 单位名称 + */ + private String ouName; + } + @Data @Builder @NoArgsConstructor @AllArgsConstructor public static class RelationUnitAndPerson { /** - * 单位类型 1:施工单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 9:项目内班组 13:设计单位 + * 类型 */ - private Integer type; + private SaasCooperateShipCooperateTypeEnum type; /** * 单位id */ - private Long unitId; + private Long ouId; /** * 单位名称 */ - private String unitName; + private String ouName; /** * 确认人名称 diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 3b1539d9..b488c65b 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -70,5 +70,14 @@ visa-api ${project.version} + + cn.axzo.basics + basics-profiles-api + + + cn.axzo.maokai + maokai-common + ${project.version} + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index d2f8e13e..60db2945 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -26,6 +27,7 @@ import java.util.Date; @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor +@Builder @TableName(value = "visa_change_record", autoResultMap = true) public class ChangeRecord extends BaseEntity { diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java index 87859ad5..bf91cd4a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java @@ -1,7 +1,7 @@ package cn.axzo.visa.server.domain; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; -import cn.axzo.visa.api.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java new file mode 100644 index 00000000..efc024a6 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java @@ -0,0 +1,63 @@ +package cn.axzo.visa.server.dto; + +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/17 + * @desc 变更签证记录确认 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VisaConfirmDto { + + /** + * 变更签id + */ + private Long visaId; + + /** + * 类型 + */ + private SaasCooperateShipCooperateTypeEnum type; + + /** + * 业务类型,CONFIRM:确认;CREATE:创建 + */ + private VisaConfirmBizTypeEnum bizType; + + /** + * 确认人 + */ + private Long personId; + + /** + * 确认单位 + */ + private Long ouId; + + /** + * 确认项目 + */ + private Long workspaceId; + + /** + * 确认工程 + */ + private Long projectId; + + /** + * 确认节点 + */ + private Long nodeId; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java new file mode 100644 index 00000000..80dc449e --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java @@ -0,0 +1,63 @@ +package cn.axzo.visa.server.gateway; + +import cn.axzo.basics.profiles.api.UserProfileServiceApi; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.azxo.framework.common.logger.MethodAroundLog; +import cn.azxo.framework.common.model.CommonResponse; +import cn.hutool.core.collection.CollectionUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2024/4/17 19:39 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProfileGateway { + + private final UserProfileServiceApi userProfileServiceApi; + + /** + * 通过personId获取用户档案 + * + * @param personId + * @return + */ + @MethodAroundLog(target = "pudge", source = "nanopart", value = "获取用户档案") + public PersonProfileDto getProfile(Long personId) { + if (Objects.isNull(personId)) { + return null; + } + CommonResponse personProfile = userProfileServiceApi.getPersonProfile(personId); + if (Objects.nonNull(personProfile) && personProfile.getCode() == 200) { + return personProfile.getData(); + } + return null; + } + + /** + * 通过personId获取用户档案 + * + * @param personIds + * @return + */ + @MethodAroundLog(target = "pudge", source = "nanopart", value = "获取用户档案") + public List getProfiles(List personIds) { + if (CollectionUtil.isEmpty(personIds)) { + return Collections.emptyList(); + } + CommonResponse> personProfiles = userProfileServiceApi.getPersonProfiles(personIds); + if (Objects.nonNull(personProfiles) && personProfiles.getCode() == 200) { + return personProfiles.getData(); + } + return Collections.emptyList(); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index 0f78437c..e8853558 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -1,6 +1,8 @@ package cn.axzo.visa.server.service; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.visa.server.dto.VisaConfirmDto; + +import java.util.List; /** * @author xudawei @@ -10,8 +12,23 @@ import cn.axzo.visa.server.domain.ChangeRecordConfirm; public interface ChangeRecordConfirmService { /** - * 变更签证确认信息新增 + * 新增变更签证确认信息 + * @param dtoList 变更签证确认信息 + * @return true:成功;false:失败 */ - boolean addConfirm(ChangeRecordConfirm confirm); + boolean addConfirm(List dtoList); + + /** + * 更新变更签证确认信息 + * @param visaId 变更签证Id + * @param dtoList 变更签证确认 + * @return true:成功;false:失败 + */ + boolean updateConfirm(Long visaId, List dtoList); + + /** + * 通过变更签证Id,删除变更签证确认信息 + */ + boolean deleteByVisaId(Long visaId); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 4598ea2b..78921041 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.server.domain.ChangeRecord; /** * @author xudawei @@ -14,4 +15,11 @@ public interface ChangeRecordService { */ Boolean changeStatus(ChangeStatusRequest request); + /** + * 通过变更签证Id获取Entity + * @param visaId 变更签证Id + * @return 变更签证Entity + */ + ChangeRecord getById(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 18e1f59c..2cc9212e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -4,16 +4,20 @@ import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.visa.server.service.ChangeRecordConfirmService; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Sets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -27,9 +31,39 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { + /** + * 新增变更签证确认信息 + * @param dtoList 变更签证确认信息 + * @return true:成功;false:失败 + */ + public boolean addConfirm(List dtoList) { + List visaConfirmDtos = BeanUtil.copyToList(dtoList, ChangeRecordConfirm.class); + return this.saveOrUpdateBatch(visaConfirmDtos); + } - public boolean addConfirm(ChangeRecordConfirm confirm) { - return this.saveOrUpdate(confirm); + /** + * 更新变更签证确认信息 + * @param visaId 变更签证Id + * @param dtoList 变更签证确认 + * @return true:成功;false:失败 + */ + public boolean updateConfirm(Long visaId, List dtoList) { + // 删除 + this.deleteByVisaId(visaId); + // 插入 + return this.addConfirm(dtoList); + } + + /** + * 通过变更签证Id,删除变更签证确认信息 + */ + public boolean deleteByVisaId(Long visaId) { + if (Objects.isNull(visaId)) { + return false; + } + return this.lambdaUpdate().eq(ChangeRecordConfirm::getVisaId, visaId) + .eq(ChangeRecordConfirm::getIsDelete, 0) + .setSql("is_delete = id").update(); } /** @@ -45,13 +79,13 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchBizTypesByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, Long projectId) { - List list = this.lambdaQuery().eq(ChangeRecordConfirm::getVisaId, visaId) - .eq(ChangeRecordConfirm::getPersonId, personId) - .eq(ChangeRecordConfirm::getOuId, ouId) - .eq(ChangeRecordConfirm::getWorkspaceId, workspaceId) - .eq(ChangeRecordConfirm::getProjectId, projectId) - .eq(ChangeRecordConfirm::getIsDelete, 0) - .list(); + VisaConfirmDto dto = VisaConfirmDto.builder() + .visaId(visaId) + .personId(personId) + .ouId(ouId) + .workspaceId(workspaceId) + .projectId(projectId).build(); + List list = this.findByCondition(dto); if (CollectionUtils.isEmpty(list)) { return Sets.newHashSet(); } @@ -59,4 +93,20 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl findByCondition(VisaConfirmDto dto) { + if (Objects.isNull(dto) || Objects.isNull(dto.getVisaId())) { + return Lists.newArrayList(); + } + return this.lambdaQuery().eq(ChangeRecordConfirm::getVisaId, dto.getVisaId()) + .eq(ChangeRecordConfirm::getPersonId, dto.getPersonId()) + .eq(ChangeRecordConfirm::getOuId, dto.getOuId()) + .eq(ChangeRecordConfirm::getWorkspaceId, dto.getWorkspaceId()) + .eq(ChangeRecordConfirm::getProjectId, dto.getProjectId()) + .eq(ChangeRecordConfirm::getIsDelete, 0) + .list(); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index de83ebf2..cc6b0460 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,14 +1,18 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.domain.ServiceException; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.gateway.ProfileGateway; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordService; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -32,6 +36,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 17 Jan 2025 18:55:01 +0800 Subject: [PATCH 032/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/response/VisaDetailByIdResponse.java | 12 +++++++++++- .../server/controller/ChangeRecordController.java | 2 +- .../visa/server/service/ChangeRecordService.java | 8 ++++++++ .../service/impl/ChangeRecordServiceImpl.java | 14 ++++++++++---- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index fd9ed984..3d30fa91 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -116,7 +116,7 @@ public class VisaDetailByIdResponse { /** * 有符号的变更金额 */ - private BigDecimal amountChange; + private String amountChange; /** * 关联的单据,key: 单据类型,value: 单据id集合 @@ -188,6 +188,16 @@ public class VisaDetailByIdResponse { * 确认人personId */ private Long personId; + + /** + * 项目Id + */ + private Long workspaceId; + + /** + * 工程Id + */ + private Long projectId; } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index af4a41f8..889fce55 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -63,7 +63,7 @@ public class ChangeRecordController implements ChangeRecordApi { * 变签详情 */ public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { - return null; + return ApiResult.ok(changeRecordService.detailById(request.getVisaId())); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 78921041..2feba4b9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; /** @@ -22,4 +23,11 @@ public interface ChangeRecordService { */ ChangeRecord getById(Long visaId); + /** + * 变更签证详情 + * @param visaId 变更签证Id + * @return 变更签证详情 + */ + VisaDetailByIdResponse detailById(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index cc6b0460..be423497 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -160,6 +160,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 17 Jan 2025 19:03:05 +0800 Subject: [PATCH 033/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=90=8D=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index cb36216c..ef954b36 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -160,7 +160,7 @@ public class VisaChangeTempCreateReq { /** * 内容类型,1:图片 2:图纸批注 */ - private Integer Type; + private Integer type; /** * 图片或图纸 From 9eb76df3d2eb6787a21763a8324e61595fc97133 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 17 Jan 2025 19:04:53 +0800 Subject: [PATCH 034/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E9=9B=86=E6=88=90?= =?UTF-8?q?=20MQ=EF=BC=8C=E5=85=BC=E5=AE=B9=E6=B5=81=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E5=B9=BF=E6=92=AD=EF=BC=8C=E5=B9=B6=E5=8F=91=E9=80=81=E5=8F=98?= =?UTF-8?q?=E6=B4=BD=E7=AD=BE=E5=8D=95=E6=8D=AE=E6=97=A5=E5=BF=97=20MQ=20?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-api/pom.xml | 4 ++ .../cn/axzo/visa/api/enums/MQEventEnum.java | 36 +++++++++++++ visa/visa-server/pom.xml | 4 ++ .../visa/server/domain/ChangeRecordLog.java | 8 ++- .../ProcessInstanceAllEventHandler.java | 47 +++++++++++++--- .../task/ProcessTaskAllEventHandler.java | 5 -- .../mq/producer/VisaChangeLogPayload.java | 54 +++++++++++++++++++ .../mq/producer/VisaChangeLogProducer.java | 15 ++++++ .../rpc/OrganizationalNodeUserGateway.java | 31 +++++++++++ 9 files changed, 191 insertions(+), 13 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml index 3a38bdf0..4159bd07 100644 --- a/visa/visa-api/pom.xml +++ b/visa/visa-api/pom.xml @@ -22,6 +22,10 @@ cn.axzo.framework axzo-common-domain + + + cn.axzo.framework.rocketmq + axzo-common-rocketmq com.alibaba diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java new file mode 100644 index 00000000..b66dd93b --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java @@ -0,0 +1,36 @@ +package cn.axzo.visa.api.enums; + +import cn.axzo.framework.rocketmq.Event; +import lombok.Getter; + +import java.util.Arrays; + +/** + * @Author zr + * @Date 2024/3/19 18:01 + * @Description + **/ +@Getter +public enum MQEventEnum { + + VISA_CHANGE_LOG("nanopart", "visa-change-log", "变洽签单据日志") + ; + private final String model; + private final String tag; + private final String desc; + private final Event.EventCode eventCode; + + MQEventEnum(String model, String tag, String desc) { + this.eventCode = Event.EventCode.builder() + .module(model) + .name(tag) + .build(); + this.model = model; + this.tag = tag; + this.desc = desc; + } + + public static MQEventEnum getByName(String name){ + return Arrays.stream(MQEventEnum.values()).filter(item -> item.name().equals(name)).findFirst().orElse(null); + } +} diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index b488c65b..8aab1d04 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -65,6 +65,10 @@ cn.axzo.workflow workflow-engine-spring-boot-starter + + cn.axzo.maokai + maokai-api + cn.axzo.nanopart visa-api diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java index 7565c08f..262070b4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -10,6 +10,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.util.Date; + /** * @author xudawei * @date 2025/01/15 @@ -45,10 +47,14 @@ public class ChangeRecordLog extends BaseEntity { /** * 操作内容 */ - @TableField(value = "content") private String content; + /** + * 操作时间 + */ + @TableField(value = "operation_time") + private Date operationTime; /** * 创建人id */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index ab6ff533..0e83a69f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,10 +1,22 @@ package cn.axzo.visa.server.mq.listener.workflow.process; -import cn.axzo.framework.rocketmq.Event; -import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; +import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; +import com.google.common.collect.Lists; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; /** * 工作流广播的实例维度的所有事件类型 @@ -13,17 +25,16 @@ import org.springframework.stereotype.Component; * @since 2025-01-17 11:35 */ @Component +@AllArgsConstructor public class ProcessInstanceAllEventHandler implements ProcessInstanceEventHandler { + private final EventProducer eventProducer; + private final OrganizationalNodeUserGateway organizationalNodeUserGateway; + @Override public int getOrder() { return Integer.MIN_VALUE; } - @Override - public boolean accept(ProcessInstanceDTO dto, Event event, EventConsumer.Context context) { - return ProcessInstanceEventHandler.super.accept(dto, event, context); - } - @Override public void onCreated(ProcessInstanceDTO dto) { ProcessInstanceEventHandler.super.onCreated(dto); @@ -31,6 +42,28 @@ public class ProcessInstanceAllEventHandler implements ProcessInstanceEventHandl @Override public void onStarted(ProcessInstanceDTO dto) { + BpmnTaskDelegateAssigner initiator = dto.getInitiator(); + // TODO 创建审批时,需要传入单据类型,此处需要使用 + Object visaType = dto.getVariables().getOrDefault("", ""); + + List users = organizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() + .workspaceId(Long.valueOf(initiator.getTenantId())) + .ouId(Long.valueOf(initiator.getOuId())) + .personIds(Lists.newArrayList(Long.valueOf(initiator.getPersonId()))) + .build()); + String userInfo = ""; + if (!CollectionUtils.isEmpty(users)) { + OrgNodeUserBriefInfoResp user = users.get(0); + userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")"; + } + + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(TO_APPRROVE.getTitle(), visaType)) + .content(String.format(TO_APPRROVE.getContent(), userInfo, visaType)) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); ProcessInstanceEventHandler.super.onStarted(dto); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 9e2f683a..1f043966 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -18,11 +18,6 @@ public class ProcessTaskAllEventHandler implements ProcessTaskEventHandler { return Integer.MAX_VALUE; } - @Override - public boolean accept(ProcessTaskDTO dto, Event event, EventConsumer.Context context) { - return ProcessTaskEventHandler.super.accept(dto, event, context); - } - @Override public void onAssigned(ProcessTaskDTO dto) { ProcessTaskEventHandler.super.onAssigned(dto); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java new file mode 100644 index 00000000..7db65c7c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java @@ -0,0 +1,54 @@ +package cn.axzo.visa.server.mq.producer; + +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.visa.api.enums.MQEventEnum; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * 变洽签单据日志 MQ Payload + * + * @author wangli + * @since 2025-01-17 16:34 + */ +@Slf4j +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +public class VisaChangeLogPayload implements Serializable { + private Long visaId; + private String action; + private String title; + private String content; + private Date operateTime; + private Long personId; + + public static Event form(ChangeRecordLog log) { + VisaChangeLogPayload payload = VisaChangeLogPayload.builder() + .visaId(log.getVisaId()) + .action(log.getAction()) + .title(log.getTitle()) + .content(log.getContent()) + .operateTime(log.getOperationTime()) + .personId(log.getCreateBy()) + .build(); + return Event.builder() + .eventCode(MQEventEnum.VISA_CHANGE_LOG.getEventCode()) + .shardingKey(String.valueOf(payload.getVisaId())) + .targetId(String.valueOf(payload.getVisaId())) + .targetType(log.getAction()) + .data(payload) + .build(); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java new file mode 100644 index 00000000..97899dc7 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java @@ -0,0 +1,15 @@ +package cn.axzo.visa.server.mq.producer; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 变洽签单据日志 MQ 生产者 + * + * @author wangli + * @since 2025-01-17 16:33 + */ +@Component +@Slf4j +public class VisaChangeLogProducer { +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java new file mode 100644 index 00000000..0c4f339b --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.maokai.api.client.OrganizationalNodeUserQueryApi; +import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.pokonyan.util.RpcUtil; +import cn.azxo.framework.common.logger.MethodAroundLog; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2024/4/8 20:40 + */ +@Service +@RequiredArgsConstructor +public class OrganizationalNodeUserGateway { + + private final OrganizationalNodeUserQueryApi organizationalNodeUserQueryApi; + + @MethodAroundLog(target = "maokai", source = "nanopart", value = "获取用户列表") + public List listOrgNodeUsers(OrgNodeUserBriefInfoListReq req) { + return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserQueryApi.listOrgNodeUsers(req), "获取用户列表", req); + } + +} From e40c0b27e4b68efa4a33161ca915a0949ade70b9 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 20 Jan 2025 10:48:49 +0800 Subject: [PATCH 035/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=B7=B2=E6=9C=89=E7=9A=84=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8F=98=E6=9B=B4=E5=8D=95=E6=8D=AE=E6=97=A5=E5=BF=97?= =?UTF-8?q?=20MQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/workflow/BasicLogSupport.java | 48 +++++++++++++ .../ProcessInstanceAllEventHandler.java | 69 ++++++++++++------- .../task/ProcessTaskAllEventHandler.java | 41 +++++++++-- 3 files changed, 128 insertions(+), 30 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java new file mode 100644 index 00000000..7652d333 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java @@ -0,0 +1,48 @@ +package cn.axzo.visa.server.mq.listener.workflow; + +import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import com.google.common.collect.Lists; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Objects; + +/** + * @author wangli + * @since 2025-01-20 10:18 + */ +public abstract class BasicLogSupport { + private final EventProducer eventProducer; + protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + + protected BasicLogSupport(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { + this.eventProducer = eventProducer; + this.organizationalNodeUserGateway = organizationalNodeUserGateway; + } + + protected String buildLogUserInfo(BpmnTaskDelegateAssigner assigner) { + OrgNodeUserBriefInfoResp oneUserInfo = getOneUserInfo(assigner); + return buildLogUserInfo(oneUserInfo); + } + protected String buildLogUserInfo(OrgNodeUserBriefInfoResp user) { + String userInfo = ""; + if (Objects.nonNull(user)) { + userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")"; + } + return userInfo; + } + + protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) { + List users = organizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() + .workspaceId(Long.valueOf(assigner.getTenantId())) + .ouId(Long.valueOf(assigner.getOuId())) + .personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId()))) + .build()); + return CollectionUtils.isEmpty(users) ? null : users.get(0); + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 0e83a69f..a988be12 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,21 +1,19 @@ package cn.axzo.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; -import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; -import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; -import com.google.common.collect.Lists; -import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.annotation.Resource; +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; /** @@ -25,10 +23,15 @@ import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; * @since 2025-01-17 11:35 */ @Component -@AllArgsConstructor -public class ProcessInstanceAllEventHandler implements ProcessInstanceEventHandler { +public class ProcessInstanceAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler { private final EventProducer eventProducer; - private final OrganizationalNodeUserGateway organizationalNodeUserGateway; + protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + + public ProcessInstanceAllEventHandler(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { + super(eventProducer, organizationalNodeUserGateway); + this.eventProducer = eventProducer; + this.organizationalNodeUserGateway = organizationalNodeUserGateway; + } @Override public int getOrder() { @@ -46,40 +49,56 @@ public class ProcessInstanceAllEventHandler implements ProcessInstanceEventHandl // TODO 创建审批时,需要传入单据类型,此处需要使用 Object visaType = dto.getVariables().getOrDefault("", ""); - List users = organizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() - .workspaceId(Long.valueOf(initiator.getTenantId())) - .ouId(Long.valueOf(initiator.getOuId())) - .personIds(Lists.newArrayList(Long.valueOf(initiator.getPersonId()))) - .build()); - String userInfo = ""; - if (!CollectionUtils.isEmpty(users)) { - OrgNodeUserBriefInfoResp user = users.get(0); - userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")"; - } - ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) .title(String.format(TO_APPRROVE.getTitle(), visaType)) - .content(String.format(TO_APPRROVE.getContent(), userInfo, visaType)) + .content(String.format(TO_APPRROVE.getContent(), buildLogUserInfo(initiator), visaType)) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); - ProcessInstanceEventHandler.super.onStarted(dto); } + + @Override public void onCompleted(ProcessInstanceDTO dto) { - ProcessInstanceEventHandler.super.onCompleted(dto); + // TODO 创建审批时,需要传入单据类型,此处需要使用 + Object visaType = dto.getVariables().getOrDefault("", ""); + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(APPROVE_COMPLETED.getTitle(), visaType)) + .content(String.format(APPROVE_COMPLETED.getContent(), visaType)) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); } + /** + * 流程撤回 + * @param dto + */ @Override public void onCancelled(ProcessInstanceDTO dto) { - ProcessInstanceEventHandler.super.onCancelled(dto); + BpmnTaskDelegateAssigner initiator = dto.getInitiator(); + // TODO 创建审批时,需要传入单据类型,此处需要使用 + Object visaType = dto.getVariables().getOrDefault("", ""); + + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(REVERT_APPROVE.getTitle(), visaType)) + .content(String.format(REVERT_APPROVE.getContent(), buildLogUserInfo(initiator))) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); } + /** + * 流程驳回 + * @param dto + */ @Override public void onRejected(ProcessInstanceDTO dto) { - ProcessInstanceEventHandler.super.onRejected(dto); + // TODO 缺少操作人信息 } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 1f043966..73b37945 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -1,10 +1,18 @@ package cn.axzo.visa.server.mq.listener.workflow.task; -import cn.axzo.framework.rocketmq.Event; -import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.mq.listener.workflow.BasicLogSupport; +import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; +import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; -import io.swagger.models.auth.In; +import org.springframework.stereotype.Component; + +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; /** * 工作流广播的任务维度的所有事件类型 @@ -12,7 +20,17 @@ import io.swagger.models.auth.In; * @author wangli * @since 2025-01-17 11:34 */ -public class ProcessTaskAllEventHandler implements ProcessTaskEventHandler { +@Component +public class ProcessTaskAllEventHandler extends BasicLogSupport implements ProcessTaskEventHandler { + private final EventProducer eventProducer; + protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + + public ProcessTaskAllEventHandler(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { + super(eventProducer, organizationalNodeUserGateway); + this.eventProducer = eventProducer; + this.organizationalNodeUserGateway = organizationalNodeUserGateway; + } + @Override public int getOrder() { return Integer.MAX_VALUE; @@ -28,9 +46,22 @@ public class ProcessTaskAllEventHandler implements ProcessTaskEventHandler { ProcessTaskEventHandler.super.onCreated(dto); } + /** + * 任务通过 + * + * @param dto + */ @Override public void onCompleted(ProcessTaskDTO dto) { - ProcessTaskEventHandler.super.onCompleted(dto); + OrgNodeUserBriefInfoResp user = getOneUserInfo(dto.getApprover()); + + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(APPROVED_AGRESS.getTitle(), user.getRealName())) + .content(String.format(APPROVED_AGRESS.getContent(), buildLogUserInfo(user))) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); } @Override From 496e5a4cb1a8d01c0e6234d20831e60421371a24 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 20 Jan 2025 15:50:31 +0800 Subject: [PATCH 036/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=B7=B2=E6=9C=89=E7=9A=84=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8F=98=E6=9B=B4=E5=8D=95=E6=8D=AE=E6=97=A5=E5=BF=97?= =?UTF-8?q?=20MQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessInstanceAllEventHandler.java | 15 +++++++++++---- .../task/ProcessTaskAllEventHandler.java | 17 +++++++++++++++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index a988be12..cec33695 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -10,9 +10,8 @@ import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; @@ -59,7 +58,6 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P } - @Override public void onCompleted(ProcessInstanceDTO dto) { // TODO 创建审批时,需要传入单据类型,此处需要使用 @@ -75,6 +73,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P /** * 流程撤回 + * * @param dto */ @Override @@ -94,11 +93,19 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P /** * 流程驳回 + * * @param dto */ @Override public void onRejected(ProcessInstanceDTO dto) { - // TODO 缺少操作人信息 + BpmnTaskDelegateAssigner lastOperationAssigner = dto.getLastOperationAssigner(); + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(REJECT_APPROVE.getTitle(), lastOperationAssigner.getAssignerName())) + .content(String.format(REJECT_APPROVE.getContent(), buildLogUserInfo(lastOperationAssigner), dto.getReason())) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 73b37945..81539112 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -6,13 +6,12 @@ import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; -import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; import org.springframework.stereotype.Component; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; +import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; /** * 工作流广播的任务维度的所有事件类型 @@ -68,4 +67,18 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce public void onDeleted(ProcessTaskDTO dto) { ProcessTaskEventHandler.super.onDeleted(dto); } + + @Override + public void onTransfer(ProcessTaskDTO dto) { + ChangeRecordLog log = ChangeRecordLog.builder() + .visaId(Long.valueOf(dto.getBusinessKey())) + .action(dto.getType().getTag()) + .title(String.format(TRANSMIT_APPROVE.getTitle())) + .content(String.format(TRANSMIT_APPROVE.getContent(), + buildLogUserInfo(dto.getApprover()), + buildLogUserInfo(dto.getTransferTargetApprover()), + dto.getAdvice())) + .build(); + eventProducer.send(VisaChangeLogPayload.form(log)); + } } From 1f0a41fca8a485ddd70d045f6ab46a42b410e4c3 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 20 Jan 2025 16:07:10 +0800 Subject: [PATCH 037/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/response/VisaDetailByIdResponse.java | 225 +++++++++++++++++- visa/visa-server/pom.xml | 5 + .../visa/server/rpc/DrawingMajorGateway.java | 37 +++ .../{gateway => rpc}/ProfileGateway.java | 2 +- .../service/impl/ChangeRecordServiceImpl.java | 3 +- 5 files changed, 264 insertions(+), 8 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java rename visa/visa-server/src/main/java/cn/axzo/visa/server/{gateway => rpc}/ProfileGateway.java (98%) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index 3d30fa91..74f3785b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -4,13 +4,11 @@ import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -85,7 +83,7 @@ public class VisaDetailByIdResponse { /** * 区域集合 */ - private JSONObject relationArea; + private List relationAreaList; /** * 提出时间 @@ -101,12 +99,12 @@ public class VisaDetailByIdResponse { /** * 专业集合 */ - private JSONObject relationProfessional; + private List relationProfessionalList; /** * 相关单位及人员 */ - private Map> relationUnitAndPersonMap; + private List relationUnitAndPersonList; /** * 发生内容说明 @@ -138,6 +136,37 @@ public class VisaDetailByIdResponse { private List btnList; + /** + * 任务单 + */ + private List relationTaskList; + + /** + * 整改单 + */ + private List relationRectifyList; + + /** + * 变更单 + */ + private List relationVisaList; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationUnitAndPerson { + /** + * 相关单位 + */ + private RelationUnit relationUnit; + + /** + * 相关确认人 + */ + private List relationPersonList; + } + @Data @Builder @NoArgsConstructor @@ -163,7 +192,7 @@ public class VisaDetailByIdResponse { @Builder @NoArgsConstructor @AllArgsConstructor - public static class RelationUnitAndPerson { + public static class RelationPerson { /** * 类型 */ @@ -222,4 +251,188 @@ public class VisaDetailByIdResponse { private String text; } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationProfessionalDetail { + /** + * id + */ + private Long id; + + /** + * code + */ + private String code; + + /** + * 名称 + */ + private String name; + + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationAreaDetail { + /** + * id + */ + private Long id; + + /** + * 名称 + */ + private String name; + + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationRectifyOrder { + + /** + * 整改单id + */ + private Long id; + + /** + * 整改单号 + */ + private String rectifyNo; + + /** + * 名称 + */ + private String name; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 共计天数 + */ + private String totalDays; + + /** + * 发起人 + */ + private String createName; + /** + * 发起人Id + */ + private Long createBy; + /** + * 发起人岗位名称 + */ + private String createJobName; + /** + * 发起人岗位Id + */ + private Long createJobId; + /** + * 发起人单位名称 + */ + private String createOuName; + /** + * 发起人单位Id + */ + private String createOuId; + + /** + * 责任人 + */ + private String rectifierName; + /** + * 责任人Id + */ + private Long rectifier; + /** + * 责任人岗位名称 + */ + private String rectifierJobName; + /** + * 责任人岗位Id + */ + private Long rectifierJobId; + /** + * 责任人单位名称 + */ + private String rectifierOuName; + /** + * 责任人单位Id + */ + private String rectifierOuId; + + /** + * 销项人 + */ + private String verifierName; + /** + * 销项人Id + */ + private Long verifier; + /** + * 销项人岗位名称 + */ + private String verifierJobName; + /** + * 销项人岗位Id + */ + private Long verifierJobId; + /** + * 销项人单位名称 + */ + private String verifierOuName; + /** + * 销项人单位Id + */ + private String verifierOuId; + + + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationVisaDetail { + /** + * 主题 + */ + private String topic; + + /** + * 单号 + */ + private String no; + /** + * 有符号的变更金额 + */ + private String amountChange; + + /** + * 发起人 + */ + private String createName; + + /** + * 提出时间 + */ + private Date happenTime; + + } } diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 8aab1d04..d8aaed9c 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -83,5 +83,10 @@ maokai-common ${project.version} + + cn.axzo + thor-api + 1.0.0-SNAPSHOT + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java new file mode 100644 index 00000000..57640987 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java @@ -0,0 +1,37 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.pokonyan.util.RpcUtil; +import cn.axzo.thor.client.feign.DrawingMajorApi; +import cn.axzo.thor.client.model.DrawingMajorResp; +import cn.axzo.thor.client.model.ListDrawingMajorReq; +import cn.azxo.framework.common.logger.MethodAroundLog; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; + +/** + * @author xudawei@axzo.cn + * @date 2025/01/20 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DrawingMajorGateway { + + private final DrawingMajorApi drawingMajorApi; + /** + * 获取专业 + */ + @MethodAroundLog(target = "thor", source = "nanopart", value = "获取专业") + public List list(Long projectId, Set majorCodes, Boolean includeDrawingType) { + ListDrawingMajorReq req = new ListDrawingMajorReq(); + req.setProjectId(projectId); + req.setMajorCodes(majorCodes); + req.setIncludeDrawingType(includeDrawingType); + return RpcUtil.rpcCommonProcessor(() -> drawingMajorApi.list(req), "drawingMajorApi#list", req); + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java similarity index 98% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java rename to visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java index 80dc449e..7abea7d7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/gateway/ProfileGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.gateway; +package cn.axzo.visa.server.rpc; import cn.axzo.basics.profiles.api.UserProfileServiceApi; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index be423497..cec3dc31 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,7 +8,7 @@ import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.gateway.ProfileGateway; +import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordService; @@ -182,6 +182,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 20 Jan 2025 20:10:12 +0800 Subject: [PATCH 038/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?visa=5Fchange=5Frecord=5Fbill:=E5=8F=98=E6=9B=B4=E7=AD=BE?= =?UTF-8?q?=E8=AF=81=E8=AE=B0=E5=BD=95=E5=8D=95=E6=8D=AE=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/api/enums/VisaBillTypeEnum.java | 26 ++++++ .../api/response/VisaDetailByIdResponse.java | 1 + visa/visa-server/pom.xml | 5 + .../axzo/visa/server/domain/ChangeRecord.java | 3 +- .../visa/server/domain/ChangeRecordBill.java | 71 ++++++++++++++ .../cn/axzo/visa/server/dto/VisaBillDto.java | 61 ++++++++++++ .../server/mapper/ChangeRecordBillDao.java | 16 ++++ .../rpc/ApolloConstructionAreaGateway.java | 37 ++++++++ .../service/ChangeRecordBillService.java | 20 ++++ .../service/ChangeRecordRelationService.java | 4 + .../impl/ChangeRecordBillServiceImpl.java | 92 +++++++++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 54 ++++++++++- 12 files changed, 387 insertions(+), 3 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java new file mode 100644 index 00000000..c1c540cd --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java @@ -0,0 +1,26 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 变更签证单据类型 + * @author xudawei + * @since 2025/01/20 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaBillTypeEnum { + + TASK("task", "任务单"), + RECTIFY("rectify", "整改单"), + VISA("visa", "变更单"), + ; + + + private String code; + + private String desc; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index 74f3785b..d71472e7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -272,6 +272,7 @@ public class VisaDetailByIdResponse { */ private String name; + } @Data diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index d8aaed9c..690c9973 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -88,5 +88,10 @@ thor-api 1.0.0-SNAPSHOT + + cn.axzo.apollo + apollo-api + 2.0.0-SNAPSHOT + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 60db2945..7b245a46 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -3,6 +3,7 @@ package cn.axzo.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -66,7 +67,7 @@ public class ChangeRecord extends BaseEntity { * 专业集合 */ @TableField(value = "relation_professional", typeHandler = FastjsonTypeHandler.class) - private JSONObject relationProfessional; + private JSONArray relationProfessional; /** * 提出时间 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java new file mode 100644 index 00000000..8f981f7b --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java @@ -0,0 +1,71 @@ +package cn.axzo.visa.server.domain; + +import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; +import cn.axzo.visa.api.enums.VisaBillTypeEnum; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/20 + * @desc 变更签证记录单据关系表 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +@TableName(value = "visa_change_record_bill", autoResultMap = true) +public class ChangeRecordBill extends BaseEntity { + + /** + * 变更签证记录id + */ + @TableField(value = "visa_id") + private Long visaId; + + /** + * 单据id + */ + @TableField(value = "bill_id") + private Long billId; + + /** + * 单据编号 + */ + @TableField(value = "bill_no") + private String billNo; + + /** + * 单据类型 + */ + @TableField(value = "bill_type") + private VisaBillTypeEnum billType; + /** + * 额外信息 + */ + @TableField(value = "extra", typeHandler = FastjsonTypeHandler.class) + private JSONObject extra; + + /** + * 创建人id + */ + @TableField(value = "create_by") + private Long createBy; + + /** + * 修改人id + */ + @TableField(value = "updateBy") + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java new file mode 100644 index 00000000..25f56adc --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java @@ -0,0 +1,61 @@ +package cn.axzo.visa.server.dto; + +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/17 + * @desc 变更签证记录确认 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VisaBillDto { + + /** + * 变更签证记录id + */ + private Long visaId; + + /** + * 单据id + */ + private Long billId; + + /** + * 单据编号 + */ + private String billNo; + + /** + * 单据类型 + */ + private VisaBillTypeEnum billType; + /** + * 额外信息 + */ + private JSONObject extra; + + /** + * 创建人id + */ + private Long createBy; + + /** + * 修改人id + */ + private Long updateBy; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java new file mode 100644 index 00000000..096af5b5 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java @@ -0,0 +1,16 @@ +package cn.axzo.visa.server.mapper; + +import cn.axzo.visa.server.domain.ChangeRecordBill; +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录单据关系表 + */ +@Mapper +public interface ChangeRecordBillDao extends BaseMapper { + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java new file mode 100644 index 00000000..0b3a30a2 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java @@ -0,0 +1,37 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.apollo.api.ApolloConstructionAreaApi; +import cn.axzo.apollo.api.res.ConstructionAreaInfo; +import cn.axzo.apollo.core.web.Result; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author xudawei@axzo.cn + * @date 2025/01/20 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ApolloConstructionAreaGateway { + + private final ApolloConstructionAreaApi apolloConstructionAreaApi; + + public List getAllConstructionAreaByIds(List areaIds) { + try { + log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,params:{}", JSON.toJSONString(areaIds)); + Result> result = apolloConstructionAreaApi.getAllConstructionAreaByIds(areaIds); + log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,result:{}", JSON.toJSONString(result)); + return result.getData(); + } catch (Exception e) { + log.warn("ApolloConstructionAreaGateway getAllConstructionAreaByIds exception", e); + throw e; + } + + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java new file mode 100644 index 00000000..3d62110b --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java @@ -0,0 +1,20 @@ +package cn.axzo.visa.server.service; + +import cn.axzo.visa.server.dto.VisaBillDto; + +import java.util.List; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +public interface ChangeRecordBillService { + + + /** + * 新增 + */ + Boolean addBill(List dtoList); + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index 3c0d291f..99ec707e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -6,4 +6,8 @@ package cn.axzo.visa.server.service; * @desc 变更签证记录内容关系表 */ public interface ChangeRecordRelationService { + + + + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java new file mode 100644 index 00000000..4d2b4b84 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -0,0 +1,92 @@ +package cn.axzo.visa.server.service.impl; + +import cn.axzo.visa.server.domain.ChangeRecordBill; +import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.dto.VisaBillDto; +import cn.axzo.visa.server.mapper.ChangeRecordBillDao; +import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; +import cn.axzo.visa.server.service.ChangeRecordBillService; +import cn.axzo.visa.server.service.ChangeRecordRelationService; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/15 + * @desc 变更签证记录内容关系表 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ChangeRecordBillServiceImpl extends ServiceImpl implements ChangeRecordBillService { + + /** + * 新增 + */ + public Boolean addBill(List dtoList) { + List billList = BeanUtil.copyToList(dtoList, ChangeRecordBill.class); + return this.saveOrUpdateBatch(billList); + } + + /** + * 更新 + */ + public Boolean updateBill(Long visaId, List dtoList) { + List billList = BeanUtil.copyToList(dtoList, ChangeRecordBill.class); + // 删除 + this.deleteByVisaId(visaId); + // 插入 + return this.addBill(dtoList); + } + + /** + * 删除 + */ + public Boolean deleteByVisaId(Long visaId) { + if (Objects.isNull(visaId)) { + return false; + } + return this.lambdaUpdate().eq(ChangeRecordBill::getVisaId, visaId) + .eq(ChangeRecordBill::getIsDelete, 0) + .setSql("is_delete = id").update(); + } + /** + * 查询记录 + */ + public List findByCondition(VisaBillDto dto) { + return this.list(buildLambdaQueryWrapper(dto)); + } + + /** + * 查询数量 + */ + public Integer findCountByCondition(VisaBillDto dto) { + return this.count(buildLambdaQueryWrapper(dto)); + } + + /** + * 构建查询条件 + */ + private LambdaQueryWrapper buildLambdaQueryWrapper(VisaBillDto dto) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + return lambdaQueryWrapper + .eq(Objects.nonNull(dto.getVisaId()), ChangeRecordBill::getVisaId, dto.getVisaId()) + .eq(StringUtils.isNotBlank(dto.getBillNo()), ChangeRecordBill::getBillNo, dto.getBillNo()) + .eq(Objects.nonNull(dto.getBillType()), ChangeRecordBill::getBillType, dto.getBillType()) + .eq(Objects.nonNull(dto.getBillId()), ChangeRecordBill::getBillId, dto.getBillId()) + .eq(ChangeRecordBill::getIsDelete, 0) + .orderByDesc(ChangeRecordBill::getUpdateAt); + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index cec3dc31..e7afe616 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,28 +1,37 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; +import cn.axzo.visa.server.rpc.DrawingMajorGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.service.ChangeRecordLogService; +import cn.axzo.visa.server.service.ChangeRecordRelationService; import cn.axzo.visa.server.service.ChangeRecordService; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * @author xudawei @@ -36,9 +45,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildArea(List areaIds) { + if (CollectionUtils.isEmpty(areaIds)) { + return Lists.newArrayList(); + } + List list = apolloConstructionAreaGateway.getAllConstructionAreaByIds(areaIds); + if (CollectionUtils.isEmpty(list)) { + return Lists.newArrayList(); + } + return list.stream().map(item -> VisaDetailByIdResponse.RelationAreaDetail.builder() + .id(item.getId()) + .name(item.getName()).build()) + .collect(Collectors.toList()); + } + + /** + * 构建专业集合 + */ + private List buildProfession(Long projectId, Set majorCodes) { + if (Objects.isNull(projectId) || CollectionUtils.isEmpty(majorCodes)) { + return Lists.newArrayList(); + } + List majorRespList = drawingMajorGateway.list(projectId, majorCodes, true); + if (CollectionUtils.isEmpty(majorCodes)) { + return Lists.newArrayList(); + } + return majorRespList.stream() + .map(item -> VisaDetailByIdResponse.RelationProfessionalDetail.builder().id(item.getId()).code(item.getCode()).name(item.getName()).build()) + .collect(Collectors.toList()); + } + /** * 通过变更签证Id获取Entity * @param visaId 变更签证Id From 88edaaad599a6dfe45214f9a8afd404ca22dd862 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 20 Jan 2025 20:57:39 +0800 Subject: [PATCH 039/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E4=B8=B4=E6=97=B6=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 6 +- .../api/enums/VisaRelationVarTypeEnum.java | 22 ++ .../api/request/VisaChangeTempCreateReq.java | 17 +- .../controller/ChangeRecordController.java | 6 +- .../visa/server/rpc/CooperateShipGateway.java | 34 +++ .../visa/server/rpc/ProjectApiGateway.java | 31 +++ .../service/ChangeRecordRelationService.java | 5 + .../server/service/ChangeRecordService.java | 28 +++ .../impl/ChangeRecordRelationServiceImpl.java | 26 ++- .../service/impl/ChangeRecordServiceImpl.java | 215 +++++++++++++++++- .../cn/axzo/visa/server/utils/RpcUtil.java | 37 +++ 11 files changed, 410 insertions(+), 17 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index cfe8837c..d6b3c78e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -35,7 +35,7 @@ public interface ChangeRecordApi { * @return 签证变更记录id */ @PostMapping("/api/visa/change/tempCreate") - ApiResult tempCreateVisaChangeRecord(@RequestBody @Validated VisaChangeTempCreateReq req); + ApiResult tempCreateVisaChangeRecord(@RequestBody VisaChangeTempCreateReq req); /** * 创建群聊洽商变更签证 @@ -44,7 +44,7 @@ public interface ChangeRecordApi { * @return 签证变更记录id */ @PostMapping("/api/visa/change/discussCreate") - ApiResult discussCreateVisaChangeRecord(@RequestBody @Validated VisaChangeDiscussCreateReq req); + ApiResult discussCreateVisaChangeRecord(@RequestBody VisaChangeDiscussCreateReq req); /** * 发起变更签证审批 @@ -73,7 +73,7 @@ public interface ChangeRecordApi { * @param req {@link VisaChangePageSearchReq} 筛查条件 * @return 分页记录 */ - @PostMapping("/api/visa/change/pageSearch") + @PostMapping("/api/visa/change/page") ApiPageResult pageSearchVisaChangeRecord(@RequestBody @Validated VisaChangePageSearchReq req); /** diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java new file mode 100644 index 00000000..424e0209 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java @@ -0,0 +1,22 @@ +package cn.axzo.visa.api.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/20 16:21 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum VisaRelationVarTypeEnum { + + STRING("string"), + LONG("long"), + JSON("json"); + + private final String type; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index ef954b36..8a93d996 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -35,12 +35,14 @@ public class VisaChangeTempCreateReq { * 单号 */ @NotBlank(message = "请输入单号") + @Size(max = 100, message = "单号长度不能超过100个字符") private String no; /** * 主题 */ @NotBlank(message = "请输入主题") + @Size(max = 100, message = "主题长度不能超过100个字符") private String topic; /** @@ -78,6 +80,7 @@ public class VisaChangeTempCreateReq { * 发生原因 */ @NotBlank(message = "请填写发生原因") + @Size(max = 500, message = "发生原因长度不能超过500个字符") private String reason; /** @@ -118,10 +121,15 @@ public class VisaChangeTempCreateReq { @Size(max = 30, message = "最多支持上传30个附件,已超出请重新选择") private List attach; + private Long operatorOuId; + + private Integer operatorOuType; + /** * 操作人peronId */ - private Long operator; + private Long operatorPersonId; + @Data @Builder @@ -135,15 +143,10 @@ public class VisaChangeTempCreateReq { */ private SaasCooperateShipCooperateTypeEnum type; - /** - * 单位id - */ - private Long ouId; - /** * 单位id或班组节点id,{@code type}为项目内班组时作为班组节点id使用 */ - private Long unitIdOrTeamNodeId; + private Long ouIdOrTeamNodeId; /** * 确认人personId diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 889fce55..dde35920 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -38,17 +38,17 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiResult tempCreateVisaChangeRecord(VisaChangeTempCreateReq req) { - return null; + return ApiResult.ok(changeRecordService.tempCreateVisaChangeRecord(req)); } @Override public ApiResult discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { - return null; + return ApiResult.ok(changeRecordService.discussCreateVisaChangeRecord(req)); } @Override public ApiResult approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) { - return null; + return ApiResult.ok(changeRecordService.approveCreateVisaChangeRecord(req)); } /** * 变签状态变更 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java new file mode 100644 index 00000000..6bdbd159 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java @@ -0,0 +1,34 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.maokai.api.client.CooperateShipQueryApi; +import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; +import cn.axzo.maokai.api.vo.response.CooperateShipResp; +import cn.axzo.visa.server.utils.RpcUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2024/4/9 11:20 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CooperateShipGateway { + + private final CooperateShipQueryApi cooperateShipQueryApi; + + public List genericQuery(CooperateShipQueryReq req) { + if (Objects.isNull(req)) { + return Collections.emptyList(); + } + return RpcUtil.rpcApiListResultProcessor(() -> cooperateShipQueryApi.genericQuery(req), + "协同关系树查询"); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java new file mode 100644 index 00000000..aaf49330 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.apollo.workspace.api.workspace.ProjectApi; +import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; +import cn.axzo.basics.common.util.NumberUtil; +import cn.axzo.visa.server.utils.RpcUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/20 10:36 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProjectApiGateway { + + private final ProjectApi projectApi; + + public ProjectDetailRes getProjectById(Long id) { + if (NumberUtil.isNotPositiveNumber(id)) { + return null; + } + return RpcUtil.rpcResultProcessor(() -> projectApi.getById(id), "getProjectById", id); + } + + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index 3c0d291f..8e36b99a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -1,9 +1,14 @@ package cn.axzo.visa.server.service; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 * @desc 变更签证记录内容关系表 */ public interface ChangeRecordRelationService { + + Long saveAttach(Long visaId, List attach, Long createBy); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 2feba4b9..ce9d0b3f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,6 +1,9 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; @@ -18,6 +21,7 @@ public interface ChangeRecordService { /** * 通过变更签证Id获取Entity + * * @param visaId 变更签证Id * @return 变更签证Entity */ @@ -25,9 +29,33 @@ public interface ChangeRecordService { /** * 变更签证详情 + * * @param visaId 变更签证Id * @return 变更签证详情 */ VisaDetailByIdResponse detailById(Long visaId); + /** + * 创建变更签证 + * + * @param req 表单数据 + * @return 变更签证Id + */ + Long tempCreateVisaChangeRecord(VisaChangeTempCreateReq req); + + /** + * 创建群聊洽商变更签证 + * + * @param req 表单数据 + * @return 变更签证Id + */ + Long discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req); + + /** + * 创建审批变更签证 + * + * @param req 表单数据 + * @return 变更签证Id + */ + Long approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index d414f53a..e0b8dc09 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -1,13 +1,18 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.visa.server.service.ChangeRecordRelationService; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -16,7 +21,26 @@ import org.springframework.stereotype.Service; @Slf4j @Service @RequiredArgsConstructor -public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { +public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { + /** + * 保存附件 + * + * @param visaId 变更签证记录id + * @param attach 附件 + * @param createBy 创建人 + * @return 变更签证记录内容关系表id + */ + Long saveAttach(Long visaId, List attach, Long createBy) { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(visaId); + changeRecordRelation.setVarName(VisaRelationFieldEnum.ATTACHMENT.name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); + changeRecordRelation.setContent(JSONObject.toJSONString(attach)); + changeRecordRelation.setCreateBy(createBy); + changeRecordRelation.setUpdateBy(createBy); + save(changeRecordRelation); + return changeRecordRelation.getId(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index be423497..ff838e90 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,28 +1,51 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; +import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.gateway.ProfileGateway; import cn.axzo.visa.server.mapper.ChangeRecordDao; +import cn.axzo.visa.server.rpc.CooperateShipGateway; +import cn.axzo.visa.server.rpc.ProjectApiGateway; +import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordLogService; +import cn.axzo.visa.server.service.ChangeRecordRelationService; import cn.axzo.visa.server.service.ChangeRecordService; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @author xudawei @@ -31,14 +54,40 @@ import java.util.Objects; */ @Slf4j @Service -public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { +@RefreshScope +public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { @Resource private ChangeRecordLogService changeRecordLogService; + @Resource + private ChangeRecordConfirmService changeRecordConfirmService; + @Resource + private ChangeRecordRelationService changeRecordRelationService; @Resource private ProfileGateway profileGateway; + @Resource + private ProjectApiGateway projectApiGateway; + + @Resource + private CooperateShipGateway cooperateShipGateway; + + /** + * 相关单位确认人人数限制 + */ + @Value("${visa.verifyPersonLimit: 8}") + private Integer verifyPersonLimit; + /** + * 最大变化金额 + */ + private final BigDecimal maxAmount = new BigDecimal("9999999999"); + + /** + * 最小变化金额 + */ + private final BigDecimal minAmount = new BigDecimal("-9999999999"); + /** * 状态变更 */ @@ -114,7 +163,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl confirmPerson = Lists.newArrayList(); + // 发起人 + confirmPerson.add(buildVisaConfirmDto(req, changeRecord)); + // 相关单位与人员 + if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) { + confirmPerson = req.getRelationUnitAndPersonList().stream() + .flatMap(rup -> rup.getPersonId().stream().map(p -> buildVisaConfirmDto(changeRecord, rup, p))) + .collect(Collectors.toList()); + } + changeRecordConfirmService.addConfirm(confirmPerson); + // 保存发生内容及说明 + if (CollectionUtils.isNotEmpty(req.getChangeContextAndDescriptionList())) { + + } + // 保存关联单据 TODO + if (CollUtil.isNotEmpty(req.getRelationOrderMap())) { + + } + // 保存附件 + if (CollectionUtils.isNotEmpty(req.getAttach())) { + changeRecordRelationService.saveAttach(changeRecord.getId(), req.getAttach(), req.getOperatorPersonId()); + } + return null; + } + + private static VisaConfirmDto buildVisaConfirmDto(VisaChangeTempCreateReq req, ChangeRecord changeRecord) { + return VisaConfirmDto.builder() + .visaId(changeRecord.getId()) + .type(SaasCooperateShipCooperateTypeEnum.getByCode(req.getOperatorOuType())) + .bizType(VisaConfirmBizTypeEnum.CREATE) + .personId(req.getOperatorPersonId()) + .ouId(req.getOperatorOuId()) + .workspaceId(req.getRelationWorkspaceId()) + .projectId(req.getRelationProject()) + .build(); + } + + private static VisaConfirmDto buildVisaConfirmDto(ChangeRecord changeRecord, VisaChangeTempCreateReq.RelationUnitAndPerson rup, Long personId) { + return VisaConfirmDto.builder() + .visaId(changeRecord.getId()) + .type(rup.getType()) + .bizType(VisaConfirmBizTypeEnum.CONFIRM) + .personId(personId) + .ouId(!Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, rup.getType()) ? rup.getOuIdOrTeamNodeId() : null) + .workspaceId(changeRecord.getRelationWorkspaceId()) + .projectId(changeRecord.getRelationProject()) + .nodeId(Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, rup.getType()) ? rup.getOuIdOrTeamNodeId() : null) + .build(); + } + + /** + * 创建群聊洽商变更签证 + * + * @param req 表单数据 + * @return 变更签证Id + */ + @Override + public Long discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { + return null; + } + + /** + * 创建审批变更签证 + * + * @param req 表单数据 + * @return 变更签证Id + */ + @Override + public Long approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) { + /*校验*/ + // 单号项目内唯一性 + ChangeRecord visaRecord = getById(req.getNo()); + AssertUtil.isTrue(Objects.isNull(visaRecord) || !Objects.equals(visaRecord.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "已存在相同单号的变更签证单据,请修改"); + // 发生区域存在性 TODO + // 工程存在性 + ProjectDetailRes projectById = projectApiGateway.getProjectById(req.getRelationProject()); + AssertUtil.notNull(projectById, "工程不存在"); + AssertUtil.isTrue(Objects.equals(projectById.getWorkspaceInfo().getWorkspaceId(), req.getRelationWorkspaceId()), "工程所属项目与关联项目不匹配"); + // 提出时间合法性 + Date now = new Date(); + AssertUtil.isTrue(DateUtil.isIn(req.getHappenTime(), DateUtil.offsetDay(now, -30), now), "提出时间不可早于一个月前/晚于当前日期,请重新选择"); + // 发生内容及说明合法性 + if (CollectionUtils.isNotEmpty(req.getChangeContextAndDescriptionList())) { + req.getChangeContextAndDescriptionList().forEach(c -> { + AssertUtil.isTrue(1 == c.getType() || 2 == c.getType(), "请选择发生内容类型"); + AssertUtil.isFalse(!StringUtils.hasText(c.getText()) && !StringUtils.hasText(c.getImgUrl()), "存在为空的发生内容及说明,请填写"); + }); + } + // 相关单位及人员存在性 + if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) { + List team = req.getRelationUnitAndPersonList().stream() + .filter(r -> { + AssertUtil.notNull(r.getType(), "相关单位类型错误"); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuIdOrTeamNodeId()), "请选择" + r.getType().getDesc()); + AssertUtil.notEmpty(r.getPersonId(), "请选择" + r.getType().getDesc() + "确认人"); + AssertUtil.isTrue(r.getPersonId().size() <= verifyPersonLimit, String.format(r.getType().getDesc() + "确认人,最多支持{}个", verifyPersonLimit)); + return Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, r.getType()); + }) + .collect(Collectors.toList()); + List unit = req.getRelationUnitAndPersonList(); + if (CollectionUtils.isNotEmpty(team)) { + // 去除班组 + List teamNodeId = team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).distinct().collect(Collectors.toList()); + unit = unit.stream().filter(o -> !teamNodeId.contains(o.getOuIdOrTeamNodeId())).collect(Collectors.toList()); + } + // TODO 相关单位退场状态校验 +// CooperateShipQueryReq shipQueryReq = CooperateShipQueryReq.builder() +// .workspaceId(req.getRelationWorkspaceId()) +// .workspaceType(WorkspaceTypeEnum.PROJECT.getType()) +// .organizationNodeIds(unit.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).collect(Collectors.toList())) +// .nodeIds(team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).collect(Collectors.toList())) +// .parentNodeIds(unit.stream().map()) +// .build(); +// cooperateShipGateway.genericQuery() + } + // 金额变化合法性 + if (Objects.equals(VisaTypeEnum.PROJECT_VISA, req.getType())) { + AssertUtil.notNull(req.getAmountChange(), "请填写金额变化"); + } + if (Objects.isNull(req.getAmountChange())) { + req.setAmountChange(BigDecimal.ZERO); + } + AssertUtil.isTrue(req.getAmountChange().compareTo(maxAmount) <= 0 && req.getAmountChange().compareTo(minAmount) >= 0, "金额变化超出范围"); + // 关联单据合法性 + if (CollUtil.isNotEmpty(req.getRelationOrderMap())) { + req.getRelationOrderMap().forEach((key, value) -> { + if (Objects.equals(VisaRelationFieldEnum.TASK_ORDER.name(), key)) { + // 任务单 TODO + } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { + // 整改单 TODO + } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { + // 变更单 TODO + } else { + throw new ServiceException("不支持的关联单据类型"); + } + }); + } + /*保存签证信息*/ + /*提交审批*/ + return null; + } + /** * 通过变更签证Id获取Entity + * * @param visaId 变更签证Id * @return 变更签证Entity */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java new file mode 100644 index 00000000..858b599b --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java @@ -0,0 +1,37 @@ +package cn.axzo.visa.server.utils; + +import cn.axzo.apollo.core.web.Result; +import cn.axzo.framework.domain.web.result.ApiListResult; +import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; +import java.util.function.Supplier; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/20 14:52 + */ +@Slf4j +public class RpcUtil extends cn.axzo.pokonyan.util.RpcUtil { + + public static T rpcResultProcessor(Supplier> supplier, String operationType, Object... param) { + log.info(operationType + "-Param: " + JSONUtil.toJsonStr(param)); + Result result = printLatency(supplier, operationType); + log.info(operationType + "-Result: " + JSONUtil.toJsonStr(result)); + Assert.notNull(result, "服务调用异常"); + Assert.isTrue(result.getCode() == 200, "服务调用异常:" + result.getMsg()); + return result.getData(); + } + + public static List rpcApiListResultProcessor(Supplier> supplier, String operationType, Object... param) { + log.info(operationType + "-Param: " + JSONUtil.toJsonStr(param)); + ApiListResult result = printLatency(supplier, operationType); + log.info(operationType + "-Result: " + JSONUtil.toJsonStr(result)); + Assert.notNull(result, "服务调用异常"); + Assert.isTrue(result.getCode() == 200, "服务调用异常:" + result.getMsg()); + return result.getData(); + } +} From 60c05a7d62eac1cb74f4a27bd32233504a2bd669 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 21 Jan 2025 09:41:16 +0800 Subject: [PATCH 040/341] =?UTF-8?q?feat(REQ-3300):=20=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/server/service/ChangeRecordRelationService.java | 2 ++ .../server/service/impl/ChangeRecordRelationServiceImpl.java | 2 +- .../axzo/visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index 0bd391c1..8e36b99a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -1,5 +1,7 @@ package cn.axzo.visa.server.service; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index e0b8dc09..7ea904f9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -31,7 +31,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl attach, Long createBy) { + public Long saveAttach(Long visaId, List attach, Long createBy) { ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); changeRecordRelation.setVisaId(visaId); changeRecordRelation.setVarName(VisaRelationFieldEnum.ATTACHMENT.name()); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 274e9e67..e65d6c1c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -21,11 +21,11 @@ import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.dto.VisaConfirmDto; -import cn.axzo.visa.server.gateway.ProfileGateway; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.visa.server.rpc.CooperateShipGateway; import cn.axzo.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.ProjectApiGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordLogService; From ea096d1f34a3ea9453210efb7ec028e17b61e91b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 21 Jan 2025 13:49:37 +0800 Subject: [PATCH 041/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaRelationFieldEnum.java | 2 +- .../service/ChangeRecordRelationService.java | 6 +- .../impl/ChangeRecordRelationServiceImpl.java | 75 ++++++++++--- .../service/impl/ChangeRecordServiceImpl.java | 101 ++++++++++-------- 4 files changed, 121 insertions(+), 63 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java index df54197b..0def1770 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java @@ -20,7 +20,7 @@ public enum VisaRelationFieldEnum { VISA_ORDER("visa_order", "变洽签变更单"), ATTACHMENT("attachment", "附件"), PROCESS_INSTANCE("process_instance", "审批实例"), - ; + ORDER("order", "单据"); private final String code; private final String desc; } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index 8e36b99a..74c7026f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -1,6 +1,8 @@ package cn.axzo.visa.server.service; -import java.util.List; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.server.domain.ChangeRecord; /** * @author xudawei @@ -9,6 +11,6 @@ import java.util.List; */ public interface ChangeRecordRelationService { - Long saveAttach(Long visaId, List attach, Long createBy); + boolean save(VisaRelationFieldEnum type, VisaChangeTempCreateReq req, ChangeRecord changeRecord); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 7ea904f9..02883481 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -1,7 +1,10 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.framework.domain.ServiceException; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.visa.server.service.ChangeRecordRelationService; @@ -10,8 +13,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.AbstractMap; import java.util.List; +import java.util.stream.Collectors; /** * @author xudawei @@ -24,23 +30,64 @@ import java.util.List; public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { /** - * 保存附件 + * 保存 * - * @param visaId 变更签证记录id - * @param attach 附件 - * @param createBy 创建人 + * @param type 变更签证记录内容关系表类型 + * @param req 保存请求表单数据 + * @param changeRecord 变更签证记录 * @return 变更签证记录内容关系表id */ - public Long saveAttach(Long visaId, List attach, Long createBy) { - ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); - changeRecordRelation.setVisaId(visaId); - changeRecordRelation.setVarName(VisaRelationFieldEnum.ATTACHMENT.name()); - changeRecordRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); - changeRecordRelation.setContent(JSONObject.toJSONString(attach)); - changeRecordRelation.setCreateBy(createBy); - changeRecordRelation.setUpdateBy(createBy); - save(changeRecordRelation); - return changeRecordRelation.getId(); + @Transactional(rollbackFor = Exception.class) + public boolean save(VisaRelationFieldEnum type, VisaChangeTempCreateReq req, ChangeRecord changeRecord) { + if (type == VisaRelationFieldEnum.ATTACHMENT) { + List attach = req.getAttach().stream() + .map(item -> { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(changeRecord.getId()); + changeRecordRelation.setVarName(type.name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType()); + changeRecordRelation.setContent(item); + changeRecordRelation.setCreateBy(req.getOperatorPersonId()); + changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); + return changeRecordRelation; + }) + .collect(Collectors.toList()); + return saveBatch(attach); + } else if (type == VisaRelationFieldEnum.CONTENT_DESCRIPTION) { + List contextAndDescription = req.getChangeContextAndDescriptionList().stream() + .map(item -> { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(changeRecord.getId()); + changeRecordRelation.setVarName(type.name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); + changeRecordRelation.setContent(JSONObject.toJSONString(item)); + changeRecordRelation.setCreateBy(req.getOperatorPersonId()); + changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); + return changeRecordRelation; + }) + .collect(Collectors.toList()); + return saveBatch(contextAndDescription); + } else if (type == VisaRelationFieldEnum.ORDER) { + List order = req.getRelationOrderMap().entrySet() + .stream() + .flatMap(item -> item.getValue().stream() + .map(orderId -> new AbstractMap.SimpleImmutableEntry<>(item.getKey(), orderId))) + .map(item -> { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(changeRecord.getId()); + changeRecordRelation.setVarName(type.name()); + changeRecordRelation.setVarExt(VisaRelationFieldEnum.valueOf(item.getKey()).name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.LONG.getType()); + changeRecordRelation.setContent(String.valueOf(item.getValue())); + changeRecordRelation.setCreateBy(req.getOperatorPersonId()); + changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); + return changeRecordRelation; + }) + .collect(Collectors.toList()); + return saveBatch(order); + } else { + throw new ServiceException("未知类型"); + } } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index e65d6c1c..cad12269 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -12,7 +12,6 @@ import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; @@ -43,6 +42,7 @@ import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -265,6 +265,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl team = req.getRelationUnitAndPersonList().stream() .filter(r -> { AssertUtil.notNull(r.getType(), "相关单位类型错误"); - AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuIdOrTeamNodeId()), "请选择" + r.getType().getDesc()); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); AssertUtil.notEmpty(r.getPersonId(), "请选择" + r.getType().getDesc() + "确认人"); AssertUtil.isTrue(r.getPersonId().size() <= verifyPersonLimit, String.format(r.getType().getDesc() + "确认人,最多支持{}个", verifyPersonLimit)); return Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, r.getType()); }) .collect(Collectors.toList()); List unit = req.getRelationUnitAndPersonList(); - if (CollectionUtils.isNotEmpty(team)) { - // 去除班组 - List teamNodeId = team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).distinct().collect(Collectors.toList()); - unit = unit.stream().filter(o -> !teamNodeId.contains(o.getOuIdOrTeamNodeId())).collect(Collectors.toList()); - } +// if (CollectionUtils.isNotEmpty(team)) { +// // 去除班组 +// List teamNodeId = team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).distinct().collect(Collectors.toList()); +// unit = unit.stream().filter(o -> !teamNodeId.contains(o.getOuIdOrTeamNodeId())).collect(Collectors.toList()); +// } // TODO 相关单位退场状态校验 // CooperateShipQueryReq shipQueryReq = CooperateShipQueryReq.builder() // .workspaceId(req.getRelationWorkspaceId()) @@ -388,13 +405,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl= 0, "金额变化超出范围"); // 关联单据合法性 @@ -411,9 +423,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildArea(List areaIds) { @@ -425,8 +434,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl VisaDetailByIdResponse.RelationAreaDetail.builder() - .id(item.getId()) - .name(item.getName()).build()) + .id(item.getId()) + .name(item.getName()).build()) .collect(Collectors.toList()); } From bcc845fe8409ef1e7c3c728be5dd484fbd9c0c1e Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 21 Jan 2025 13:49:58 +0800 Subject: [PATCH 042/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/visa/api/request/VisaChangeTempCreateReq.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index 8a93d996..ef8bb2b5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -143,10 +143,12 @@ public class VisaChangeTempCreateReq { */ private SaasCooperateShipCooperateTypeEnum type; + private Long ouId; + /** - * 单位id或班组节点id,{@code type}为项目内班组时作为班组节点id使用 + * 单位的顶级节点Id或项目内班组节点id */ - private Long ouIdOrTeamNodeId; + private Long nodeId; /** * 确认人personId From 9c274160b695e8274ea131be5b4ff74338204e25 Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 21 Jan 2025 15:58:59 +0800 Subject: [PATCH 043/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E8=AF=A6=E6=83=85=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=B3=E8=81=94=E4=BB=BB=E5=8A=A1=E5=8D=95\=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E5=8D=95\=E5=8F=98=E6=9B=B4=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/response/VisaDetailByIdResponse.java | 23 +--- .../service/ChangeRecordBillService.java | 21 ++++ .../service/ChangeRecordConfirmService.java | 6 + .../impl/ChangeRecordBillServiceImpl.java | 18 ++- .../impl/ChangeRecordConfirmServiceImpl.java | 107 ++++++++++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 37 ++++-- 6 files changed, 168 insertions(+), 44 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index d71472e7..f873a40c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -11,7 +11,6 @@ import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; -import java.util.Map; /** * @author xudawei @@ -104,7 +103,7 @@ public class VisaDetailByIdResponse { /** * 相关单位及人员 */ - private List relationUnitAndPersonList; + private List relationOuAndPersonList; /** * 发生内容说明 @@ -116,15 +115,6 @@ public class VisaDetailByIdResponse { */ private String amountChange; - /** - * 关联的单据,key: 单据类型,value: 单据id集合 - *

- * TASK :任务单 RECTIFY :整改单 CHANGE:变更单 - * 只有变更签证类型即{@code type}为“技术核定”或“工程签证”时才可能会有关联变更单 - *

- */ - private Map> relationOrderMap; - /** * 附件 */ @@ -155,11 +145,11 @@ public class VisaDetailByIdResponse { @Builder @NoArgsConstructor @AllArgsConstructor - public static class RelationUnitAndPerson { + public static class RelationOuAndPerson { /** * 相关单位 */ - private RelationUnit relationUnit; + private RelationUnit relationOu; /** * 相关确认人 @@ -175,7 +165,7 @@ public class VisaDetailByIdResponse { /** * 类型 */ - private SaasCooperateShipCooperateTypeEnum type; + private String type; /** * 单位id @@ -203,11 +193,6 @@ public class VisaDetailByIdResponse { */ private Long ouId; - /** - * 单位名称 - */ - private String ouName; - /** * 确认人名称 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java index 3d62110b..bfe3be8e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java @@ -1,5 +1,6 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.server.domain.ChangeRecordBill; import cn.axzo.visa.server.dto.VisaBillDto; import java.util.List; @@ -17,4 +18,24 @@ public interface ChangeRecordBillService { */ Boolean addBill(List dtoList); + /** + * 更新 + */ + Boolean updateBill(Long visaId, List dtoList); + + /** + * 删除 + */ + Boolean deleteByVisaId(Long visaId); + + /** + * 查询记录 + */ + List findByCondition(VisaBillDto dto); + + /** + * 通过Id,查询记录 + */ + List listById(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index e8853558..8954e90e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -1,5 +1,6 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.dto.VisaConfirmDto; import java.util.List; @@ -31,4 +32,9 @@ public interface ChangeRecordConfirmService { */ boolean deleteByVisaId(Long visaId); + /** + * 变更签证Id获取map + */ + List listRelationByVisaId(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 4d2b4b84..86c40058 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,22 +1,17 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.visa.server.domain.ChangeRecordBill; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; -import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaBillDto; import cn.axzo.visa.server.mapper.ChangeRecordBillDao; -import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.visa.server.service.ChangeRecordBillService; -import cn.axzo.visa.server.service.ChangeRecordRelationService; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; @@ -68,6 +63,17 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl listById(Long visaId) { + if (Objects.isNull(visaId)) { + return Lists.newArrayList(); + } + VisaBillDto dto = VisaBillDto.builder().visaId(visaId).build(); + return findByCondition(dto); + } + /** * 查询数量 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 2cc9212e..998ca7be 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,22 +1,27 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; +import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -28,9 +33,11 @@ import java.util.stream.Collectors; */ @Slf4j @Service -@RequiredArgsConstructor public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { + @Resource + private ProfileGateway profileGateway; + /** * 新增变更签证确认信息 * @param dtoList 变更签证确认信息 @@ -90,7 +97,91 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl item.getBizType()).collect(Collectors.toSet()); + } + /** + * 变更签证Id获取map + */ + @Override + public List listRelationByVisaId(Long visaId) { + // 1 查询相关确认人 + VisaConfirmDto dto = VisaConfirmDto.builder() + .visaId(visaId) + .bizType(VisaConfirmBizTypeEnum.CONFIRM).build(); + List list = this.findByCondition(dto); + if (CollectionUtils.isEmpty(list)) { + return Lists.newArrayList(); + } + // 2 构建人员的集合,key:personId,value:realName + Set personSet = list.stream().map(ChangeRecordConfirm::getPersonId).collect(Collectors.toSet()); + Map personMap = this.buildPersonMap(personSet); + + // 3 构建关联单位与人员,最终处理成一个类型与单位下,对应多个确认人 + Map> listMap = list.stream().collect(Collectors.groupingBy(e -> e.getType() + "#" + e.getOuId())); + return this.buildRelationOuAndPerson(listMap, personMap); + } + + /** + * 构建关联单位与人员,最终处理成一个类型与单位下,对应多个确认人 + * listMap key:type#ouId,value:ChangeRecordConfirm集合,按照[单位]以及[类型]进行分类 + * personMap key:personId,value:realName,对于确认人进行姓名赋值 + */ + private List buildRelationOuAndPerson(Map> listMap, Map personMap) { + List returnList = Lists.newArrayList(); + for (Map.Entry> entry : listMap.entrySet()) { + String key = entry.getKey(); + List confirmList = entry.getValue(); + + //构建单位 + VisaDetailByIdResponse.RelationUnit relationUnit = this.buildRelationUnit(key); + //构建确认人 + List relationPersonList = this.buildRelationPersonList(confirmList, personMap); + + returnList.add(VisaDetailByIdResponse.RelationOuAndPerson.builder() + .relationOu(relationUnit) + .relationPersonList(relationPersonList).build()); + } + return returnList; + } + + /** + * 构建单位 + */ + private VisaDetailByIdResponse.RelationUnit buildRelationUnit(String key) { + String[] keySplit = key.split("#"); + return VisaDetailByIdResponse.RelationUnit.builder() + .ouId(Long.valueOf(keySplit[1])) + .type(keySplit[0]) + .ouName("").build();//TODO ouName + } + + /** + * 构建确认人 + */ + private List buildRelationPersonList(List confirmList,Map personMap) { + return confirmList.stream().map(item -> VisaDetailByIdResponse.RelationPerson.builder() + .ouId(item.getOuId()) + .workspaceId(item.getWorkspaceId()) + .personId(item.getPersonId()) + .projectId(item.getProjectId()) + .type(item.getType()) + .realName(personMap.get(item.getPersonId())) + .build() + ).collect(Collectors.toList()); + } + + /** + * 构建人员的集合,key:personId,value:realName + */ + private Map buildPersonMap(Set personSet) { + if (CollectionUtils.isEmpty(personSet)) { + return Maps.newHashMap(); + } + List profiles = profileGateway.getProfiles(Lists.newArrayList(personSet)); + if (CollectionUtils.isEmpty(profiles)) { + return Maps.newHashMap(); + } + return profiles.stream().collect(Collectors.toMap(PersonProfileDto::getId, PersonProfileDto::getRealName, (x, y) -> x)); } /** @@ -101,10 +192,12 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); + Map> billMap = changeRecordBills.stream().collect(Collectors.groupingBy(ChangeRecordBill::getBillType, Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); + + return VisaDetailByIdResponse.builder() .no(visa.getNo()) //单号 .type(visa.getType()) //单据类型,DESIGN_CHANGE:设计变更,TECHNOLOGY_APPROVED:技术核定,PROJECT_VISA:工程签证 - .reason(visa.getReason()) - .createName(profile.getRealName()) - .createBy(visa.getCreateBy()) - .happenTime(Objects.nonNull(visa.getHappenTime()) ? DateUtil.format(visa.getHappenTime(), "yyyy-MM-dd") : "") - .approvalCompleteTime(Objects.nonNull(visa.getHappenTime()) ? DateUtil.format(visa.getHappenTime(), "yyyy-MM-dd HH:mm:ss") : "") - .relationProfessionalList(this.buildProfession(visa.getRelationProject(), Sets.newHashSet()))//专业对象取出 - .relationAreaList(this.buildArea(Lists.newArrayList()))//专业区域取出 + .reason(visa.getReason()) //发生原因 + .createName(profile.getRealName()) //发起人姓名 + .createBy(visa.getCreateBy()) //发起人Id + .happenTime(Objects.nonNull(visa.getHappenTime()) ? DateUtil.format(visa.getHappenTime(), "yyyy-MM-dd") : "") // 提出时间 + .approvalCompleteTime(Objects.nonNull(visa.getApprovalCompleteTime()) ? DateUtil.format(visa.getApprovalCompleteTime(), "yyyy-MM-dd HH:mm:ss") : "") //最终审批时间 + .relationProfessionalList(this.buildProfession(visa.getRelationProject(), Sets.newHashSet()))//专业 + .relationAreaList(this.buildArea(Lists.newArrayList()))//区域 .relationProject(visa.getRelationProject()) .relationProjectName("")//TODO .relationWorkspaceId(visa.getRelationWorkspaceId()) .relationWorkspaceName("")//TODO - //TODO 确认人 -// .relationTaskList(visa.rela) - //TODO 任务单/整改单/变更单 需要提供对象 + .relationOuAndPersonList(changeRecordConfirmService.listRelationByVisaId(visaId)) // 相关单位与确认人 + .relationTaskList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.TASK)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.TASK)) // 关联任务单 + .relationRectifyList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.RECTIFY)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.RECTIFY)) //关联整改单 + .relationVisaList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.VISA)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.VISA)) // 关联变更单 .amountChange(Objects.nonNull(visa.getAmountChange()) ? visa.getAmountChange().toPlainString() : "") +// .changeContextAndDescriptionList() TODO .build(); } From c801a5a3bde23f06cf84984e41830772198ec6bf Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 21 Jan 2025 17:20:01 +0800 Subject: [PATCH 044/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E8=AF=A6=E6=83=85=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8D=95=E4=BD=8D/=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/server/dto/VisaRelationDto.java | 31 ++++++++++++ .../server/rpc/OrganizationalUnitGateway.java | 48 +++++++++++++++++++ .../visa/server/rpc/WorkspaceGateway.java | 44 +++++++++++++++++ .../service/ChangeRecordRelationService.java | 14 ++++++ .../impl/ChangeRecordConfirmServiceImpl.java | 40 +++++++++++++--- .../impl/ChangeRecordRelationServiceImpl.java | 29 +++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 37 ++++++++++---- 7 files changed, 228 insertions(+), 15 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java new file mode 100644 index 00000000..89a64bb4 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.server.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/21 + * @desc 变更签证记录内容关系表 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VisaRelationDto { + + /** + * 变更签证记录id + */ + private Long visaId; + + /** + * 类型 + */ + private String varName; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java new file mode 100644 index 00000000..6295607e --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java @@ -0,0 +1,48 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.maokai.api.client.OrganizationalUnitApi; +import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; +import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; +import cn.azxo.framework.common.logger.MethodAroundLog; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/21 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class OrganizationalUnitGateway { + + private final OrganizationalUnitApi organizationalUnitApi; + + /** + * 获取单位集合 + */ + @MethodAroundLog(target = "maokai", source = "nanopart", value = "获取单位集合") + public List list(OrganizationalUnitQuery query) { + if (Objects.isNull(query)) { + return Lists.newArrayList(); + } + try { + log.info("OrganizationalUnitGateway list, params:{}", JSON.toJSONString(query)); + ApiResult> list = organizationalUnitApi.list(query); + log.info("OrganizationalUnitGateway list, result:{}", JSON.toJSONString(list)); + List data = list.getData(); + return data; + } catch (Exception e) { + log.warn("OrganizationalUnitGateway list exception", e); + throw e; + } + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java new file mode 100644 index 00000000..246f6bbc --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java @@ -0,0 +1,44 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.apollo.core.web.Result; +import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi; +import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; +import cn.azxo.framework.common.logger.MethodAroundLog; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/21 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class WorkspaceGateway { + + private final WorkspaceApi workspaceApi; + + /** + * 通过workspaceId获取对象 + */ + @MethodAroundLog(target = "workspace", source = "nanopart", value = "获取项目信息") + public GetDetailRes getById(Long workspaceId) { + if (Objects.isNull(workspaceId)) { + return GetDetailRes.builder().build(); + } + try { + log.info("WorkspaceGateway getById, params:{}", workspaceId); + Result result = workspaceApi.getById(workspaceId); + log.info("WorkspaceGateway getById, result:{}", JSON.toJSONString(result)); + return result.getData(); + } catch (Exception e) { + log.warn("WorkspaceGateway getById exception", e); + throw e; + } + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index 74c7026f..db3e1ab1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -3,6 +3,10 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.dto.VisaRelationDto; + +import java.util.List; /** * @author xudawei @@ -13,4 +17,14 @@ public interface ChangeRecordRelationService { boolean save(VisaRelationFieldEnum type, VisaChangeTempCreateReq req, ChangeRecord changeRecord); + /** + * 获取集合 + */ + List findByCondition(VisaRelationDto dto); + + /** + * 根据名称与变更签证Id,获取集合 + */ + List findByVisaAndVarName(Long visaId, String varName); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 998ca7be..2db19dea 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,6 +1,8 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; +import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; @@ -8,6 +10,7 @@ import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; +import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.hutool.core.bean.BeanUtil; @@ -18,6 +21,7 @@ import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; @@ -38,6 +42,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl personSet = list.stream().map(ChangeRecordConfirm::getPersonId).collect(Collectors.toSet()); Map personMap = this.buildPersonMap(personSet); + // 2-2 构建公司的Map,orgIdAndNameMap,key:ouId,value:ouName + Set ouIdSet = list.stream().map(ChangeRecordConfirm::getOuId).collect(Collectors.toSet()); + Map orgIdAndNameMap = this.buildOrgIdAndNameMap(ouIdSet); // 3 构建关联单位与人员,最终处理成一个类型与单位下,对应多个确认人 Map> listMap = list.stream().collect(Collectors.groupingBy(e -> e.getType() + "#" + e.getOuId())); - return this.buildRelationOuAndPerson(listMap, personMap); + return this.buildRelationOuAndPerson(listMap, personMap, orgIdAndNameMap); + } + + /** + * 构建公司的Map,orgIdAndNameMap,key:ouId,value:ouName + */ + private Map buildOrgIdAndNameMap(Set ouIdSet) { + if (CollectionUtils.isEmpty(ouIdSet)) { + return Maps.newHashMap(); + } + List orgVoList = organizationalUnitGateway.list(OrganizationalUnitQuery.builder().unitIds(Lists.newArrayList(ouIdSet)).build()); + if (CollectionUtils.isEmpty(orgVoList)) { + return Maps.newHashMap(); + } + return orgVoList.stream().collect(Collectors.toMap(OrganizationalUnitVO::getId, OrganizationalUnitVO::getName, (x, y) -> x)); } /** @@ -126,14 +151,14 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildRelationOuAndPerson(Map> listMap, Map personMap) { + private List buildRelationOuAndPerson(Map> listMap, Map personMap, Map orgIdAndNameMap) { List returnList = Lists.newArrayList(); for (Map.Entry> entry : listMap.entrySet()) { String key = entry.getKey(); List confirmList = entry.getValue(); //构建单位 - VisaDetailByIdResponse.RelationUnit relationUnit = this.buildRelationUnit(key); + VisaDetailByIdResponse.RelationUnit relationUnit = this.buildRelationUnit(key, orgIdAndNameMap); //构建确认人 List relationPersonList = this.buildRelationPersonList(confirmList, personMap); @@ -147,12 +172,13 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl orgIdAndNameMap) { String[] keySplit = key.split("#"); + Long ouId = Long.valueOf(keySplit[1]); return VisaDetailByIdResponse.RelationUnit.builder() - .ouId(Long.valueOf(keySplit[1])) + .ouId(ouId) .type(keySplit[0]) - .ouName("").build();//TODO ouName + .ouName(StringUtils.hasText(orgIdAndNameMap.get(ouId)) ? orgIdAndNameMap.get(ouId) : "").build(); } /** diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 02883481..65ddad64 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -6,17 +6,21 @@ import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.dto.VisaRelationDto; import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.visa.server.service.ChangeRecordRelationService; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import java.util.AbstractMap; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -90,4 +94,29 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl findByVisaAndVarName(Long visaId, String varName) { + if (Objects.isNull(visaId) || !StringUtils.hasText(varName)) { + return Lists.newArrayList(); + } + return this.findByCondition(VisaRelationDto.builder().visaId(visaId).varName(varName).build()); + } + + /** + * 获取集合 + */ + @Override + public List findByCondition(VisaRelationDto dto) { + if (Objects.isNull(dto) || Objects.isNull(dto.getVisaId())) { + return Lists.newArrayList(); + } + return this.lambdaQuery().eq(ChangeRecordRelation::getVisaId, dto.getVisaId()) + .eq(ChangeRecordRelation::getVarName, dto.getVarName()) + .eq(ChangeRecordRelation::getIsDelete, 0).list(); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index f939d9fc..76a9a0d3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.apollo.api.res.ConstructionAreaInfo; +import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; @@ -21,15 +22,15 @@ import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordBill; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordDao; -import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.visa.server.rpc.CooperateShipGateway; import cn.axzo.visa.server.rpc.DrawingMajorGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.ProjectApiGateway; -import cn.axzo.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.visa.server.rpc.WorkspaceGateway; import cn.axzo.visa.server.service.ChangeRecordBillService; import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordLogService; @@ -39,6 +40,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -109,6 +111,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); Map> billMap = changeRecordBills.stream().collect(Collectors.groupingBy(ChangeRecordBill::getBillType, Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); + ProjectDetailRes projectDetailRes = projectApiGateway.getProjectById(visa.getRelationProject()); + GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId()); return VisaDetailByIdResponse.builder() .no(visa.getNo()) //单号 @@ -257,20 +264,34 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildDesc(Long visaId) { + if (Objects.isNull(visaId)) { + return Lists.newArrayList(); + } + List relationList = this.changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.CONTENT_DESCRIPTION.name()); + if (CollectionUtils.isEmpty(relationList)) { + return Lists.newArrayList(); + } + return relationList.stream().map(item -> JSON.parseObject(item.getContent(), VisaChangeTempCreateReq.ChangeContextAndDescription.class)).collect(Collectors.toList()); + } + /** * 创建变更签证 * From 2eca94cc67268d75fd662e36da2cf8dc1013a446 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 21 Jan 2025 18:43:09 +0800 Subject: [PATCH 045/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangePageSearchReq.java | 10 ++ .../api/response/VisaChangeInitiatorResp.java | 9 +- .../response/VisaChangePageSearchResp.java | 7 ++ .../controller/ChangeRecordController.java | 5 +- .../visa/server/rpc/ProjectApiGateway.java | 14 ++- .../service/ChangeRecordConfirmService.java | 3 + .../server/service/ChangeRecordService.java | 11 ++ .../service/impl/ChangeRecordServiceImpl.java | 113 ++++++++++++++++++ 8 files changed, 168 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java index fd66060d..06fda22e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java @@ -7,6 +7,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -22,6 +24,13 @@ import java.util.List; @AllArgsConstructor public class VisaChangePageSearchReq { + /** + * 项目id + */ + @NotNull(message = "项目id不能为空") + @Min(value = 1, message = "项目id不合法") + private Long workspaceId; + /** * 单据类型 *

@@ -60,6 +69,7 @@ public class VisaChangePageSearchReq { /** * 变更金额区间 * 0:最小值 1:最大值 + * 当最小最大值均为正值表示增加,均为负值表示减少 */ private List amountChange; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java index 6fd65ad6..90590d76 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java @@ -47,9 +47,14 @@ public class VisaChangeInitiatorResp { private String jobCode; /** - * 所属单位id或班组节点id + * 单位id */ - private Long unitIdOrTeamNodeId; + private Long ouId; + + /** + * 所属单位节点id或班组节点id + */ + private Long nodeId; /** * 所属单位名称或班组名称 diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java index b665e31b..effbf2fc 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java @@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.Date; +import java.util.Objects; /** * @author chenwenjian @@ -107,5 +108,11 @@ public class VisaChangePageSearchResp { */ private VisaChangeInitiatorResp initiator; + public String getTypeDesc() { + if (Objects.isNull(type)) { + return null; + } + return type.getDesc(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index dde35920..63a5111d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -2,6 +2,7 @@ package cn.axzo.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.visa.api.changerecord.ChangeRecordApi; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; @@ -50,6 +51,7 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req) { return ApiResult.ok(changeRecordService.approveCreateVisaChangeRecord(req)); } + /** * 变签状态变更 */ @@ -68,7 +70,8 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiPageResult pageSearchVisaChangeRecord(VisaChangePageSearchReq req) { - return null; + PageData pageData = changeRecordService.page(req); + return ApiPageResult.ok(pageData.getList(), pageData.getTotalCount(), pageData.getPage(), pageData.getPageSize()); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java index aaf49330..f0ea78b7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java @@ -1,13 +1,18 @@ package cn.axzo.visa.server.rpc; import cn.axzo.apollo.workspace.api.workspace.ProjectApi; +import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.visa.server.utils.RpcUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.Collections; +import java.util.List; + /** * @author chenwenjian * @version 1.0 @@ -24,7 +29,14 @@ public class ProjectApiGateway { if (NumberUtil.isNotPositiveNumber(id)) { return null; } - return RpcUtil.rpcResultProcessor(() -> projectApi.getById(id), "getProjectById", id); + return RpcUtil.rpcResultProcessor(() -> projectApi.getById(id), "通过id获取工程详情", id); + } + + public List getProjectBriefByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return RpcUtil.rpcResultProcessor(() -> projectApi.simpleList(ids), "通过ids获取工程简单信息", ids); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index 8954e90e..e5d9d1d3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.dto.VisaConfirmDto; import java.util.List; @@ -37,4 +38,6 @@ public interface ChangeRecordConfirmService { */ List listRelationByVisaId(Long visaId); + List list + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index ce9d0b3f..f58a1ca0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,9 +1,12 @@ package cn.axzo.visa.server.service; +import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; @@ -58,4 +61,12 @@ public interface ChangeRecordService { * @return 变更签证Id */ Long approveCreateVisaChangeRecord(VisaChangeApproveCreateReq req); + + /** + * 分页查询 + * + * @param req 筛查条件 + * @return 分页数据 + */ + PageData page(VisaChangePageSearchReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 76a9a0d3..27ba00f5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -2,11 +2,15 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; +import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.framework.domain.web.result.PageData; +import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.visa.api.enums.VisaBillTypeEnum; @@ -17,7 +21,10 @@ import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordBill; @@ -28,6 +35,7 @@ import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.visa.server.rpc.CooperateShipGateway; import cn.axzo.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.ProjectApiGateway; import cn.axzo.visa.server.rpc.WorkspaceGateway; @@ -41,6 +49,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -54,11 +63,13 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -93,6 +104,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl page(VisaChangePageSearchReq req) { + /*筛查条件校验*/ + validSearchCondition(req); + /*数据查询*/ + Page page = lambdaQuery() + .eq(NumberUtil.isPositiveNumber(req.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, req.getWorkspaceId()) + .eq(Objects.nonNull(req.getType()), ChangeRecord::getType, req.getType()) + .eq(StringUtils.hasText(req.getKeyword()), ChangeRecord::getNo, req.getKeyword()) + .or(StringUtils.hasText(req.getKeyword()), wrapper -> wrapper.like(ChangeRecord::getNo, req.getKeyword())) + .eq(NumberUtil.isPositiveNumber(req.getProjectId()), ChangeRecord::getRelationProject, req.getProjectId()) + .in(CollectionUtils.isNotEmpty(req.getInitiators()), ChangeRecord::getCreateBy, req.getInitiators()) + .in(CollectionUtils.isNotEmpty(req.getStatuses()), ChangeRecord::getStatus, req.getStatuses()) + .between(CollectionUtils.isNotEmpty(req.getAmountChange()), ChangeRecord::getAmountChange, req.getAmountChange().get(0), req.getAmountChange().get(1)) + .between(CollectionUtils.isNotEmpty(req.getHappenTime()), ChangeRecord::getHappenTime, req.getHappenTime().get(0), req.getHappenTime().get(1)) + .between(CollectionUtils.isNotEmpty(req.getApproveCompletedDate()), ChangeRecord::getApprovalCompleteTime, req.getApproveCompletedDate().get(0), req.getApproveCompletedDate().get(1)) + .eq(CollectionUtils.isNotEmpty(req.getApproveCompletedDate()), ChangeRecord::getStatus, VisaStatusEnum.COMPLETED) + .page(new Page<>(req.getPage(), req.getPageSize())); + return PageData.builder() + .page(Math.toIntExact(page.getCurrent())) + .pageSize(Math.toIntExact(page.getSize())) + .totalCount(page.getTotal()) + .list(buildVisaChangePageSearchResp(page.getRecords())) + .build(); + } + + private List buildVisaChangePageSearchResp(List records) { + if (CollectionUtils.isEmpty(records)) { + return Collections.emptyList(); + } + List projectIdList = records.stream().map(ChangeRecord::getRelationProject).distinct().collect(Collectors.toList()); + List projectBriefByIds = projectApiGateway.getProjectBriefByIds(projectIdList); + AssertUtil.notEmpty(projectBriefByIds, "工程信息获取失败"); + // Map + Map projectIdNameMap = projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + List initiatorPersonIdList = records.stream().map(ChangeRecord::getCreateBy).collect(Collectors.toList()); + OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() + .workspaceId(records.get(0).getRelationWorkspaceId()) + .personIds(initiatorPersonIdList) + .needProfile(true) + .build(); + List nodeUserResp = nodeUserGateway.listOrgNodeUsers(nodeUserReq); + AssertUtil.notEmpty(nodeUserResp, "发起人信息获取失败"); + // Map + Map initiatorMap = nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity())); + return records.stream() + .map(r -> { + VisaChangePageSearchResp resp = BeanUtil.copyProperties(r, VisaChangePageSearchResp.class); + // 工程 + resp.setRelationProjectName(projectIdNameMap.get(r.getRelationProject())); + // 发起人 TODO + OrgNodeUserBriefInfoResp initiator = initiatorMap.get(r.getCreateBy()); + if (Objects.isNull(initiator)) { + log.info("{} initiator {} get failed", r.getRelationWorkspaceId(), r.getCreateBy()); + return null; + } + VisaChangeInitiatorResp.builder() + .personId(r.getCreateBy()) + .name(initiator.getProfile().getRealName()) + .avatar(initiator.getProfile().getAvatarUrl()) + .jobId(initiator.getOrganizationalJobId()) + .jobName(initiator.getOrganizationalJobName()) + .jobCode(initiator.getOrganizationalJobCode()) +// .unitIdOrTeamNodeId() +// .unitOrTeamName(r.getCreateByUnitOrTeamName()) + .build(); +// resp.setInitiator(null); + return resp; + }) + .collect(Collectors.toList()); + } + + private static void validSearchCondition(VisaChangePageSearchReq req) { + if (CollectionUtils.isNotEmpty(req.getAmountChange())) { + AssertUtil.notNull(req.getAmountChange().get(0), "请填写最小金额"); + AssertUtil.notNull(req.getAmountChange().get(1), "请填写最大金额"); + AssertUtil.isTrue(req.getAmountChange().get(0).compareTo(req.getAmountChange().get(1)) < 0, "最大金额不能小于最小金额"); + // 最大最小值的符号必须相同 + AssertUtil.isTrue(Objects.equals(req.getAmountChange().get(0).signum(), req.getAmountChange().get(1).signum()), "请输入合法的变更金额范围"); + } + if (CollectionUtils.isNotEmpty(req.getHappenTime())) { + AssertUtil.notNull(req.getHappenTime().get(0), "提出开始时间不能为空"); + AssertUtil.notNull(req.getHappenTime().get(1), "提出结束时间不能为空"); + AssertUtil.isTrue(req.getHappenTime().get(0).compareTo(req.getHappenTime().get(1)) < 0, "提出结束时间不能小于开始时间"); + } + if (CollectionUtils.isNotEmpty(req.getApproveCompletedDate())) { + AssertUtil.notNull(req.getApproveCompletedDate().get(0), "审批完成开始时间不能为空"); + AssertUtil.notNull(req.getApproveCompletedDate().get(1), "审批完成结束时间不能为空"); + AssertUtil.isTrue(req.getApproveCompletedDate().get(0).compareTo(req.getApproveCompletedDate().get(1)) < 0, "审批完成结束时间不能小于开始时间"); + } + } + private static VisaConfirmDto buildVisaConfirmDto(VisaChangeTempCreateReq req, ChangeRecord changeRecord) { return VisaConfirmDto.builder() .visaId(changeRecord.getId()) From 72951f7132efc07e6caa9dd6e4d888651b74612e Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 22 Jan 2025 11:27:33 +0800 Subject: [PATCH 046/341] =?UTF-8?q?feat(REQ-3300):=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=88=97=E8=A1=A8=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 10 ++ .../api/request/VisaInitiatorListReq.java | 23 ++++ .../controller/ChangeRecordController.java | 7 ++ .../axzo/visa/server/dto/VisaConfirmDto.java | 4 + .../service/ChangeRecordConfirmService.java | 13 +- .../server/service/ChangeRecordService.java | 6 + .../impl/ChangeRecordConfirmServiceImpl.java | 6 +- .../service/impl/ChangeRecordServiceImpl.java | 112 ++++++++++++++---- 8 files changed, 150 insertions(+), 31 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java index d6b3c78e..a36386f7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java @@ -9,7 +9,9 @@ import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.request.VisaInitiatorListReq; import cn.axzo.visa.api.request.VisaRecordSelectReq; +import cn.axzo.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import org.springframework.cloud.openfeign.FeignClient; @@ -94,4 +96,12 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/record/select") ApiResult> selectVisaChangeRecord(@RequestBody @Validated VisaRecordSelectReq req); + /** + * 获取发起人列表 + * + * @param req {@link VisaInitiatorListReq} + * @return 发起人列表 + */ + @PostMapping("/api/visa/change/initiator/list") + ApiResult> listInitiator(@RequestBody @Validated VisaInitiatorListReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java new file mode 100644 index 00000000..9de0cadf --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java @@ -0,0 +1,23 @@ +package cn.axzo.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/22 9:41 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaInitiatorListReq { + + @NotNull(message = "workspaceId不能为空") + private Long workspaceId; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 63a5111d..391b203c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -11,7 +11,9 @@ import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.visa.api.request.VisaInitiatorListReq; import cn.axzo.visa.api.request.VisaRecordSelectReq; +import cn.axzo.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.service.ChangeRecordService; @@ -83,4 +85,9 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult> selectVisaChangeRecord(VisaRecordSelectReq req) { return null; } + + @Override + public ApiResult> listInitiator(VisaInitiatorListReq req) { + return ApiResult.ok(changeRecordService.listInitiator(req)); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java index efc024a6..08836045 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java @@ -8,6 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.util.List; + /** * @author xudawei * @date 2025/01/17 @@ -25,6 +27,8 @@ public class VisaConfirmDto { */ private Long visaId; + private List visaIds; + /** * 类型 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index e5d9d1d3..1b7ad171 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -15,6 +15,7 @@ public interface ChangeRecordConfirmService { /** * 新增变更签证确认信息 + * * @param dtoList 变更签证确认信息 * @return true:成功;false:失败 */ @@ -22,7 +23,8 @@ public interface ChangeRecordConfirmService { /** * 更新变更签证确认信息 - * @param visaId 变更签证Id + * + * @param visaId 变更签证Id * @param dtoList 变更签证确认 * @return true:成功;false:失败 */ @@ -38,6 +40,11 @@ public interface ChangeRecordConfirmService { */ List listRelationByVisaId(Long visaId); - List list - + /** + * 根据条件查询 + * + * @param dto 查询条件 + * @return 人员列表 + */ + List findByCondition(VisaConfirmDto dto); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index f58a1ca0..8478b1a2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -6,10 +6,14 @@ import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.VisaInitiatorListReq; +import cn.axzo.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; +import java.util.List; + /** * @author xudawei * @date 2025/01/15 @@ -69,4 +73,6 @@ public interface ChangeRecordService { * @return 分页数据 */ PageData page(VisaChangePageSearchReq req); + + List listInitiator(VisaInitiatorListReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 2db19dea..f731d079 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -213,11 +213,13 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl findByCondition(VisaConfirmDto dto) { - if (Objects.isNull(dto) || Objects.isNull(dto.getVisaId())) { + @Override + public List findByCondition(VisaConfirmDto dto) { + if (Objects.isNull(dto)) { return Lists.newArrayList(); } return this.lambdaQuery().eq(ChangeRecordConfirm::getVisaId, dto.getVisaId()) + .in(CollectionUtils.isNotEmpty(dto.getVisaIds()), ChangeRecordConfirm::getVisaId, dto.getVisaIds()) .eq(Objects.nonNull(dto.getPersonId()), ChangeRecordConfirm::getPersonId, dto.getPersonId()) .eq(Objects.nonNull(dto.getOuId()), ChangeRecordConfirm::getOuId, dto.getOuId()) .eq(Objects.nonNull(dto.getWorkspaceId()), ChangeRecordConfirm::getWorkspaceId, dto.getWorkspaceId()) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 27ba00f5..fb7675ef 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -4,6 +4,7 @@ import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; +import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; @@ -23,11 +24,13 @@ import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.request.VisaInitiatorListReq; import cn.axzo.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordBill; +import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaConfirmDto; @@ -415,52 +418,109 @@ public class ChangeRecordServiceImpl extends ServiceImpl listInitiator(VisaInitiatorListReq req) { + /*获取发起人*/ + AssertUtil.isTrue(NumberUtil.isPositiveNumber(req.getWorkspaceId()), "workspaceId不能为空"); + VisaConfirmDto visaConfirmDto = VisaConfirmDto.builder() + .bizType(VisaConfirmBizTypeEnum.CREATE) + .workspaceId(req.getWorkspaceId()) + .build(); + List initiators = changeRecordConfirmService.findByCondition(visaConfirmDto); + if (CollectionUtils.isEmpty(initiators)) { + return Collections.emptyList(); + } + /*获取岗位*/ + List initiatorPersonIds = initiators.stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList(); + Map initiatorMap = getPersonBriefInfoMap(req.getWorkspaceId(), initiatorPersonIds); + AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); + /*组装数据*/ + return initiators.stream() + .map(i -> buildInitiatorResp(initiatorMap, i)) + .collect(Collectors.toList()); + } + + private Map getPersonBriefInfoMap(Long workspaceId, List initiatorPersonIds) { + OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() + .workspaceId(workspaceId) + .personIds(initiatorPersonIds) + .build(); + List nodeUserResp = nodeUserGateway.listOrgNodeUsers(nodeUserReq); + if (CollectionUtils.isEmpty(nodeUserResp)) { + return Collections.emptyMap(); + } + // Map + return nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity())); + } + + private static VisaChangeInitiatorResp buildInitiatorResp(Map initiatorMap, ChangeRecordConfirm i) { + VisaChangeInitiatorResp.VisaChangeInitiatorRespBuilder initiatorBuilder = VisaChangeInitiatorResp.builder() + .personId(i.getPersonId()) + .ouId(i.getOuId()) + .nodeId(i.getNodeId()); + OrgNodeUserBriefInfoResp initiator = initiatorMap.get(i.getPersonId()); + if (Objects.isNull(initiator)) { + log.error("获取发起人: {} 信息失败", i.getPersonId()); + return initiatorBuilder.build(); + } + return initiatorBuilder + .name(initiator.getRealName()) + .avatar(initiator.getRealName()) + .jobId(initiator.getOrganizationalJobId()) + .jobName(initiator.getOrganizationalJobName()) + .jobCode(initiator.getOrganizationalJobCode()) + .unitOrTeamName(OrganizationalNodeTypeEnum.PROJECT_TEAM.getValue().equals(initiator.getOrganizationalNodeType()) ? initiator.getOrganizationalNodeName() : initiator.getOrganizationalUnitName()) + .build(); + } + private List buildVisaChangePageSearchResp(List records) { if (CollectionUtils.isEmpty(records)) { return Collections.emptyList(); } + /*获取工程信息*/ List projectIdList = records.stream().map(ChangeRecord::getRelationProject).distinct().collect(Collectors.toList()); List projectBriefByIds = projectApiGateway.getProjectBriefByIds(projectIdList); AssertUtil.notEmpty(projectBriefByIds, "工程信息获取失败"); - // Map + // Map Map projectIdNameMap = projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + + /*获取变更单发起人*/ + List visaIdList = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); + // Map + Map visaIdInitiatorMap = getInitiatorMapByVisaId(visaIdList); + AssertUtil.isTrue(CollUtil.isNotEmpty(visaIdInitiatorMap), "发起人信息获取失败"); + + /*获取发起人岗位*/ List initiatorPersonIdList = records.stream().map(ChangeRecord::getCreateBy).collect(Collectors.toList()); - OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() - .workspaceId(records.get(0).getRelationWorkspaceId()) - .personIds(initiatorPersonIdList) - .needProfile(true) - .build(); - List nodeUserResp = nodeUserGateway.listOrgNodeUsers(nodeUserReq); - AssertUtil.notEmpty(nodeUserResp, "发起人信息获取失败"); // Map - Map initiatorMap = nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity())); + Map initiatorMap = getPersonBriefInfoMap(records.get(0).getRelationWorkspaceId(), initiatorPersonIdList); + AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); + + /*组装信息*/ return records.stream() .map(r -> { VisaChangePageSearchResp resp = BeanUtil.copyProperties(r, VisaChangePageSearchResp.class); // 工程 resp.setRelationProjectName(projectIdNameMap.get(r.getRelationProject())); - // 发起人 TODO - OrgNodeUserBriefInfoResp initiator = initiatorMap.get(r.getCreateBy()); - if (Objects.isNull(initiator)) { - log.info("{} initiator {} get failed", r.getRelationWorkspaceId(), r.getCreateBy()); - return null; - } - VisaChangeInitiatorResp.builder() - .personId(r.getCreateBy()) - .name(initiator.getProfile().getRealName()) - .avatar(initiator.getProfile().getAvatarUrl()) - .jobId(initiator.getOrganizationalJobId()) - .jobName(initiator.getOrganizationalJobName()) - .jobCode(initiator.getOrganizationalJobCode()) -// .unitIdOrTeamNodeId() -// .unitOrTeamName(r.getCreateByUnitOrTeamName()) - .build(); -// resp.setInitiator(null); + // 发起人 + resp.setInitiator(buildInitiatorResp(initiatorMap, visaIdInitiatorMap.get(r.getId()))); return resp; }) .collect(Collectors.toList()); } + private Map getInitiatorMapByVisaId(List visaIdList) { + VisaConfirmDto visaConfirmDto = VisaConfirmDto.builder() + .bizType(VisaConfirmBizTypeEnum.CREATE) + .visaIds(visaIdList) + .build(); + List initiators = changeRecordConfirmService.findByCondition(visaConfirmDto); + if (CollectionUtils.isEmpty(initiators)) { + return Collections.emptyMap(); + } + return initiators.stream().collect(Collectors.toMap(ChangeRecordConfirm::getVisaId, Function.identity())); + } + private static void validSearchCondition(VisaChangePageSearchReq req) { if (CollectionUtils.isNotEmpty(req.getAmountChange())) { AssertUtil.notNull(req.getAmountChange().get(0), "请填写最小金额"); From ee4016c163bb80cd0e3d1643c67d435830f58dd9 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 22 Jan 2025 11:33:41 +0800 Subject: [PATCH 047/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index fb7675ef..a8b68e5d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -431,7 +431,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorPersonIds = initiators.stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList(); + List initiatorPersonIds = initiators.stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList()); Map initiatorMap = getPersonBriefInfoMap(req.getWorkspaceId(), initiatorPersonIds); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); /*组装数据*/ From 85edcb0046e093caf6fdedf9613595d8b934d511 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 Jan 2025 15:05:13 +0800 Subject: [PATCH 048/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=E4=B8=8E?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 5 + .../api/enums/VisaConfirmBizTypeEnum.java | 1 + .../axzo/visa/api/enums/VisaLogTypeEnum.java | 4 +- .../axzo/visa/api/enums/VisaStatusEnum.java | 19 ++ .../api/request/VisaChangeTempCreateReq.java | 5 + .../api/request/VisaDetailByIdRequest.java | 11 + .../api/response/VisaDetailByIdResponse.java | 9 +- visa/visa-server/pom.xml | 10 + .../controller/ChangeRecordController.java | 10 +- .../visa/server/domain/ChangeRecordLog.java | 7 + .../cn/axzo/visa/server/dto/VisaLogDto.java | 31 +++ .../cn/axzo/visa/server/dto/VisaLogParam.java | 82 ++++++ .../rpc/OrganizationalNodeUserGateway.java | 29 ++- .../server/rpc/WorkflowManagerGateway.java | 34 +++ .../service/ChangeRecordConfirmService.java | 8 + .../service/ChangeRecordLogService.java | 22 +- .../axzo/visa/server/service/VisaHelper.java | 30 +++ .../impl/ChangeRecordConfirmServiceImpl.java | 50 +++- .../impl/ChangeRecordLogServiceImpl.java | 242 ++++++++++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 80 +++--- 20 files changed, 598 insertions(+), 91 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java index c5b007c5..e89e9e67 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -52,6 +52,9 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE)); + //审核人不同状态按钮权限 + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE)); + //[查看洽商记录][打印]按钮是通过OMS统一配置,故此处不处理 } @@ -83,6 +86,8 @@ public enum VisaButtonTypeEnum { case CREATE: case CONFIRM: return bizTypeBtnMap.get(bizTypeSet.name() + status.name()); + case APPROVE: + default: throw new ServiceException("单据确认业务类型不匹配"); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java index ee4ed4f5..3e7cdce7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java @@ -18,6 +18,7 @@ public enum VisaConfirmBizTypeEnum { CONFIRM("CONFIRM", "确认"), CREATE("CREATE", "创建"), + APPROVE("CREATE", "审核"), ; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java index 12c83dbb..17626cc8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java @@ -18,9 +18,9 @@ import java.util.Set; public enum VisaLogTypeEnum { CHAT_GROUP("chat_group", "发起群聊洽商","发起群聊洽商","%s发起群聊洽商"), - EDIT_FORM("edit_form", "编辑表单","%s编辑表单","%s编辑一下表单字段:"), + EDIT_FORM("edit_form", "编辑表单","%s编辑表单","%s编辑表单"), EDIT_AMOUNT("edit_amount", "编辑金额变化","%s编辑金额变化","原值:金额变化:%s;/n 新值:金额变化:%s;"), - UPLOAD_FILE("upload_file", "上传附件","%s上传附件","%s上传%d个附件:"), + UPLOAD_FILE("upload_file", "上传附件","%s上传附件","%s上传%d个附件:%s"), DELETE_UPLOAD_FILE("delete_upload_file", "删除附件","%s删除附件","%s删除%d个附件:"), TO_EXECUTE("to_execute", "发起执行","发起执行", "%s发起执行"), TO_APPRROVE("to_apprrove", "发起审批","发起%s审批", "%s发起%s审批"), diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 50b6f64e..5c134bd6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -1,9 +1,13 @@ package cn.axzo.visa.api.enums; +import com.google.common.collect.Sets; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Objects; +import java.util.Set; + /** * 签证业务状态 * @@ -24,9 +28,24 @@ public enum VisaStatusEnum { DECIDING_FROM_APPROVE("deciding_from_approve","审批到决策中", null), ; + /** + * 可以编辑变更签证单的状态 + */ + private static Set editFormStatus = Sets.newHashSet(DECIDING, EXECUTING); + private final String code; private final String desc; private final VisaLogTypeEnum logType; + /** + * 是否编辑变更签证单的状态 + */ + public static boolean isEditForm(VisaStatusEnum status) { + if (Objects.isNull(status)) { + return false; + } + return editFormStatus.contains(status); + } + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index ef8bb2b5..af29ec45 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -31,6 +31,11 @@ import java.util.Map; public class VisaChangeTempCreateReq { + /** + * 变更单号Id + */ + private Long id; + /** * 单号 */ diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java index 3964a8ec..60637778 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java @@ -24,4 +24,15 @@ public class VisaDetailByIdRequest { @NotNull(message = "变签Id不能为空") private Long visaId; + /** + * 人员Id + */ + @NotNull(message = "人员Id不能为空") + private Long personId; + + private Long workspaceId; + + private Long ouId; + + private Long projectId; } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index f873a40c..776150ba 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -2,6 +2,7 @@ package cn.axzo.visa.api.response; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import lombok.AllArgsConstructor; @@ -11,6 +12,7 @@ import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; +import java.util.Set; /** * @author xudawei @@ -123,7 +125,7 @@ public class VisaDetailByIdResponse { /** * 按钮 */ - private List btnList; + private Set btnList; /** @@ -141,6 +143,11 @@ public class VisaDetailByIdResponse { */ private List relationVisaList; + /** + * 状态 + */ + private VisaStatusEnum status; + @Data @Builder @NoArgsConstructor diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 690c9973..a174dcb0 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -93,5 +93,15 @@ apollo-api 2.0.0-SNAPSHOT + + cn.axzo.org + org-api + 1.0.0-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index dde35920..e485725c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -13,6 +13,7 @@ import cn.axzo.visa.api.request.VisaDetailByIdRequest; import cn.axzo.visa.api.request.VisaRecordSelectReq; import cn.axzo.visa.api.response.VisaChangePageSearchResp; import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -36,6 +37,9 @@ public class ChangeRecordController implements ChangeRecordApi { @Autowired private ChangeRecordService changeRecordService; + @Autowired + private ChangeRecordConfirmService changeRecordConfirmService; + @Override public ApiResult tempCreateVisaChangeRecord(VisaChangeTempCreateReq req) { return ApiResult.ok(changeRecordService.tempCreateVisaChangeRecord(req)); @@ -62,8 +66,10 @@ public class ChangeRecordController implements ChangeRecordApi { /** * 变签详情 */ - public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest request) { - return ApiResult.ok(changeRecordService.detailById(request.getVisaId())); + public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) { + VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId()); + resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); + return ApiResult.ok(resp); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java index 262070b4..8f29f254 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java @@ -50,6 +50,12 @@ public class ChangeRecordLog extends BaseEntity { @TableField(value = "content") private String content; + /** + * 排序 + */ + @TableField(value = "order_by") + private Integer orderBy; + /** * 操作时间 */ @@ -67,4 +73,5 @@ public class ChangeRecordLog extends BaseEntity { @TableField(value = "updateBy") private Long updateBy; + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java new file mode 100644 index 00000000..f6f0173d --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java @@ -0,0 +1,31 @@ +package cn.axzo.visa.server.dto; + +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author xudawei + * @date 2025/01/21 + * @desc 变更签证记录日志确认 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VisaLogDto { + + /** + * 变更签证Id + */ + private Long visaId; + /** + * 类型 + */ + private VisaLogTypeEnum logType; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java new file mode 100644 index 00000000..7ca8ee4d --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java @@ -0,0 +1,82 @@ +package cn.axzo.visa.server.dto; + +import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author xudawei + * @date 2025/01/21 + * @desc 变更签证记录日志确认 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VisaLogParam { + + /** + * 人员Id + */ + private Long personId; + /** + * 单位Id + */ + private Long ouId; + /** + * 项目Id + */ + private Long workspaceId; + + /** + * 原变更金额 + */ + private BigDecimal oldAmountChange; + + /** + * 新变更金额 + */ + private BigDecimal newAmountChange; + + /** + * 上传文件 + */ + private List uploadAttach; + + /** + * 删除文件 + */ + private List deleteAttach; + + /** + * 日志类型 + */ + private VisaLogTypeEnum logType; + + /** + * 原因:审批流的驳回原因/转交原因 + */ + private String reason; + + /** + * 审批流转交给的用户 + */ + private String transmitTo; + /** + * 新状态 + */ + private VisaStatusEnum newStatus; + /** + * 原状态 + */ + private VisaStatusEnum oldStatus; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java index 0c4f339b..3f30516f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java @@ -1,16 +1,22 @@ package cn.axzo.visa.server.rpc; +import cn.axzo.foundation.page.PageResp; +import cn.axzo.foundation.result.ApiResult; import cn.axzo.maokai.api.client.OrganizationalNodeUserQueryApi; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi; +import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.pokonyan.util.RpcUtil; import cn.azxo.framework.common.logger.MethodAroundLog; +import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.HashMap; import java.util.List; -import java.util.Map; +import java.util.Objects; /** * @author chenwenjian @@ -18,14 +24,33 @@ import java.util.Map; * @date 2024/4/8 20:40 */ @Service +@Slf4j @RequiredArgsConstructor public class OrganizationalNodeUserGateway { private final OrganizationalNodeUserQueryApi organizationalNodeUserQueryApi; + private final OrgNodeUserApi orgNodeUserApi; + @MethodAroundLog(target = "maokai", source = "nanopart", value = "获取用户列表") public List listOrgNodeUsers(OrgNodeUserBriefInfoListReq req) { return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserQueryApi.listOrgNodeUsers(req), "获取用户列表", req); } + @MethodAroundLog(target = "org-gateway", source = "nanopart", value = "获取用户列表") + public PageResp list(ListOrgNodeUserReq req) { + if (Objects.isNull(req)) { + return new PageResp(); + } + try { + log.info("OrganizationalNodeUserGateway list, params:{}", req); + ApiResult> list = orgNodeUserApi.list(req); + log.info("OrganizationalNodeUserGateway list, result:{}", JSON.toJSONString(list)); + return list.getData(); + } catch (Exception e) { + log.warn("OrganizationalNodeUserGateway list exception", e); + throw e; + } + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java new file mode 100644 index 00000000..493a5302 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java @@ -0,0 +1,34 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; +import cn.axzo.workflow.starter.api.WorkflowManageService; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author xudawei + * @date 2025/01/22 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class WorkflowManagerGateway { + + private final WorkflowManageService workflowManageService; + + public Boolean checkInstanceApprover(BpmnProcessInstanceCheckApproverDTO dto) { + try { + log.info("WorkflowManagerGateway checkInstanceApprover,param:{}", JSON.toJSONString(dto)); + Boolean flag = workflowManageService.checkInstanceApprover(dto); + log.info("WorkflowManagerGateway checkInstanceApprover,result:{}", flag); + return flag; + } catch (Exception e) { + log.warn("WorkflowManagerGateway checkInstanceApprover exception", e); + throw e; + } + + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index 8954e90e..1c16d610 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -1,9 +1,12 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.dto.VisaConfirmDto; import java.util.List; +import java.util.Set; /** * @author xudawei @@ -37,4 +40,9 @@ public interface ChangeRecordConfirmService { */ List listRelationByVisaId(Long visaId); + /** + * 获取按钮集合 + * 确认人与发起人的不同的单据状态,按钮列表不相同 + */ + Set fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index a73162af..91a4f8b4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -3,6 +3,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.dto.VisaLogParam; import java.util.List; @@ -19,9 +20,14 @@ public interface ChangeRecordLogService { void addLog(ChangeRecordLog log); /** - * 缺少REQ对象 + * 增加操作日志 */ - void addLog(Long visaId, VisaLogTypeEnum type, Long personId, Long ouId, Long workspaceId); + void batchAddLog(List logList); + + /** + * 构建日志集合 + */ + List buildLogList(Long visaId, VisaLogTypeEnum type, VisaLogParam param); /** * 通过变签Id获取日志 @@ -29,4 +35,16 @@ public interface ChangeRecordLogService { */ List fetchVisaLogByVisaId(Long visaId); + /** + * 构建操作人信息 + */ + String buildUserName(Long personId, Long ouId, Long workspaceId); + + /** + * 通过变签Id获取日志 + * @param visaId 变签Id + * @param logType 类型 + */ + List listByVisaIdType(Long visaId, VisaLogTypeEnum logType); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java new file mode 100644 index 00000000..d0e54665 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java @@ -0,0 +1,30 @@ +package cn.axzo.visa.server.service; + +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/22 + * @desc 变更签证协助 + */ +@Slf4j +@Service +public class VisaHelper { + + @Resource + private ChangeRecordLogService changeRecordLogService; + + public void addLog(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus) { + //第一次来新增,操作日志:只有状态变更,没有属性变更日志 + if (Objects.isNull(oldReq) && Objects.nonNull(newReq)) { +// changeRecordLogService.addLog(newReq.getId(), updateStatus.getLogType(), ); + } + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 2db19dea..766b7798 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -7,12 +7,17 @@ import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.visa.server.rpc.ProfileGateway; +import cn.axzo.visa.server.rpc.WorkflowManagerGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -45,6 +50,12 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, Long projectId, VisaStatusEnum status) { - Set bizTypes = fetchBizTypesByCondition(visaId, personId, ouId, workspaceId, projectId); + @Override + public Set fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status) { + Set bizTypes = fetchBizTypesByCondition(visaId, personId, ouId, workspaceId); + //添加审批人添加到集合bizTypes中 + this.addBizTypeApprove(bizTypes, visaId, personId, ouId, workspaceId); + return VisaButtonTypeEnum.fetchBtnSetByBizTypeAndStatus(bizTypes, status); } + /** + * 添加审批人添加到集合bizTypes中 + * @param bizTypes 业务类型集合 + * @param visaId 变更签证Id + * @param personId 人员Id + */ + private void addBizTypeApprove(Set bizTypes, Long visaId, Long personId, Long ouId, Long workspaceId) { + ChangeRecord changeRecord = changeRecordService.getById(visaId); + + BpmnProcessInstanceCheckApproverDTO dto = new BpmnProcessInstanceCheckApproverDTO(); + + dto.setProcessInstanceId(changeRecord.getApprovalId()); + + BpmnTaskDelegateAssigner assigner = new BpmnTaskDelegateAssigner(); + assigner.setPersonId(personId.toString()); + assigner.setOuId(ouId.toString()); + assigner.setTenantId(workspaceId.toString()); + + dto.setApprover(assigner); + dto.setOnlyPersonId(true); + + if (workflowManagerGateway.checkInstanceApprover(dto)) { + bizTypes.add(VisaConfirmBizTypeEnum.APPROVE); + } + } + /** * 获取单据确认枚举 */ - private Set fetchBizTypesByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, Long projectId) { + private Set fetchBizTypesByCondition(Long visaId, Long personId, Long ouId, Long workspaceId) { VisaConfirmDto dto = VisaConfirmDto.builder() .visaId(visaId) .personId(personId) .ouId(ouId) - .workspaceId(workspaceId) - .projectId(projectId).build(); + .workspaceId(workspaceId).build(); List list = this.findByCondition(dto); if (CollectionUtils.isEmpty(list)) { return Sets.newHashSet(); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index d91901ad..abee3181 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -1,18 +1,28 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; +import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.visa.server.dto.VisaLogDto; +import cn.axzo.visa.server.dto.VisaLogParam; import cn.axzo.visa.server.mapper.ChangeRecordLogDao; +import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.visa.server.service.ChangeRecordLogService; +import cn.axzo.visa.server.service.ChangeRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -24,49 +34,199 @@ import java.util.stream.Collectors; */ @Slf4j @Service -@RequiredArgsConstructor public class ChangeRecordLogServiceImpl extends ServiceImpl implements ChangeRecordLogService { + @Resource + private OrganizationalNodeUserGateway organizationalNodeUserGateway; + + @Resource + private ChangeRecordService changeRecordService; + /** * 增加操作日志 */ @Override public void addLog(ChangeRecordLog log) { + this.saveOrUpdate(log); } + /** + * 增加操作日志 + */ @Override - public void addLog(Long visaId, VisaLogTypeEnum type, Long personId, Long ouId, Long workspaceId) { - ChangeRecordLog log = null; - ChangeRecordLog.ChangeRecordLogBuilder builder = ChangeRecordLog.builder(); - builder.visaId(visaId) - .action(type.getAction()); + public void batchAddLog(List logList) { + if (CollectionUtils.isEmpty(logList)) { + return; + } + this.saveOrUpdateBatch(logList); + } + + @Override + public List buildLogList(Long visaId, VisaLogTypeEnum type, VisaLogParam param) { + List logList = Lists.newArrayList(); switch (type) { + case CHAT_GROUP: + ChangeRecordLog.ChangeRecordLogBuilder builder = ChangeRecordLog.builder(); + // 动作: 创建群聊洽商 + // 状态流转:[待提报|审核不通过的待提报] --> [决策中] + + String userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + builder.action(type.name()) + .title(type.getTitle()) + .content(String.format(type.getContent(), userName)); + break; case EDIT_FORM: - //TODO 获取名称 - builder.title(String.format(type.getTitle())) - .content(String.format(type.getContent())); - break; + builder = ChangeRecordLog.builder(); + builder.visaId(visaId) + .action(type.name()); + // 编辑表单 + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + builder.title(String.format(type.getTitle(), userName)) + .content(String.format(type.getContent(), userName)); + logList.add(builder.build()); case EDIT_AMOUNT: - //TODO 获取名称 - builder.title(String.format(type.getTitle())) - .content(String.format(type.getContent())); - break; + if (Objects.nonNull(param) + && Objects.nonNull(param.getOldAmountChange()) && Objects.nonNull(param.getNewAmountChange()) + && !Objects.equals(param.getOldAmountChange().compareTo(param.getNewAmountChange()), 0)) { + builder = ChangeRecordLog.builder(); + builder.visaId(visaId) + .action(type.name()); + // 编辑金额变化 + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + builder.title(String.format(type.getTitle(),userName )) + .content(String.format(type.getContent(), param.getOldAmountChange().toPlainString(), param.getNewAmountChange().toPlainString())); + logList.add(builder.build()); + } case UPLOAD_FILE: - //TODO 获取名称 - builder.title(String.format(type.getTitle())) - .content(String.format(type.getContent())); - break; + if (CollectionUtils.isNotEmpty(param.getUploadAttach())) { + builder = ChangeRecordLog.builder(); + // 上传附件 + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + builder.title(String.format(type.getTitle(), userName)) + .content(String.format(type.getContent(), userName, param.getUploadAttach().size(), this.buildAttach(param.getUploadAttach()))); + logList.add(builder.build()); + } case DELETE_UPLOAD_FILE: - //TODO 获取名称 - builder.title(String.format(type.getTitle())) - .content(String.format(type.getContent())); + if (CollectionUtils.isNotEmpty(param.getDeleteAttach())) { + builder = ChangeRecordLog.builder(); + // 删除附件 + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + builder.title(String.format(type.getTitle(),userName)) + .content(String.format(type.getContent(),userName, param.getDeleteAttach().size(), this.buildAttach(param.getDeleteAttach()))); + logList.add(builder.build()); + } break; + case TO_EXECUTE: + builder = ChangeRecordLog.builder(); + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + // 动作:执行 + // 状态流转:[决策中|审核不通过的待提报]-->[执行中] + builder.action(type.name()); + builder.title(type.getTitle()); + builder.content(String.format(type.getContent(), userName)); + break; + case TO_APPRROVE: + ChangeRecord changeRecord = this.changeRecordService.getById(visaId); + builder = ChangeRecordLog.builder(); + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + // 动作:发起审批 + // 状态流转:[待提报|审批不通过的待提报|决策中|审批不通过的决策中|执行中]-->[审批中] + builder.action(type.name()); + builder.title(String.format(type.getTitle(), changeRecord.getType().getDesc())); + builder.content(String.format(type.getContent(), userName, changeRecord.getType().getDesc())); + case APPROVED_AGRESS: + builder = ChangeRecordLog.builder(); + // 动作:审批流:某审批人审批通过 + // 状态流转:仍然是审批中 [审批中] -> [审批中] + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + + builder.title(String.format(type.getTitle(), userName)); + builder.content(String.format(type.getContent(), userName)); + logList.add(builder.build()); + break; + case REVERT_APPROVE: + builder = ChangeRecordLog.builder(); + // 动作:审批流:撤回审批 + // 状态流转:[审批中] -> [审批到待提报|审批到决策中] + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + + builder.title(type.getTitle()); + builder.content(String.format(type.getContent(), userName)); + logList.add(builder.build()); + break; + case REJECT_APPROVE: + builder = ChangeRecordLog.builder(); + // 动作:审批流:撤回审批 + // 状态流转:[审批中] -> [审批到待提报|审批到决策中] + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + + builder.title(String.format(type.getTitle(), userName)); + builder.content(String.format(type.getContent(), userName, param.getReason())); + logList.add(builder.build()); + break; + case TRANSMIT_APPROVE: + builder = ChangeRecordLog.builder(); + // 动作:审批流:撤回审批 + // 状态流转:[审批中] -> [审批到待提报|审批到决策中] + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + + builder.title(type.getTitle()); + builder.content(String.format(type.getContent(), userName, param.getTransmitTo(),param.getReason())); + logList.add(builder.build()); + break; + case FORBIDED: + builder = ChangeRecordLog.builder(); + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + // 动作:作废 + // 状态流转:[待提报|审核不通过的待提报|决策中|审核不通过的决策中|执行中|审批中]-->[审核不通过的决策中] + builder.action(type.name()); + builder.title(type.getTitle()); + builder.content(String.format(type.getContent(), userName)); + case APPROVE_COMPLETED: + builder = ChangeRecordLog.builder(); + changeRecord = this.changeRecordService.getById(visaId); + // 动作:整个审批通过 + // 状态流转:[审批中]-->[已完成] + builder.action(type.name()); + builder.title(String.format(type.getTitle(), changeRecord.getType().getDesc())); + builder.content(String.format(type.getContent(), changeRecord.getType().getDesc())); + default: throw new ServiceException("变签日志类型不匹配"); - } - this.addLog(builder.build()); + return logList; + } + + /** + * 构建附件 + */ + private String buildAttach(List attach) { + StringBuilder builder = new StringBuilder(); + attach.stream().forEach(item -> { + builder.append(item).append(","); + }); + String attachName = builder.toString(); + if (StringUtils.hasText(attachName)) { + return attachName.substring(0, attachName.length() - 1); + } + return ""; + } + + /** + * 构建操作人信息 + */ + public String buildUserName(Long personId, Long ouId, Long workspaceId) { + PageResp pageResp = organizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() + .personId(personId) + .organizationalUnitId(ouId) + .workspaceId(workspaceId) + .needs(ListNodeUserReq.Needs.builder().job(true).unit(true).build()).build()); + if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) { + return ""; + } + OrgNodeUserDTO orgNodeUserDTO = pageResp.getData().get(0); + return orgNodeUserDTO.getRealName() + "(" + orgNodeUserDTO.getJob().getName() + "-" + orgNodeUserDTO.getUnit().getName() + ")"; } /** @@ -77,10 +237,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl logList = this.lambdaQuery().eq(ChangeRecordLog::getVisaId, visaId) - .eq(ChangeRecordLog::getIsDelete, 0) - .orderByDesc(ChangeRecordLog::getCreateAt) - .list(); + List logList = this.findByCondition(VisaLogDto.builder().visaId(visaId).build()); if (CollectionUtils.isEmpty(logList)) { return Lists.newArrayList(); } @@ -89,6 +246,35 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl listByVisaIdType(Long visaId, VisaLogTypeEnum logType) { + if (Objects.isNull(visaId) || Objects.isNull(logType)) { + return Lists.newArrayList(); + } + List logList = this.findByCondition(VisaLogDto.builder().visaId(visaId).logType(logType).build()); + if (CollectionUtils.isEmpty(logList)) { + return Lists.newArrayList(); + } + return logList; + } + + /** + * 查询记录 + */ + private List findByCondition(VisaLogDto dto) { + if (Objects.isNull(dto) || Objects.isNull(dto.getVisaId())) { + return Lists.newArrayList(); + } + return this.lambdaQuery().eq(ChangeRecordLog::getVisaId, dto.getVisaId()) + .eq(Objects.nonNull(dto.getLogType()), ChangeRecordLog::getAction, dto.getLogType()) + .eq(ChangeRecordLog::getIsDelete, 0) + .orderByDesc(ChangeRecordLog::getUpdateAt) + .list(); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 76a9a0d3..33822c83 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -24,6 +24,7 @@ import cn.axzo.visa.server.domain.ChangeRecordBill; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaConfirmDto; +import cn.axzo.visa.server.dto.VisaLogParam; import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.visa.server.rpc.CooperateShipGateway; @@ -120,12 +121,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl, ChangeRecordLog> pair = this.buildPreStatusAndLog(request.getUpdateStatus(), request.getLogType()); + List preStatusList = this.buildPreStatusAndLog(request.getUpdateStatus()); // 2 更新状态 - this.updateVisaStatus(request.getVisaId(), pair.getKey(), request.getUpdateStatus()); + this.updateVisaStatus(request.getVisaId(),preStatusList, request.getUpdateStatus()); // 3 新增日志 - this.addLog(pair.getValue()); + this.addLogWhenChangeStatus(request, VisaLogParam.builder().newStatus(request.getUpdateStatus()).oldStatus(changeRecord.getStatus()).build()); return true; } @@ -147,92 +149,70 @@ public class ChangeRecordServiceImpl extends ServiceImpl logList = Lists.newArrayList(); + // 1 由[决策中|执行中] -> [审批中] 执行变更签证属性变更 + if (Objects.nonNull(param.getOldStatus()) && Objects.nonNull(param.getNewStatus()) + && VisaStatusEnum.isEditForm(param.getOldStatus()) + && param.getNewStatus().equals(VisaStatusEnum.APPROVING)) { + logList.addAll(changeRecordLogService.buildLogList(request.getVisaId(), VisaLogTypeEnum.EDIT_FORM, VisaLogParam.builder().build())); + } + // 2 状态变更,引发的操作日志记录 + if (Objects.nonNull(param.getNewStatus().getLogType())) { + logList.addAll(changeRecordLogService.buildLogList(request.getVisaId(), param.getNewStatus().getLogType(), VisaLogParam.builder().build())); + } + // 3 记录操作日志 + changeRecordLogService.batchAddLog(logList); } /** * 更新前置状态 + * visaId: 变更签证单id + * updateStatus: 更新成的状态 + * logType: 1、对于审批中的操作是必传,原因:审批流审批中,但是变更签证单的状态不变; + * 2、对于状态会变更的则不用传logType,比如执行/作废/发起审批,原因:他们会改变变更签证单的状态 */ - private Pair, ChangeRecordLog> buildPreStatusAndLog(VisaStatusEnum updateStatus, VisaLogTypeEnum logType) { + private List buildPreStatusAndLog(VisaStatusEnum updateStatus) { List preStatusList; - ChangeRecordLog.ChangeRecordLogBuilder builder = ChangeRecordLog.builder(); switch (updateStatus) { case DECIDING: - // 动作: 创建群聊洽商 - // 状态流转:[待提报|审核不通过的待提报] --> [决策中] - builder.action(updateStatus.getLogType().getAction()); - builder.title(updateStatus.getLogType().getTitle()); - builder.content(updateStatus.getLogType().getContent()); - + // 动作:洽商 + // 状态流转:[待提报|审核不通过的待提报]-->[决策中] preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE); break; case EXECUTING: // 动作:执行 // 状态流转:[决策中|审核不通过的待提报]-->[执行中] - builder.action(updateStatus.getLogType().getAction()); - builder.title(updateStatus.getLogType().getTitle()); - builder.content(updateStatus.getLogType().getContent()); - preStatusList = Lists.newArrayList(VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE); break; case APPROVING: // 动作:发起审批 // 状态流转:[待提报|审批不通过的待提报|决策中|审批不通过的决策中|执行中]-->[审批中] - builder.action(updateStatus.getLogType().getAction()); - builder.title(updateStatus.getLogType().getTitle()); - builder.content(updateStatus.getLogType().getContent()); - preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE, VisaStatusEnum.EXECUTING); break; case REPORT_FROM_APPROVE: - //TODO - // 动作:审批不通过(已驳回、已撤回、已中止) - // 状态流转:[审批中]-->[审核不通过的待提报] - builder.action(logType.getAction()); - builder.title(logType.getTitle()); - builder.content(logType.getContent()); - + // 动作:审批不通过(已驳回/已撤回/已中止) + // 状态流转:[待提报|审批不通过的待提报|决策中|审批不通过的决策中|执行中]-->[审批中] preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); break; case DECIDING_FROM_APPROVE: - //TODO - // 动作:审批不通过(已驳回、已撤回、已中止) - // 状态流转:[审批中]-->[审核不通过的决策中] - builder.action(logType.getAction()); - builder.title(logType.getTitle()); - builder.content(logType.getContent()); - preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); break; case FORBIDED: // 动作:作废 // 状态流转:[待提报|审核不通过的待提报|决策中|审核不通过的决策中|执行中|审批中]-->[审核不通过的决策中] - builder.action(updateStatus.getLogType().getAction()); - builder.title(updateStatus.getLogType().getTitle()); - builder.content(updateStatus.getLogType().getContent()); - preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE, VisaStatusEnum.DECIDING, VisaStatusEnum.DECIDING_FROM_APPROVE, VisaStatusEnum.EXECUTING, VisaStatusEnum.APPROVING); break; case COMPLETED: // 动作:整个审批通过 // 状态流转:[审批中]-->[已完成] - builder.action(updateStatus.getLogType().getAction()); - builder.title(updateStatus.getLogType().getTitle()); - builder.content(updateStatus.getLogType().getContent()); - preStatusList = Lists.newArrayList(VisaStatusEnum.APPROVING); break; default: throw new ServiceException("更新状态类型不匹配"); } - return Pair.of(preStatusList, builder.build()); + return preStatusList; } /** @@ -275,7 +255,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 23 Jan 2025 15:15:16 +0800 Subject: [PATCH 049/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 30 +++++++- visa/visa-server/pom.xml | 5 ++ .../controller/ChangeRecordController.java | 3 +- .../axzo/visa/server/domain/ChangeRecord.java | 4 +- .../axzo/visa/server/dto/VisaExportDto.java | 77 +++++++++++++++++++ .../server/service/ChangeRecordService.java | 14 ++++ .../service/impl/ChangeRecordServiceImpl.java | 57 ++++++++++---- 7 files changed, 169 insertions(+), 21 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index ef8bb2b5..d625da49 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -116,10 +116,17 @@ public class VisaChangeTempCreateReq { private Map> relationOrderMap; /** - * 附件 + * 附件,json列表 + *

+ * { + * "fileUrl": "http://www.baidu.com/img1.jpeg", + * "fileKey": "jskjksjgnaqkjkgag", + * "fileName": "附件1.jpg" + * } + *

*/ @Size(max = 30, message = "最多支持上传30个附件,已超出请重新选择") - private List attach; + private List attach; private Long operatorOuId; @@ -168,9 +175,24 @@ public class VisaChangeTempCreateReq { private Integer type; /** - * 图片或图纸 + * 图片或图纸url */ - private String imgUrl; + private String fileUrl; + + /** + * 图片或图纸key + */ + private String fileKey; + + /** + * 图片或图纸名称 + */ + private String fileName; + + /** + * 图纸批注id,{@code type}为2时使用 + */ + private Long annotationId; /** * 内容说明 diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 690c9973..bbd598bc 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -93,5 +93,10 @@ apollo-api 2.0.0-SNAPSHOT + + cn.axzo.basics + basics-domainless-api + 2.0.0-SNAPSHOT + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java index 391b203c..a3e313df 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java @@ -78,7 +78,8 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiResult exportVisaChangeRecord(VisaChangeExportReq req) { - return null; + changeRecordService.export(req); + return ApiResult.ok(); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 7b245a46..8b82b716 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -30,7 +30,7 @@ import java.util.Date; @AllArgsConstructor @Builder @TableName(value = "visa_change_record", autoResultMap = true) -public class ChangeRecord extends BaseEntity { +public class ChangeRecord extends BaseEntity { /** * 单据号 @@ -60,7 +60,7 @@ public class ChangeRecord extends BaseEntity { * 区域集合 */ - @TableField(value = "relation_area",typeHandler = FastjsonTypeHandler.class) + @TableField(value = "relation_area", typeHandler = FastjsonTypeHandler.class) private JSONObject relationArea; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java new file mode 100644 index 00000000..4c34a97b --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java @@ -0,0 +1,77 @@ +package cn.axzo.visa.server.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/1/23 10:19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaExportDto { + + + /** + * 单据号 + */ + @ExcelProperty("单号") + private String no; + + /** + * 单据类型 + */ + @ExcelProperty("单据类型") + private String type; + + /** + * 状态 + */ + @ExcelProperty("单据状态") + private String status; + + /** + * 主题 + */ + @ExcelProperty("主题") + private String topic; + + /** + * 工程 + */ + @ExcelProperty("所属工程") + private String relationProject; + + /** + * 提出时间 + */ + @ExcelProperty("提出时间") + private Date happenTime; + + /** + * 有符号的变更金额 + */ + @ExcelProperty("金额变化") + private BigDecimal amountChange; + + /** + * 最终审批时间 + */ + @ExcelProperty("审批通过时间") + private Date approvalCompleteTime; + + /** + * 发起人 + */ + @ExcelProperty("发起人") + private String initiator; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 8478b1a2..136afbab 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaInitiatorListReq; @@ -74,5 +75,18 @@ public interface ChangeRecordService { */ PageData page(VisaChangePageSearchReq req); + /** + * 查询发起人列表 + * + * @param req 项目Id + * @return 发起人列表 + */ List listInitiator(VisaInitiatorListReq req); + + /** + * 导出 + * + * @param req 筛查条件和导出字段 + */ + void export(VisaChangeExportReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index a8b68e5d..db2d942c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,6 +8,8 @@ import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.basics.report.api.ReportServiceSDK; +import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; @@ -15,6 +17,7 @@ import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.visa.api.enums.VisaChangeFieldEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; @@ -22,6 +25,7 @@ import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.visa.api.request.VisaChangeExportReq; import cn.axzo.visa.api.request.VisaChangePageSearchReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.api.request.VisaInitiatorListReq; @@ -52,6 +56,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -110,6 +115,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl page = lambdaQuery() - .eq(NumberUtil.isPositiveNumber(req.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, req.getWorkspaceId()) - .eq(Objects.nonNull(req.getType()), ChangeRecord::getType, req.getType()) - .eq(StringUtils.hasText(req.getKeyword()), ChangeRecord::getNo, req.getKeyword()) - .or(StringUtils.hasText(req.getKeyword()), wrapper -> wrapper.like(ChangeRecord::getNo, req.getKeyword())) - .eq(NumberUtil.isPositiveNumber(req.getProjectId()), ChangeRecord::getRelationProject, req.getProjectId()) - .in(CollectionUtils.isNotEmpty(req.getInitiators()), ChangeRecord::getCreateBy, req.getInitiators()) - .in(CollectionUtils.isNotEmpty(req.getStatuses()), ChangeRecord::getStatus, req.getStatuses()) - .between(CollectionUtils.isNotEmpty(req.getAmountChange()), ChangeRecord::getAmountChange, req.getAmountChange().get(0), req.getAmountChange().get(1)) - .between(CollectionUtils.isNotEmpty(req.getHappenTime()), ChangeRecord::getHappenTime, req.getHappenTime().get(0), req.getHappenTime().get(1)) - .between(CollectionUtils.isNotEmpty(req.getApproveCompletedDate()), ChangeRecord::getApprovalCompleteTime, req.getApproveCompletedDate().get(0), req.getApproveCompletedDate().get(1)) - .eq(CollectionUtils.isNotEmpty(req.getApproveCompletedDate()), ChangeRecord::getStatus, VisaStatusEnum.COMPLETED) - .page(new Page<>(req.getPage(), req.getPageSize())); + Page page = getFilter(req).page(new Page<>(req.getPage(), req.getPageSize())); return PageData.builder() .page(Math.toIntExact(page.getCurrent())) .pageSize(Math.toIntExact(page.getSize())) @@ -440,6 +436,39 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields = req.getFields(); + /*获取数据*/ + List changeRecordList = getFilter(filter).list(); + AssertUtil.isTrue(CollUtil.isNotEmpty(changeRecordList), ""); + /*数据转换*/ + /*导出文excel并上传至云*/ + String scene = "visa"; + String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss")); + SheetWrapper sheetWrapper = new SheetWrapper(); + sheetWrapper.setTitle("变更签证单"); +// sheetWrapper + reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, ); + } + + private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter) { + return lambdaQuery() + .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) + .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) + .eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword()) + .or(StringUtils.hasText(filter.getKeyword()), wrapper -> wrapper.like(ChangeRecord::getTopic, filter.getKeyword())) + .eq(NumberUtil.isPositiveNumber(filter.getProjectId()), ChangeRecord::getRelationProject, filter.getProjectId()) + .in(CollectionUtils.isNotEmpty(filter.getInitiators()), ChangeRecord::getCreateBy, filter.getInitiators()) + .in(CollectionUtils.isNotEmpty(filter.getStatuses()), ChangeRecord::getStatus, filter.getStatuses()) + .between(CollectionUtils.isNotEmpty(filter.getAmountChange()), ChangeRecord::getAmountChange, filter.getAmountChange().get(0), filter.getAmountChange().get(1)) + .between(CollectionUtils.isNotEmpty(filter.getHappenTime()), ChangeRecord::getHappenTime, filter.getHappenTime().get(0), filter.getHappenTime().get(1)) + .between(CollectionUtils.isNotEmpty(filter.getApproveCompletedDate()), ChangeRecord::getApprovalCompleteTime, filter.getApproveCompletedDate().get(0), filter.getApproveCompletedDate().get(1)) + .eq(CollectionUtils.isNotEmpty(filter.getApproveCompletedDate()), ChangeRecord::getStatus, VisaStatusEnum.COMPLETED) + .orderByDesc(ChangeRecord::getId); + } + private Map getPersonBriefInfoMap(Long workspaceId, List initiatorPersonIds) { OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() .workspaceId(workspaceId) @@ -582,7 +611,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.isTrue(1 == c.getType() || 2 == c.getType(), "请选择发生内容类型"); - AssertUtil.isFalse(!StringUtils.hasText(c.getText()) && !StringUtils.hasText(c.getImgUrl()), "存在为空的发生内容及说明,请填写"); + AssertUtil.isFalse(!StringUtils.hasText(c.getText()) && !StringUtils.hasText(c.getFileUrl()), "存在为空的发生内容及说明,请填写"); }); } // 相关单位及人员存在性 From 7cd4dcaab10df7efb126972c20aff8fc0683ff1b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 23 Jan 2025 15:16:05 +0800 Subject: [PATCH 050/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index db2d942c..539846ee 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -450,7 +450,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { From 40192d8b6bd0fe7ddc9f208c7051eeac5093377d Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 Jan 2025 15:56:08 +0800 Subject: [PATCH 051/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=E4=B8=8E?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/ChangeStatusRequest.java | 6 +++++ .../visa/server/dto/AddVisaLogContext.java | 27 +++++++++++++++++++ .../service/ChangeRecordLogService.java | 5 ++++ .../axzo/visa/server/service/VisaHelper.java | 27 +++++++++++++++++-- .../impl/ChangeRecordLogServiceImpl.java | 12 +++++++++ .../service/impl/ChangeRecordServiceImpl.java | 10 ++++--- 6 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java index 51f661fd..5fb9c8d6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; import java.util.Objects; /** @@ -57,6 +58,11 @@ public class ChangeStatusRequest { */ private VisaLogTypeEnum logType; + /** + * 新的金额,只有在[决策中|执行中] -> [审批中],编辑表单是才用,操作日志记录金额变更 + */ + private BigDecimal newAmountChange; + public void check() { if (Objects.nonNull(logType) && !VisaLogTypeEnum.isApproveNotAgree(logType)) { throw new ServiceException("不是审核不通过日志"); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java new file mode 100644 index 00000000..887210f6 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java @@ -0,0 +1,27 @@ +package cn.axzo.visa.server.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AddVisaLogContext { + + /** + * 人员Id + */ + private Long personId; + /** + * 项目Id + */ + private Long workspaceId; + /** + * 单位id + */ + private Long ouId; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index 91a4f8b4..c91e5f91 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -24,6 +24,11 @@ public interface ChangeRecordLogService { */ void batchAddLog(List logList); + /** + * 增加操作日志 + */ + void batchAddLog(Long visaId, VisaLogTypeEnum type, VisaLogParam param); + /** * 构建日志集合 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java index d0e54665..be443831 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java @@ -1,7 +1,10 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.server.dto.AddVisaLogContext; +import cn.axzo.visa.server.dto.VisaLogParam; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -20,11 +23,31 @@ public class VisaHelper { @Resource private ChangeRecordLogService changeRecordLogService; - public void addLog(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus) { + @Resource + private ChangeRecordService changeRecordService; + + /** + * 状态更新与添加日志,此时新增记录时状态没有维护 + */ + public void addLogAndChangeStatus(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus, AddVisaLogContext context) { //第一次来新增,操作日志:只有状态变更,没有属性变更日志 if (Objects.isNull(oldReq) && Objects.nonNull(newReq)) { -// changeRecordLogService.addLog(newReq.getId(), updateStatus.getLogType(), ); + changeRecordLogService.buildLogList(newReq.getId(), updateStatus.getLogType(), VisaLogParam.builder().build()); } + + //编辑时 + if (Objects.nonNull(oldReq) && Objects.nonNull(newReq)) { + changeRecordService.changeStatus(ChangeStatusRequest.builder() + .visaId(newReq.getId()) + .updateStatus(updateStatus) + .personId(context.getPersonId()) + .ouId(context.getOuId()) + .workspaceId(context.getWorkspaceId()) + .newAmountChange(newReq.getAmountChange()) + //TODO 附件 + .build()); + } + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index abee3181..92394a67 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -62,6 +62,18 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl logList = this.buildLogList(visaId, type, param); + if (CollectionUtils.isEmpty(logList)) { + return; + } + this.saveOrUpdateBatch(logList); + } + @Override public List buildLogList(Long visaId, VisaLogTypeEnum type, VisaLogParam param) { List logList = Lists.newArrayList(); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index e34404f2..5f8e89c1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -144,7 +144,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 23 Jan 2025 17:01:38 +0800 Subject: [PATCH 052/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85-=E9=99=84=E4=BB=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/ChangeStatusRequest.java | 5 +++ .../api/response/VisaDetailByIdResponse.java | 38 +++++++++++++++- ...LogContext.java => VisaAddLogContext.java} | 2 +- .../cn/axzo/visa/server/dto/VisaLogParam.java | 45 +++++++++++++++++++ .../axzo/visa/server/service/VisaHelper.java | 6 +-- .../service/impl/ChangeRecordServiceImpl.java | 26 ++++++++++- 6 files changed, 116 insertions(+), 6 deletions(-) rename visa/visa-server/src/main/java/cn/axzo/visa/server/dto/{AddVisaLogContext.java => VisaAddLogContext.java} (91%) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java index 5fb9c8d6..7f44fa8b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java @@ -3,6 +3,7 @@ package cn.axzo.visa.api.request; import cn.axzo.framework.domain.ServiceException; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; +import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -10,6 +11,7 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.util.List; import java.util.Objects; /** @@ -63,6 +65,9 @@ public class ChangeStatusRequest { */ private BigDecimal newAmountChange; + private List attach; + + public void check() { if (Objects.nonNull(logType) && !VisaLogTypeEnum.isApproveNotAgree(logType)) { throw new ServiceException("不是审核不通过日志"); diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java index 776150ba..6b8d2f0a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java @@ -5,10 +5,13 @@ import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.commons.collections.CollectionUtils; import java.util.Date; import java.util.List; @@ -120,7 +123,7 @@ public class VisaDetailByIdResponse { /** * 附件 */ - private List attach; + private List attach; /** * 按钮 @@ -428,4 +431,37 @@ public class VisaDetailByIdResponse { private Date happenTime; } + + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class VisaUploadFile { + /** + * 文件Url + */ + private String fileUrl; + /** + * 文件key + */ + private String fileKey; + /** + * 文件名称 + */ + private String fileName; + + /** + * 创建集合 + */ + public static List createListByJson(List jsonObjectList) { + if (CollectionUtils.isEmpty(jsonObjectList)) { + return Lists.newArrayList(); + } + List fileDtoList = Lists.newArrayList(); + for(JSONObject json : jsonObjectList) { + fileDtoList.add(json.toJavaObject(VisaUploadFile.class)); + } + return fileDtoList; + } + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java similarity index 91% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java rename to visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java index 887210f6..2caeb80b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/AddVisaLogContext.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java @@ -9,7 +9,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class AddVisaLogContext { +public class VisaAddLogContext { /** * 人员Id diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java index 7ca8ee4d..5a3cd7ea 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java @@ -2,14 +2,21 @@ package cn.axzo.visa.server.dto; import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import java.math.BigDecimal; +import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; /** * @author xudawei @@ -79,4 +86,42 @@ public class VisaLogParam { */ private VisaStatusEnum oldStatus; + + /** + * 获取删除附件信息 + */ + public static List deleteAttach(List oldAttach, List newAttach) { + return fetchChangeAttach(oldAttach, newAttach); + } + + /** + * 获取上传的附件信息 + */ + public static List uploadAttach(List newAttach, List oldAttach) { + return fetchChangeAttach(newAttach, oldAttach); + } + /** + * 获取变动的附件信息 + * 计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素,例如: + * subtractToList([1,2,3,4],[2,3,4,5]) -》 [1] + */ + private static List fetchChangeAttach(List compareFir, List compareSec) { + if (CollectionUtils.isEmpty(compareFir)) { + return Lists.newArrayList(); + } + List oldFileDtoList = VisaDetailByIdResponse.VisaUploadFile.createListByJson(compareFir); + + if (CollectionUtils.isEmpty(compareSec)) { + return oldFileDtoList.stream().map(VisaDetailByIdResponse.VisaUploadFile::getFileName).collect(Collectors.toList()); + } + List newFileDtoList = VisaDetailByIdResponse.VisaUploadFile.createListByJson(compareSec); + + Collection substractList = CollUtil.subtractToList(oldFileDtoList, newFileDtoList); + if (CollectionUtils.isEmpty(substractList)) { + return Lists.newArrayList(); + } + return substractList.stream().map(VisaDetailByIdResponse.VisaUploadFile::getFileName).collect(Collectors.toList()); + } + + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java index be443831..9560df98 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java @@ -3,7 +3,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.server.dto.AddVisaLogContext; +import cn.axzo.visa.server.dto.VisaAddLogContext; import cn.axzo.visa.server.dto.VisaLogParam; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -29,7 +29,7 @@ public class VisaHelper { /** * 状态更新与添加日志,此时新增记录时状态没有维护 */ - public void addLogAndChangeStatus(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus, AddVisaLogContext context) { + public void addLogAndChangeStatus(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus, VisaAddLogContext context) { //第一次来新增,操作日志:只有状态变更,没有属性变更日志 if (Objects.isNull(oldReq) && Objects.nonNull(newReq)) { changeRecordLogService.buildLogList(newReq.getId(), updateStatus.getLogType(), VisaLogParam.builder().build()); @@ -44,7 +44,7 @@ public class VisaHelper { .ouId(context.getOuId()) .workspaceId(context.getWorkspaceId()) .newAmountChange(newReq.getAmountChange()) - //TODO 附件 + .attach(newReq.getAttach()) .build()); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index f522cd16..dfe0b6c2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -156,7 +156,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildAttachUploadFile(Long visaId) { + if (Objects.isNull(visaId)) { + return Lists.newArrayList(); + } + List attachList = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.ATTACHMENT.name()); + if (CollectionUtils.isEmpty(attachList)) { + return Lists.newArrayList(); + } + List attachContentList = attachList.stream().map(ChangeRecordRelation::getContent).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(attachContentList)) { + return Lists.newArrayList(); + } + return attachContentList.stream() + .filter(item -> StringUtils.hasText(item)) + .map(item -> JSON.parseObject(item, VisaDetailByIdResponse.VisaUploadFile.class)).collect(Collectors.toList()); } /** From 33229ef5386011f497d828f9d0d8cd352ccaf6bf Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 5 Feb 2025 10:37:21 +0800 Subject: [PATCH 053/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=88=96=E8=80=85=E7=BC=96=E8=BE=91=E5=8F=98=E6=9B=B4=E7=AD=BE?= =?UTF-8?q?=E8=AF=81-=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaRelationFieldEnum.java | 13 ++++++++ .../visa/api/request/ChangeStatusRequest.java | 14 ++++++++- .../server/domain/ChangeRecordRelation.java | 2 +- .../visa/server/dto/VisaAddLogContext.java | 25 ++++++++++++++++ .../axzo/visa/server/service/VisaHelper.java | 30 ++++++++++--------- .../service/impl/ChangeRecordServiceImpl.java | 6 ++-- 6 files changed, 71 insertions(+), 19 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java index 0def1770..0c49a1d0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java @@ -3,6 +3,7 @@ package cn.axzo.visa.api.enums; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import org.apache.commons.lang3.StringUtils; /** * 变洽签业务的 relation 表数据行的类型枚举 @@ -23,4 +24,16 @@ public enum VisaRelationFieldEnum { ORDER("order", "单据"); private final String code; private final String desc; + + /** + * 是否附件类型 + * @param name 枚举的名称 + * @return true:是附件类型;false:不是附件类型 + */ + public static boolean isAttach(String name) { + if (StringUtils.isBlank(name)) { + return false; + } + return VisaRelationFieldEnum.ATTACHMENT.name().equals(name); + } } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java index 7f44fa8b..7ce03b63 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java @@ -65,7 +65,19 @@ public class ChangeStatusRequest { */ private BigDecimal newAmountChange; - private List attach; + /** + * 原金额 + */ + private BigDecimal oldAmountChange; + + /** + * 新的附件 + */ + private List newAttach; + /** + * 原的附件 + */ + private List oldAttach; public void check() { diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java index 3d09f71b..dc9494b2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java @@ -57,7 +57,7 @@ public class ChangeRecordRelation extends BaseEntity { * 内容描述 */ @TableField(value = "content_ext") - private String content_ext; + private String contentExt; /** * 创建人id diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java index 2caeb80b..9163b323 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java @@ -1,9 +1,18 @@ package cn.axzo.visa.server.dto; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.visa.server.domain.ChangeRecordRelation; +import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; + +import java.util.List; +import java.util.stream.Collectors; @Builder @Data @@ -24,4 +33,20 @@ public class VisaAddLogContext { */ private Long ouId; + private ChangeRecord changeRecord; + + private List relationList; + + /** + * 获取附件集合 + */ + public List getAttachList() { + if (CollectionUtils.isEmpty(relationList)) { + return Lists.newArrayList(); + } + return relationList.stream() + .filter(item -> VisaRelationFieldEnum.isAttach(item.getVarName())) + .map(item -> JSONObject.parseObject(item.getContent())).collect(Collectors.toList()); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java index 9560df98..1dac598c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java @@ -1,8 +1,6 @@ package cn.axzo.visa.server.service; -import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.visa.server.dto.VisaAddLogContext; import cn.axzo.visa.server.dto.VisaLogParam; import lombok.extern.slf4j.Slf4j; @@ -29,22 +27,26 @@ public class VisaHelper { /** * 状态更新与添加日志,此时新增记录时状态没有维护 */ - public void addLogAndChangeStatus(VisaChangeTempCreateReq oldReq, VisaChangeTempCreateReq newReq, VisaStatusEnum updateStatus, VisaAddLogContext context) { - //第一次来新增,操作日志:只有状态变更,没有属性变更日志 - if (Objects.isNull(oldReq) && Objects.nonNull(newReq)) { - changeRecordLogService.buildLogList(newReq.getId(), updateStatus.getLogType(), VisaLogParam.builder().build()); + public void addLogAndChangeStatus(VisaAddLogContext oldContext, VisaAddLogContext newContext) { + //oldContext为空,newContext不为空,则是新增; + // 操作日志:只有状态变更,没有属性变更日志 + if (Objects.isNull(oldContext) && Objects.nonNull(newContext)) { + changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), newContext.getChangeRecord().getStatus().getLogType(), VisaLogParam.builder().build()); + return; } //编辑时 - if (Objects.nonNull(oldReq) && Objects.nonNull(newReq)) { + if (Objects.nonNull(oldContext) && Objects.nonNull(newContext)) { changeRecordService.changeStatus(ChangeStatusRequest.builder() - .visaId(newReq.getId()) - .updateStatus(updateStatus) - .personId(context.getPersonId()) - .ouId(context.getOuId()) - .workspaceId(context.getWorkspaceId()) - .newAmountChange(newReq.getAmountChange()) - .attach(newReq.getAttach()) + .visaId(newContext.getChangeRecord().getId()) + .updateStatus(newContext.getChangeRecord().getStatus()) + .personId(newContext.getPersonId()) + .ouId(newContext.getOuId()) + .workspaceId(newContext.getWorkspaceId()) + .newAmountChange(newContext.getChangeRecord().getAmountChange()) + .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) + .newAttach(newContext.getAttachList()) + .oldAttach(oldContext.getAttachList()) .build()); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index dfe0b6c2..dc1c0cd5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -156,9 +156,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 5 Feb 2025 11:23:29 +0800 Subject: [PATCH 054/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=88=96=E8=80=85=E7=BC=96=E8=BE=91=E5=8F=98=E6=9B=B4=E7=AD=BE?= =?UTF-8?q?=E8=AF=81-=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java | 9 +++++++++ .../java/cn/axzo/visa/server/dto/VisaAddLogContext.java | 3 +++ .../cn/axzo/visa/server/service/ChangeRecordService.java | 6 ++++++ .../java/cn/axzo/visa/server/service/VisaHelper.java | 6 ++++-- .../server/service/impl/ChangeRecordServiceImpl.java | 8 ++++++++ 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java index 5c134bd6..d9422d9f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java @@ -5,6 +5,8 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; +import java.util.List; import java.util.Objects; import java.util.Set; @@ -47,5 +49,12 @@ public enum VisaStatusEnum { return editFormStatus.contains(status); } + /** + * 获取所有的状态枚举 + */ + public static List allStatus() { + return Arrays.asList(VisaStatusEnum.values()); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java index 9163b323..010f2e22 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.dto; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordRelation; import com.alibaba.fastjson.JSONObject; @@ -33,6 +34,8 @@ public class VisaAddLogContext { */ private Long ouId; + private VisaStatusEnum status; + private ChangeRecord changeRecord; private List relationList; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java index 136afbab..816d289f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service; import cn.axzo.framework.domain.web.result.PageData; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; @@ -27,6 +28,11 @@ public interface ChangeRecordService { */ Boolean changeStatus(ChangeStatusRequest request); + /** + * 更新DB变签状态 + */ + boolean changeDbStatus(Long visaId, List statusList, VisaStatusEnum updateStatus); + /** * 通过变更签证Id获取Entity * diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java index 1dac598c..fb07010b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java @@ -1,5 +1,6 @@ package cn.axzo.visa.server.service; +import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.request.ChangeStatusRequest; import cn.axzo.visa.server.dto.VisaAddLogContext; import cn.axzo.visa.server.dto.VisaLogParam; @@ -31,7 +32,8 @@ public class VisaHelper { //oldContext为空,newContext不为空,则是新增; // 操作日志:只有状态变更,没有属性变更日志 if (Objects.isNull(oldContext) && Objects.nonNull(newContext)) { - changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), newContext.getChangeRecord().getStatus().getLogType(), VisaLogParam.builder().build()); + changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), newContext.getStatus().getLogType(), VisaLogParam.builder().build()); + changeRecordService.changeDbStatus(newContext.getChangeRecord().getId(), VisaStatusEnum.allStatus(), newContext.getStatus()); return; } @@ -39,7 +41,7 @@ public class VisaHelper { if (Objects.nonNull(oldContext) && Objects.nonNull(newContext)) { changeRecordService.changeStatus(ChangeStatusRequest.builder() .visaId(newContext.getChangeRecord().getId()) - .updateStatus(newContext.getChangeRecord().getStatus()) + .updateStatus(newContext.getStatus()) .personId(newContext.getPersonId()) .ouId(newContext.getOuId()) .workspaceId(newContext.getWorkspaceId()) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index dc1c0cd5..a99fb05d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -162,6 +162,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl statusList, VisaStatusEnum updateStatus) { + return this.updateVisaStatus(visaId, statusList,updateStatus); + } + /** * 更新变签状态 */ From f629fe0d2915597926b20536cfb609b94a583954 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 5 Feb 2025 13:40:34 +0800 Subject: [PATCH 055/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=BF=9D=E6=8C=81=E5=8F=98=E6=B4=BD=E7=AD=BE=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/visa/api/constant/VisaConstant.java | 9 +- .../request/VisaChangeApproveCreateReq.java | 6 ++ .../ProcessInstanceAllEventHandler.java | 11 +-- ...nagerGateway.java => WorkflowGateway.java} | 13 ++- .../service/ChangeRecordRelationService.java | 2 + .../impl/ChangeRecordConfirmServiceImpl.java | 6 +- .../impl/ChangeRecordRelationServiceImpl.java | 8 +- .../service/impl/ChangeRecordServiceImpl.java | 96 ++++++++++++++++--- 8 files changed, 127 insertions(+), 24 deletions(-) rename visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/{WorkflowManagerGateway.java => WorkflowGateway.java} (59%) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java index 92625c24..06064f85 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java @@ -6,6 +6,11 @@ package cn.axzo.visa.api.constant; * @author wangli * @since 2025-01-14 17:20 */ -public class VisaConstant { - public static final String BASIC_FEIGN_PACKAGE = "cn.axzo.visa.api"; +public interface VisaConstant { + String BASIC_FEIGN_PACKAGE = "cn.axzo.visa.api"; + + /** + * 用于在流程作用域外识别变洽签的单据类型 + */ + String WORKFLOW_VAR_VISA_TYPE_KEY = "visa-type"; } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java index 3c6ced04..1d3fc79e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import javax.validation.constraints.NotBlank; import java.util.List; /** @@ -21,6 +22,11 @@ import java.util.List; @AllArgsConstructor public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { + /** + * 需要设置审批人的节点标识 + */ + @NotBlank(message = "待设置审批人的节点为空") + private String activityId; /** * 审批人信息 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index cec33695..5caf0f33 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -10,6 +10,7 @@ import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; +import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; @@ -45,8 +46,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onStarted(ProcessInstanceDTO dto) { BpmnTaskDelegateAssigner initiator = dto.getInitiator(); - // TODO 创建审批时,需要传入单据类型,此处需要使用 - Object visaType = dto.getVariables().getOrDefault("", ""); + String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) @@ -60,8 +60,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onCompleted(ProcessInstanceDTO dto) { - // TODO 创建审批时,需要传入单据类型,此处需要使用 - Object visaType = dto.getVariables().getOrDefault("", ""); + String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); + ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) @@ -79,8 +79,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onCancelled(ProcessInstanceDTO dto) { BpmnTaskDelegateAssigner initiator = dto.getInitiator(); - // TODO 创建审批时,需要传入单据类型,此处需要使用 - Object visaType = dto.getVariables().getOrDefault("", ""); + String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java similarity index 59% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java rename to visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java index 493a5302..5eca22b3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowManagerGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java @@ -1,7 +1,11 @@ package cn.axzo.visa.server.rpc; +import cn.axzo.pokonyan.util.RpcUtil; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; +import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; +import cn.axzo.workflow.starter.api.WorkflowCoreService; import cn.axzo.workflow.starter.api.WorkflowManageService; +import cn.azxo.framework.common.logger.MethodAroundLog; import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -14,10 +18,17 @@ import org.springframework.stereotype.Service; @Slf4j @Service @RequiredArgsConstructor -public class WorkflowManagerGateway { +public class WorkflowGateway { + private final WorkflowCoreService workflowCoreService; private final WorkflowManageService workflowManageService; + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "创建流程实例") + public String processInstanceCreate(BpmnProcessInstanceCreateDTO dto) { + return workflowCoreService.createProcessInstance(dto); + } + + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "查询某个人是否是指定流程的审批人") public Boolean checkInstanceApprover(BpmnProcessInstanceCheckApproverDTO dto) { try { log.info("WorkflowManagerGateway checkInstanceApprover,param:{}", JSON.toJSONString(dto)); diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index db3e1ab1..bc176231 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -15,6 +15,8 @@ import java.util.List; */ public interface ChangeRecordRelationService { + boolean save(ChangeRecordRelation processRelation); + boolean save(VisaRelationFieldEnum type, VisaChangeTempCreateReq req, ChangeRecord changeRecord); /** diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 7eedf8de..3b94f7c1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -13,7 +13,7 @@ import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.visa.server.rpc.ProfileGateway; -import cn.axzo.visa.server.rpc.WorkflowManagerGateway; +import cn.axzo.visa.server.rpc.WorkflowGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; @@ -51,7 +51,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordRelationService { + @Override + @Transactional(rollbackFor = Exception.class) + public boolean save(ChangeRecordRelation entity) { + return super.save(entity); + } + /** * 保存 * @@ -50,7 +56,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl preStatusList = this.buildPreStatusAndLog(request.getUpdateStatus()); // 2 更新状态 - this.updateVisaStatus(request.getVisaId(),preStatusList, request.getUpdateStatus()); + this.updateVisaStatus(request.getVisaId(), preStatusList, request.getUpdateStatus()); // 3 新增日志 this.addLogWhenChangeStatus(request, VisaLogParam.builder() - .newStatus(request.getUpdateStatus()) - .oldStatus(changeRecord.getStatus()) - .newAmountChange(request.getNewAmountChange()) - .oldAmountChange(request.getOldAmountChange()) - .uploadAttach(VisaLogParam.uploadAttach(request.getNewAttach(), request.getOldAttach())) - .deleteAttach(VisaLogParam.deleteAttach(request.getOldAttach(), request.getNewAttach())).build()); + .newStatus(request.getUpdateStatus()) + .oldStatus(changeRecord.getStatus()) + .newAmountChange(request.getNewAmountChange()) + .oldAmountChange(request.getOldAmountChange()) + .uploadAttach(VisaLogParam.uploadAttach(request.getNewAttach(), request.getOldAttach())) + .deleteAttach(VisaLogParam.deleteAttach(request.getOldAttach(), request.getNewAttach())).build()); return true; } @@ -210,7 +220,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildPreStatusAndLog(VisaStatusEnum updateStatus) { List preStatusList; @@ -275,7 +285,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl variables = new HashMap<>(); + variables.put(WORKFLOW_VAR_VISA_TYPE_KEY, req.getType().getCode()); + processDto.setVariables(variables); + processDto.setInitiator(BpmnTaskDelegateAssigner.builder() + .tenantId(String.valueOf(req.getRelationWorkspaceId())) + .ouId(String.valueOf(req.getOperatorOuId())) + .personId(String.valueOf(req.getOperatorPersonId())) + .build()); + processDto.setTenantId(String.valueOf(req.getRelationWorkspaceId())); + + Map formVariables = new HashMap<>(); + // TODO 传递表单数据 + processDto.setStartFormVariables(formVariables); + processDto.setProcessDefinitionKey(req.getType().getProcessDefinitionKey()); + String processInstanceId = workflowGateway.processInstanceCreate(processDto); + + // 更新主表中的审批字段,记录变量表的审批的信息 + insertApprovalInfo(visaId, processInstanceId); + return visaId; } + /** + * 更新 + * @param visaId + * @param processInstanceId + */ + private void insertApprovalInfo(Long visaId, String processInstanceId) { + // 主表更新审批信息 + ChangeRecord changeRecord = new ChangeRecord(); + changeRecord.setId(visaId); + changeRecord.setApprovalId(processInstanceId); + changeRecord.setApprovalStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); + updateById(changeRecord); + + // 设置关联表的审批信息 + ChangeRecordRelation processRelation = new ChangeRecordRelation(); + processRelation.setVisaId(visaId); + processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.getCode()); + processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType()); + processRelation.setContent(processInstanceId); + processRelation.setContentExt(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); + changeRecordRelationService.save(processRelation); + } + + private List buildApprovers(List approvePersonInfoList) { + List approvers = Lists.newArrayList(); + if (CollectionUtils.isEmpty(approvePersonInfoList)) { + return approvers; + } + + approvers.addAll(approvePersonInfoList.stream() + .flatMap(info -> info.getPersonIdList().stream() + .map(personId -> BpmnTaskDelegateAssigner.builder() + .personId(String.valueOf(personId)) + .tenantId(String.valueOf(info.getWorkspaceId())) + .ouId(String.valueOf(info.getUnitId())) + .build())) + .collect(Collectors.toList()) + ); + return approvers; + } + /** * 分页查询 * From d75b6fca45249a836b2230a357ba6e3a7e3f8f87 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 5 Feb 2025 13:44:42 +0800 Subject: [PATCH 056/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 5d5d053b..90f7a16f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -9,6 +9,7 @@ import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaRelationDto; import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.visa.server.service.ChangeRecordRelationService; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -55,8 +56,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Wed, 5 Feb 2025 15:02:04 +0800 Subject: [PATCH 057/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=B5=81=E7=A8=8B=E6=97=B6=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=88=9D=E5=A7=8B=E8=A1=A8=E5=8D=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-api/pom.xml | 5 ++ .../axzo/visa/api/constant/VisaConstant.java | 32 ++++++++++++ .../api/request/VisaChangeTempCreateReq.java | 2 +- .../service/impl/ChangeRecordServiceImpl.java | 52 ++++++++++++++++++- 4 files changed, 89 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/pom.xml b/visa/visa-api/pom.xml index 4159bd07..f61c301c 100644 --- a/visa/visa-api/pom.xml +++ b/visa/visa-api/pom.xml @@ -40,6 +40,11 @@ maokai-common ${project.version} + + cn.axzo.workflow + workflow-engine-common + ${workflow-engine.version} + diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java index 06064f85..c57691d7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java @@ -13,4 +13,36 @@ public interface VisaConstant { * 用于在流程作用域外识别变洽签的单据类型 */ String WORKFLOW_VAR_VISA_TYPE_KEY = "visa-type"; + /** + * 用于发送待办的变量名 + */ + String WORKFLOW_PENDING_TOPIC = "theme"; + // **************** 业务传入审批的表单项组件的唯一的 KEY ***************** + // 单号 + String FORM_FIELD_NO = "no"; + // 提出时间 + String FORM_FIELD_HAPPEN_TIME = "happenTime"; + // 主题 + String FORM_FIELD_TOPIC = "topic"; + // 关联工程 + String FORM_FIELD_RELATION_PROJECT = "relationProject"; + // 关联专业 + String FORM_FIELD_RELATION_PROFESSIONAL = "relationProfessional"; + // 发生原因 + String FORM_FIELD_REASON = "reason"; + // 发生区域 + String FORM_FIELD_RELATION_AREA = "relationArea"; + // 发生内容 + String FORM_FIELD_CONTEXT_DESCRIPTION = "contextDescription"; + // 变更金额 + String FORM_FIELD_AMOUNT_CHANGE = "amountChange"; + // 关联的任务单单据 + String FORM_FIELD_RELATION_TASK_ORDER = "relationTaskOrders"; + // 关联的整改单单据 + String FORM_FIELD_RELATION_RECTIFICATION_ORDER = "relationRectificationOrders"; + // 关联的变更单单据 + String FORM_FIELD_RELATION_VISA_ORDER = "relationVisaOrders"; + // 附件 + String FORM_FIELD_ATTACH = "attach"; + } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index cd7c41e7..209ba643 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -131,7 +131,7 @@ public class VisaChangeTempCreateReq { *

*/ @Size(max = 30, message = "最多支持上传30个附件,已超出请重新选择") - private List attach; + private List attach; private Long operatorOuId; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 38c7310a..44bac1cb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -69,6 +69,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; @@ -87,6 +88,20 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_NO; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_REASON; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROJECT; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_RECTIFICATION_ORDER; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; +import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; +import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; /** @@ -177,7 +192,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl statusList, VisaStatusEnum updateStatus) { - return this.updateVisaStatus(visaId, statusList,updateStatus); + return this.updateVisaStatus(visaId, statusList, updateStatus); } /** @@ -435,8 +450,42 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); // TODO 传递表单数据 + formVariables.put(FORM_FIELD_NO, req.getNo()); + formVariables.put(FORM_FIELD_HAPPEN_TIME, req.getHappenTime()); + formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); + formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject()); + formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, req.getRelationProject()); + formVariables.put(FORM_FIELD_REASON, req.getReason()); + formVariables.put(FORM_FIELD_RELATION_AREA, req.getRelationArea()); + formVariables.put(FORM_FIELD_CONTEXT_DESCRIPTION, req.getChangeContextAndDescriptionList()); + // 变更金额 + formVariables.put(FORM_FIELD_AMOUNT_CHANGE, ""); + + if (MapUtils.isNotEmpty(req.getRelationOrderMap())) { + List EMPTY = Lists.newArrayList(); + List taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.TASK_ORDER.getCode(), EMPTY); + if (CollectionUtils.isNotEmpty(taskOrderIds)) { + formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrderIds); + } + + List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.RECTIFICATION_ORDER.getCode(), EMPTY); + if (CollectionUtils.isNotEmpty(rectificationOrderIds)) { + formVariables.put(FORM_FIELD_RELATION_RECTIFICATION_ORDER, rectificationOrderIds); + } + + List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.VISA_ORDER.getCode(), EMPTY); + if (CollectionUtils.isNotEmpty(visaOrderIds)) { + formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderIds); + } + } + // TODO 附件传输 + req.getAttach(); + formVariables.put(FORM_FIELD_ATTACH, ""); processDto.setStartFormVariables(formVariables); processDto.setProcessDefinitionKey(req.getType().getProcessDefinitionKey()); + Map pendingVariables = new HashMap<>(); + pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic()); + processDto.setPendingVariables(pendingVariables); String processInstanceId = workflowGateway.processInstanceCreate(processDto); // 更新主表中的审批字段,记录变量表的审批的信息 @@ -447,6 +496,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 5 Feb 2025 15:02:45 +0800 Subject: [PATCH 058/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E7=9A=84=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index 209ba643..679d5100 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -3,6 +3,7 @@ package cn.axzo.visa.api.request; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; From 4c102eeb6064578f282cb321d97b79379028ba12 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 5 Feb 2025 16:35:42 +0800 Subject: [PATCH 059/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E5=88=97=E8=A1=A8=E6=9D=83=E9=99=90=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 1 + .../api/request/VisaChangePageSearchReq.java | 17 ++++++ visa/visa-server/pom.xml | 6 ++ .../axzo/visa/server/dto/VisaConfirmDto.java | 58 ++++++++++++++++++- .../visa/server/rpc/DataObjectApiGateway.java | 40 +++++++++++++ .../service/ChangeRecordConfirmService.java | 10 ++++ .../impl/ChangeRecordConfirmServiceImpl.java | 57 +++++++++++++++++- .../service/impl/ChangeRecordServiceImpl.java | 7 ++- 8 files changed, 191 insertions(+), 5 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java index e89e9e67..07092aa2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -28,6 +28,7 @@ public enum VisaButtonTypeEnum { TO_APPROVE("to_approve", "提交审批"), UPLOAD_FILE("upload_file", "上传附件"), CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录"), + APPROVAL_RECORD("approval_record", "查看审批记录"), TO_HANDLE("to_handle", "去处理"), ; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java index 06fda22e..e74c3c8f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java @@ -88,5 +88,22 @@ public class VisaChangePageSearchReq { private Long page; private Long pageSize; + /** + * 当前登录人的personId + */ + private Long currentPersonId; + /** + * 当前登录人的项目Id + */ + private Long currentWorkspaceId; + /** + * 当前登录人的单位Id + */ + private Long currentOuId; + + /** + * 变更签证Id集合 + */ + private List visaIds; } diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 6977e214..83ddc68f 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -108,5 +108,11 @@ commons-lang3 3.12.0 + + + cn.axzo.karma + karma-api + 2.0.0-SNAPSHOT + diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java index 08836045..fa705e9f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java @@ -1,5 +1,6 @@ package cn.axzo.visa.server.dto; +import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import lombok.AllArgsConstructor; @@ -7,8 +8,12 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import org.apache.commons.collections.CollectionUtils; +import java.util.Collection; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * @author xudawei @@ -27,7 +32,7 @@ public class VisaConfirmDto { */ private Long visaId; - private List visaIds; + private Collection visaIds; /** * 类型 @@ -43,17 +48,31 @@ public class VisaConfirmDto { * 确认人 */ private Long personId; + /** + * 确认人集合 + */ + private Collection personIds; /** * 确认单位 */ private Long ouId; + /** + * 确认单位集合 + */ + private Collection ouIds; + /** * 确认项目 */ private Long workspaceId; + /** + * 确认项目集合 + */ + private Collection workspaceIds; + /** * 确认工程 */ @@ -63,5 +82,42 @@ public class VisaConfirmDto { * 确认节点 */ private Long nodeId; + /** + * 确认节点集合 + */ + private Collection nodeIds; + + /** + * 根据DataItem创建Dto + */ + public static VisaConfirmDto create(List dataItems) { + + VisaConfirmDto dto = new VisaConfirmDto(); + + if (CollectionUtils.isNotEmpty(dataItems)) { + Collection personIds = dataItems.stream() + .filter(item -> CollectionUtils.isNotEmpty(item.getPersonIds())) + .flatMap(item -> item.getPersonIds().stream()).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(personIds)) { + dto.setPersonIds(personIds); + } + + Collection ouIds = dataItems.stream().map(item -> item.getOuId()).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(ouIds)) { + dto.setOuIds(ouIds); + } + + Collection workspaceIds = dataItems.stream().map(item -> item.getWorkspaceId()).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(workspaceIds)) { + dto.setWorkspaceIds(workspaceIds); + } + + Set nodeIds = dataItems.stream().map(item -> item.getNodeId()).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(nodeIds)) { + dto.setNodeIds(nodeIds); + } + } + return dto; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java new file mode 100644 index 00000000..96ca0631 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java @@ -0,0 +1,40 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.karma.client.feign.tyr.DataObjectApi; +import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; +import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author xudawei@axzo.cn + * @date 2025/02/05 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DataObjectApiGateway { + + private final DataObjectApi dataObjectApi; + + public MatchDataObjectResp match(MatchDataObjectReq req) { + if (Objects.isNull(req)) { + return MatchDataObjectResp.builder().build(); + } + try { + log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req)); + ApiResult match = dataObjectApi.match(req); + log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); + return match.getData(); + } catch (Exception e) { + log.warn("DataObjectApiGateway match exception", e); + throw e; + } + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index 9c1d92f2..b27d6023 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -55,4 +55,14 @@ public interface ChangeRecordConfirmService { * 确认人与发起人的不同的单据状态,按钮列表不相同 */ Set fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status); + + /** + * 权限过滤 + * @param dataObjectCode OMS提供权限code + * @param currentPersonId 当前登录人personId + * @param currentWorkspaceId 当前登录人项目Id + * @param currentOuId 当前登录人的单位Id + * @return 变更签证visaId集合 + */ + Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 7eedf8de..f1ef194e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,6 +1,9 @@ package cn.axzo.visa.server.service.impl; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; +import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; +import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; @@ -11,6 +14,7 @@ import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; +import cn.axzo.visa.server.rpc.DataObjectApiGateway; import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.WorkflowManagerGateway; @@ -19,6 +23,7 @@ import cn.axzo.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -29,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Objects; @@ -56,6 +62,10 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl bizTypes, Long visaId, Long personId, Long ouId, Long workspaceId) { ChangeRecord changeRecord = changeRecordService.getById(visaId); + if (Objects.isNull(changeRecord) || Objects.isNull(changeRecord.getId()) || !StringUtils.hasText(changeRecord.getApprovalId())) { + return; + } + BpmnProcessInstanceCheckApproverDTO dto = new BpmnProcessInstanceCheckApproverDTO(); dto.setProcessInstanceId(changeRecord.getApprovalId()); @@ -258,16 +272,53 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildLambdaQueryWrapper(VisaConfirmDto dto) { + return lambdaQuery().eq(Objects.nonNull(dto.getVisaId()), ChangeRecordConfirm::getVisaId, dto.getVisaId()) .in(CollectionUtils.isNotEmpty(dto.getVisaIds()), ChangeRecordConfirm::getVisaId, dto.getVisaIds()) .eq(Objects.nonNull(dto.getPersonId()), ChangeRecordConfirm::getPersonId, dto.getPersonId()) + .in(CollectionUtils.isNotEmpty(dto.getPersonIds()), ChangeRecordConfirm::getPersonId, dto.getPersonIds()) .eq(Objects.nonNull(dto.getOuId()), ChangeRecordConfirm::getOuId, dto.getOuId()) + .in(CollectionUtils.isNotEmpty(dto.getOuIds()), ChangeRecordConfirm::getOuId, dto.getOuIds()) .eq(Objects.nonNull(dto.getWorkspaceId()), ChangeRecordConfirm::getWorkspaceId, dto.getWorkspaceId()) + .in(CollectionUtils.isNotEmpty(dto.getWorkspaceIds()), ChangeRecordConfirm::getWorkspaceId, dto.getWorkspaceIds()) + .eq(Objects.nonNull(dto.getNodeId()), ChangeRecordConfirm::getNodeId, dto.getNodeId()) + .in(CollectionUtils.isNotEmpty(dto.getNodeIds()), ChangeRecordConfirm::getNodeId, dto.getNodeIds()) .eq(Objects.nonNull(dto.getProjectId()), ChangeRecordConfirm::getProjectId, dto.getProjectId()) .eq(Objects.nonNull(dto.getType()), ChangeRecordConfirm::getType, dto.getType()) .eq(Objects.nonNull(dto.getBizType()), ChangeRecordConfirm::getBizType, dto.getBizType()) - .eq(ChangeRecordConfirm::getIsDelete, 0) - .list(); + .eq(ChangeRecordConfirm::getIsDelete, 0); + } + + /** + * 数据权限过滤 + * @param dataObjectCode OMS提供权限code + * @param currentPersonId 当前登录人personId + * @param currentWorkspaceId 当前登录人项目Id + * @param currentOuId 当前登录人的单位Id + * @return 变更签证visaId集合 + */ + public Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId) { + MatchDataObjectReq req = new MatchDataObjectReq(); + req.setDataObjectCode(dataObjectCode); + req.setPersonId(currentPersonId); + req.setWorkspaceId(currentWorkspaceId); + req.setOuId(currentOuId); + MatchDataObjectResp match = dataObjectApiGateway.match(req); + MergeMatchDataResp mergedDataObject = match.getMergedDataObject(); + List dataItems = mergedDataObject.getDataItems(); + + List confirmList = this.findByCondition(VisaConfirmDto.create(dataItems)); + Set visaIdList = confirmList.stream().map(ChangeRecordConfirm::getVisaId).collect(Collectors.toSet()); + if (CollectionUtils.isEmpty(visaIdList)) { + return Sets.newHashSet(); + } + return visaIdList; } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index a99fb05d..01428422 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -55,7 +55,6 @@ import cn.axzo.visa.server.service.ChangeRecordService; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -140,6 +139,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { + + Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); + return lambdaQuery() + .in(ChangeRecord::getId, visaList) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) .eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword()) @@ -487,6 +491,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getPersonBriefInfoMap(Long workspaceId, List initiatorPersonIds) { OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() .workspaceId(workspaceId) From c089a689319cb39f98f913f934823da8de3abee9 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 5 Feb 2025 17:17:49 +0800 Subject: [PATCH 060/341] =?UTF-8?q?feat:=20(REQ-3300)=20VisaBillDto?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/axzo/visa/server/dto/VisaBillDto.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java index 25f56adc..650be46e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java @@ -1,11 +1,7 @@ package cn.axzo.visa.server.dto; -import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.visa.api.enums.VisaBillTypeEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,7 +38,7 @@ public class VisaBillDto { /** * 单据类型 */ - private VisaBillTypeEnum billType; + private VisaRelationFieldEnum billType; /** * 额外信息 */ From 075cc9afc4cec621f4b6abb232ca83d6c959bc9f Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 5 Feb 2025 17:21:54 +0800 Subject: [PATCH 061/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=AE=B0=E5=BD=95=E5=88=99=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E4=B8=8D=E5=9C=A8=E5=B1=95=E7=A4=BA[=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=AE=A1=E6=89=B9=E8=AE=B0=E5=BD=95]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 44 +++++++++++++------ .../api/enums/VisaConfirmBizTypeEnum.java | 1 + .../service/ChangeRecordLogService.java | 8 ++++ .../impl/ChangeRecordConfirmServiceImpl.java | 11 ++++- .../impl/ChangeRecordLogServiceImpl.java | 11 +++++ 5 files changed, 61 insertions(+), 14 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java index 07092aa2..707d49c2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -30,6 +30,7 @@ public enum VisaButtonTypeEnum { CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录"), APPROVAL_RECORD("approval_record", "查看审批记录"), TO_HANDLE("to_handle", "去处理"), + PRINT("print", "打印"), ; @@ -41,32 +42,49 @@ public enum VisaButtonTypeEnum { static { // 发起人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, FORBID)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); // 决策人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE,CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE,CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); //审核人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD)); - //[查看洽商记录][打印]按钮是通过OMS统一配置,故此处不处理 + //其他不同状态按钮权限 + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); + + //[打印]按钮是通过OMS统一配置,故此处不处理 } /** * 根据角色集合与单据状态获取按钮权限 */ public static Set fetchBtnSetByBizTypeAndStatus(Set bizTypeSet, VisaStatusEnum status) { - if (CollectionUtils.isEmpty(bizTypeSet) || Objects.isNull(status)) { + Set returnBtnSet = Sets.newHashSet(); + if (Objects.isNull(status)) { return Sets.newHashSet(); } - Set returnBtnSet = Sets.newHashSet(); + + if (CollectionUtils.isEmpty(bizTypeSet)) { + bizTypeSet.add(VisaConfirmBizTypeEnum.OTHER); + } bizTypeSet.stream() .filter(item -> Objects.nonNull(item)) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java index 3e7cdce7..74caa92e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java @@ -19,6 +19,7 @@ public enum VisaConfirmBizTypeEnum { CONFIRM("CONFIRM", "确认"), CREATE("CREATE", "创建"), APPROVE("CREATE", "审核"), + OTHER("OTHER", "其他"), ; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java index c91e5f91..e6b60da3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java @@ -52,4 +52,12 @@ public interface ChangeRecordLogService { */ List listByVisaIdType(Long visaId, VisaLogTypeEnum logType); + /** + * 是否有日志类型 + * @param visaId 变更签证Id + * @param logType 类型 + * @return true:有;false:没有 + */ + boolean hasLogType(Long visaId, VisaLogTypeEnum logType); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index d7d96e9f..c4664d83 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.visa.api.enums.VisaLogTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecord; @@ -19,6 +20,7 @@ import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.WorkflowGateway; import cn.axzo.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -62,6 +64,8 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl visaButtonTypeEnums = VisaButtonTypeEnum.fetchBtnSetByBizTypeAndStatus(bizTypes, status); + //没有去审批记录,则不展示[查看审批记录]按钮 + if (!changeRecordLogService.hasLogType(visaId, VisaLogTypeEnum.TO_APPRROVE)) { + visaButtonTypeEnums.remove(VisaButtonTypeEnum.APPROVAL_RECORD); + } + return visaButtonTypeEnums; } /** diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 92394a67..7c6eaa9d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -289,4 +289,15 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl logList = this.findByCondition(VisaLogDto.builder().visaId(visaId).logType(logType).build()); + return CollectionUtils.isNotEmpty(logList); + } } From 54afa43a6467c0773efb5f98a0b720ad41154c02 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 5 Feb 2025 19:33:59 +0800 Subject: [PATCH 062/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=9E=9A=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java index 707d49c2..04689a1e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java @@ -14,6 +14,7 @@ import java.util.Set; /** * 按钮枚举 + * * @author xudawei * @since 2025-01-15 */ @@ -24,14 +25,17 @@ public enum VisaButtonTypeEnum { UPDATE("update", "编辑"), DELETE("delete", "删除"), FORBID("forbid", "作废"), - EXECUTE("execute", "执行"), + EXECUTE("execute", "发起执行"), + REDECISION("redecision", "重新发起"), TO_APPROVE("to_approve", "提交审批"), + AGREE("agree", "同意"), + REJECT("reject", "拒绝"), UPLOAD_FILE("upload_file", "上传附件"), CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录"), APPROVAL_RECORD("approval_record", "查看审批记录"), TO_HANDLE("to_handle", "去处理"), PRINT("print", "打印"), - ; + ; private String code; @@ -47,17 +51,17 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); // 决策人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE,CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE,CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE,CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); //审核人不同状态按钮权限 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD)); @@ -66,9 +70,9 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD,APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD,APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); //[打印]按钮是通过OMS统一配置,故此处不处理 } From 81b2f14700ea59789c8905130200a7fa65666c29 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 5 Feb 2025 19:52:15 +0800 Subject: [PATCH 063/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/visa/server/dto/VisaBillDto.java | 8 +-- .../service/ChangeRecordConfirmService.java | 3 +- .../service/ChangeRecordRelationService.java | 1 + .../impl/ChangeRecordConfirmServiceImpl.java | 26 ++++---- .../impl/ChangeRecordRelationServiceImpl.java | 34 +++++----- .../service/impl/ChangeRecordServiceImpl.java | 66 +++++++++++++++---- 6 files changed, 89 insertions(+), 49 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java index 25f56adc..650be46e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java @@ -1,11 +1,7 @@ package cn.axzo.visa.server.dto; -import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.visa.api.enums.VisaBillTypeEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,7 +38,7 @@ public class VisaBillDto { /** * 单据类型 */ - private VisaBillTypeEnum billType; + private VisaRelationFieldEnum billType; /** * 额外信息 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java index b27d6023..129af48d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java @@ -1,6 +1,7 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.visa.api.enums.VisaStatusEnum; import cn.axzo.visa.api.response.VisaDetailByIdResponse; import cn.axzo.visa.server.domain.ChangeRecordConfirm; @@ -36,7 +37,7 @@ public interface ChangeRecordConfirmService { /** * 通过变更签证Id,删除变更签证确认信息 */ - boolean deleteByVisaId(Long visaId); + boolean deleteByVisaId(Long visaId, List bizTypes); /** * 变更签证Id获取map diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index bc176231..13b94de4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -29,4 +29,5 @@ public interface ChangeRecordRelationService { */ List findByVisaAndVarName(Long visaId, String varName); + boolean deleteByVisaId(Long visaId, List relationTypes); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index d7d96e9f..a7004830 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -34,7 +34,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Objects; @@ -48,7 +47,7 @@ import java.util.stream.Collectors; */ @Slf4j @Service -public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { +public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { @Resource private ProfileGateway profileGateway; @@ -68,6 +67,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl dtoList) { // 删除 - this.deleteByVisaId(visaId); + this.deleteByVisaId(visaId, null); // 插入 return this.addConfirm(dtoList); } @@ -92,12 +93,13 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl bizTypes) { if (Objects.isNull(visaId)) { return false; } return this.lambdaUpdate().eq(ChangeRecordConfirm::getVisaId, visaId) .eq(ChangeRecordConfirm::getIsDelete, 0) + .in(CollectionUtils.isNotEmpty(bizTypes), ChangeRecordConfirm::getBizType, bizTypes) .setSql("is_delete = id").update(); } @@ -116,8 +118,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl bizTypes, Long visaId, Long personId, Long ouId, Long workspaceId) { @@ -207,7 +210,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildRelationOuAndPerson(Map> listMap, Map personMap, Map orgIdAndNameMap) { List returnList = Lists.newArrayList(); - for (Map.Entry> entry : listMap.entrySet()) { + for (Map.Entry> entry : listMap.entrySet()) { String key = entry.getKey(); List confirmList = entry.getValue(); @@ -238,7 +241,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildRelationPersonList(List confirmList,Map personMap) { + private List buildRelationPersonList(List confirmList, Map personMap) { return confirmList.stream().map(item -> VisaDetailByIdResponse.RelationPerson.builder() .ouId(item.getOuId()) .workspaceId(item.getWorkspaceId()) @@ -297,10 +300,11 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId) { diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 90f7a16f..2f490325 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.framework.domain.ServiceException; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; @@ -14,12 +15,12 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import java.util.AbstractMap; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -78,24 +79,6 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl order = req.getRelationOrderMap().entrySet() - .stream() - .flatMap(item -> item.getValue().stream() - .map(orderId -> new AbstractMap.SimpleImmutableEntry<>(item.getKey(), orderId))) - .map(item -> { - ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); - changeRecordRelation.setVisaId(changeRecord.getId()); - changeRecordRelation.setVarName(type.name()); - changeRecordRelation.setVarExt(VisaRelationFieldEnum.valueOf(item.getKey()).name()); - changeRecordRelation.setVarType(VisaRelationVarTypeEnum.LONG.getType()); - changeRecordRelation.setContent(String.valueOf(item.getValue())); - changeRecordRelation.setCreateBy(req.getOperatorPersonId()); - changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); - return changeRecordRelation; - }) - .collect(Collectors.toList()); - return saveBatch(order); } else { throw new ServiceException("未知类型"); } @@ -113,6 +96,19 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl relationTypes) { + if (NumberUtil.isNotPositiveNumber(visaId)) { + return false; + } + return lambdaUpdate().eq(ChangeRecordRelation::getVisaId, visaId) + .eq(ChangeRecordRelation::getIsDelete, 0) + .in(CollectionUtils.isNotEmpty(relationTypes), ChangeRecordRelation::getVarName, + relationTypes.stream().map(VisaRelationFieldEnum::name).collect(Collectors.toList())) + .setSql("is_delete = id") + .update(); + } + /** * 获取集合 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 4502f312..7a631550 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -38,6 +38,7 @@ import cn.axzo.visa.server.domain.ChangeRecordBill; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.dto.VisaBillDto; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.dto.VisaLogParam; import cn.axzo.visa.server.mapper.ChangeRecordDao; @@ -54,6 +55,7 @@ import cn.axzo.visa.server.service.ChangeRecordConfirmService; import cn.axzo.visa.server.service.ChangeRecordLogService; import cn.axzo.visa.server.service.ChangeRecordRelationService; import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.visa.server.service.VisaHelper; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -165,6 +167,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl confirmPerson = Lists.newArrayList(); - // 发起人 - confirmPerson.add(buildVisaConfirmDto(req, changeRecord)); + if (NumberUtil.isNotPositiveNumber(req.getId())) { + /*暂存(新增)*/ + /*保存主记录*/ + changeRecord = new ChangeRecord(); + BeanUtil.copyProperties(req, changeRecord); + changeRecord.setStatus(VisaStatusEnum.TO_REPORT); + changeRecord.setCreateBy(req.getOperatorPersonId()); + changeRecord.setUpdateBy(req.getOperatorPersonId()); + save(changeRecord); + // 发起人 + confirmPerson.add(buildVisaConfirmDto(req, changeRecord)); + } else { + /*编辑*/ + changeRecord = getById(req.getId()); + AssertUtil.notNull(changeRecord, "记录不存在"); + AssertUtil.isTrue(changeRecord.getStatus() == VisaStatusEnum.TO_REPORT, "当前状态下不允许编辑"); + /*更新主记录*/ + BeanUtil.copyProperties(req, changeRecord); + changeRecord.setUpdateBy(req.getOperatorPersonId()); + updateById(changeRecord); + + /*更新关联附加信息,采用覆盖策略,删除原有信息,直接保存本次信息*/ + // 相关单位与人员(发起人不能被覆盖) + changeRecordConfirmService.deleteByVisaId(changeRecord.getId(), Lists.newArrayList(VisaConfirmBizTypeEnum.CONFIRM)); + // 更新发生内容及说明 + changeRecordRelationService.deleteByVisaId(changeRecord.getId(), Lists.newArrayList(VisaRelationFieldEnum.CONTENT_DESCRIPTION)); + // 更新关联单据 + changeRecordBillService.deleteByVisaId(changeRecord.getId()); + // 更新附件 + changeRecordRelationService.deleteByVisaId(changeRecord.getId(), Lists.newArrayList(VisaRelationFieldEnum.ATTACHMENT)); + } + /*保存附加关联信息*/ // 相关单位与人员 if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) { confirmPerson = req.getRelationUnitAndPersonList().stream() @@ -393,16 +421,30 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildVisaBillDto(VisaChangeTempCreateReq req, ChangeRecord changeRecord) { + return req.getRelationOrderMap().entrySet().stream() + .flatMap(os -> os.getValue().stream() + .map(o -> VisaBillDto.builder() + .visaId(changeRecord.getId()) + .billId(o) + .billType(VisaRelationFieldEnum.valueOf(os.getKey())) + .createBy(req.getOperatorPersonId()) + .updateBy(req.getOperatorPersonId()) + .build())) + .collect(Collectors.toList()); + } + /** * 创建群聊洽商变更签证 * From 7e4f68471385ebd4cf2c1c1a1c6f73566384ea87 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 5 Feb 2025 20:12:28 +0800 Subject: [PATCH 064/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=9B=B8=E5=85=B3=E7=9A=84=E6=A8=AA=E6=9D=A1=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changerecord/ChangeRecordRelationApi.java | 7 + .../axzo/visa/api/constant/VisaConstant.java | 4 + .../visa/api/enums/VisaRelationFieldEnum.java | 4 +- .../visa/api/request/ImGroupOperationReq.java | 56 ++++++++ .../visa/api/request/ImGroupTipsQueryReq.java | 60 +++++++++ .../axzo/visa/api/response/ImGroupButton.java | 29 ++++ .../visa/api/response/ImGroupTipsResp.java | 29 ++++ .../ChangeRecordRelationController.java | 21 +++ .../axzo/visa/server/domain/ChangeRecord.java | 2 +- .../visa/server/rpc/MsgCenterGateway.java | 63 +++++++++ .../service/ChangeRecordRelationService.java | 23 +++- .../impl/ChangeRecordRelationServiceImpl.java | 127 +++++++++++++++++- .../service/impl/ChangeRecordServiceImpl.java | 55 ++++++-- 13 files changed, 456 insertions(+), 24 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java index 6573e521..ac4f94e2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java @@ -2,7 +2,10 @@ package cn.axzo.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.request.ImGroupOperationReq; +import cn.axzo.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.visa.api.request.VisaRelationReq; +import cn.axzo.visa.api.response.ImGroupTipsResp; import cn.axzo.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; @@ -22,5 +25,9 @@ public interface ChangeRecordRelationApi { @PostMapping("/api/visa/relation/list") ApiResult> listByVisaId(@Validated @RequestBody VisaRelationReq req) ; + @PostMapping("/api/visa/relation/add") + ApiResult relationAdd(@Validated @RequestBody ImGroupOperationReq req); + @PostMapping("/api/visa/relation/im/tips") + ApiResult queryImGroupTips(@Validated @RequestBody ImGroupTipsQueryReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java index c57691d7..2c061782 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java @@ -45,4 +45,8 @@ public interface VisaConstant { // 附件 String FORM_FIELD_ATTACH = "attach"; + // ***************** IM-Group-Tips ****************** + String IM_GROUP_OWNER_TIPS = "群成员共计%d人,收到回复%d人,其中%d人同意,%d人拒绝。"; + String IM_GROUP_PARTICIPATE_TIPS = "由%s提交的,%s,需要你同意,是否同意?"; } + diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java index 0c49a1d0..3ce9f305 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java @@ -21,7 +21,9 @@ public enum VisaRelationFieldEnum { VISA_ORDER("visa_order", "变洽签变更单"), ATTACHMENT("attachment", "附件"), PROCESS_INSTANCE("process_instance", "审批实例"), - ORDER("order", "单据"); + ORDER("order", "单据"), + IM_GROUP_PARTICIPATE("im_group_participate", "im群聊参与人"), + ; private final String code; private final String desc; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java new file mode 100644 index 00000000..070b1aa7 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java @@ -0,0 +1,56 @@ +package cn.axzo.visa.api.request; + +import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * Im 群聊中的操作 + * + * @author wangli + * @since 2025-02-05 17:30 + */ +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ImGroupOperationReq { + /** + * 变洽签 ID + */ + @NotNull(message = "变洽签 ID 不能为空") + private Long visaId; + + /** + * IM 群 ID + */ + @NotNull(message = "IM 群 ID 不能为空") + private Long imGroupId; + + /** + * 操作类型 + */ + @NotNull(message = "按钮类型不能为空") + private VisaButtonTypeEnum buttonType; + /** + * 操作人 OuId + */ + @NotNull(message = "操作人 OuId 不能为空") + private Long operatorOuId; + + /** + * 操作人workspaceId + */ + @NotNull(message = "操作人 WorkspaceId 不能为空") + private Long operatorWorkspaceId; + + /** + * 操作人peronId + */ + @NotNull(message = "操作人 PersonId 不能为空") + private Long operatorPersonId; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java new file mode 100644 index 00000000..4a4343ea --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java @@ -0,0 +1,60 @@ +package cn.axzo.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * 用于查询 IM 群聊的中每个人的上方提示横条 + * + * @author wangli + * @since 2025-02-05 16:56 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class ImGroupTipsQueryReq { + /** + * IM 群的额外扩展信息,变洽签的 ID + */ + @NotNull(message = "变洽签 ID 不能为空") + private Long visaId; + + /** + * IM 群 ID + */ + @NotNull(message = "IM 群 ID 不能为空") + private Long groupId; + + /** + * 当前登录人是否是群主 + */ + @NotNull(message = "群主标识不能为空") + private Boolean groupOwner; + + /** + * 当前群成员总数, 包含群主 + */ + private Integer groupTotalPersonCount; + + /** + * 群成员的 PersonId + */ + @NotNull(message = "群成员的 PersonId 不能为空") + private Long personId; + + /** + * 群成员的 OuId + */ + @NotNull(message = "群成员的 OuId 不能为空") + private Long ouId; + + /** + * 群成员的 workspaceId + */ + private Long workspaceId; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java new file mode 100644 index 00000000..e198b81a --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java @@ -0,0 +1,29 @@ +package cn.axzo.visa.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * IM 群聊中的按钮 + * + * @author wangli + * @since 2025-02-05 16:47 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class ImGroupButton { + /** + * 按钮文案 + */ + private String name; + + /** + * 按钮类型 + */ + private String type; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java new file mode 100644 index 00000000..52886c21 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java @@ -0,0 +1,29 @@ +package cn.axzo.visa.api.response; + +import cn.axzo.visa.api.enums.VisaStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * IM 群聊上方横条 + * + * @author wangli + * @since 2025-02-05 16:37 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class ImGroupTipsResp { + + private VisaStatusEnum status; + + private String tipsText; + + private List buttonList; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java index dfc17f61..115a8fe3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java @@ -3,15 +3,24 @@ package cn.axzo.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.visa.api.changerecord.ChangeRecordRelationApi; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.visa.api.request.ImGroupOperationReq; +import cn.axzo.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.visa.api.request.VisaRelationReq; +import cn.axzo.visa.api.response.ImGroupTipsResp; import cn.axzo.visa.api.response.VisaRelationResp; +import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.service.ChangeRecordRelationService; +import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Objects; /** * @author xudawei @@ -23,6 +32,8 @@ import java.util.List; @RequiredArgsConstructor public class ChangeRecordRelationController implements ChangeRecordRelationApi { + @Autowired + private ChangeRecordService changeRecordService; @Autowired private ChangeRecordRelationService changeRecordRelationService; @@ -30,4 +41,14 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { public ApiResult> listByVisaId(VisaRelationReq req) { return null; } + + @Override + public ApiResult relationAdd(ImGroupOperationReq req) { + return ApiResult.ok(changeRecordRelationService.saveImOperationParticipate(req)); + } + + @Override + public ApiResult queryImGroupTips(ImGroupTipsQueryReq req) { + return ApiResult.ok(changeRecordRelationService.queryImGroupTips(req)); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java index 8b82b716..10ecf71d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java @@ -121,7 +121,7 @@ public class ChangeRecord extends BaseEntity { * IM群组ID */ @TableField(value = "im_group_id") - private String imGroupId; + private Long imGroupId; /** * 额外信息 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java new file mode 100644 index 00000000..41139a86 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java @@ -0,0 +1,63 @@ +package cn.axzo.visa.server.rpc; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.im.center.api.feign.GroupApi; +import cn.axzo.im.center.api.vo.req.GroupCreateRequest; +import cn.axzo.im.center.api.vo.req.GroupDismissRequest; +import cn.axzo.im.center.api.vo.req.GroupGetMembersRequest; +import cn.axzo.im.center.api.vo.req.GroupGetOwnerRequest; +import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; +import cn.axzo.im.center.api.vo.resp.GroupGetMembersResponse; +import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse; +import cn.azxo.framework.common.logger.MethodAroundLog; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * Message / IM 防腐层 + * + * @author wangli + * @since 2025-02-05 15:08 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MsgCenterGateway { + + private final GroupApi groupApi; + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "创建 IM 群聊") + public GroupCreateResponse createImGroup(GroupCreateRequest request) { + ApiResult group = groupApi.createGroup(request); + if(group.isSuccess() && Objects.nonNull(group.getData())) { + return group.getData(); + } + return null; + } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "解散 IM 群聊") + public void dismissImGroup(GroupDismissRequest request) { + groupApi.dismissGroup(request); + } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "获取指定 IM 群成员信息") + public GroupGetMembersResponse getMembers(GroupGetMembersRequest request) { + ApiResult members = groupApi.getMembers(request); + if(members.isSuccess() && Objects.nonNull(members.getData())) { + return members.getData(); + } + return null; + } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "获取指定 IM 群群主信息") + public GroupGetOwnerResponse getGroupOwner(GroupGetOwnerRequest request) { + ApiResult owner = groupApi.getOwner(request); + if(owner.isSuccess() && Objects.nonNull(owner.getData())) { + return owner.getData(); + } + return null; + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java index bc176231..b52ab7b7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java @@ -1,10 +1,14 @@ package cn.axzo.visa.server.service; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.visa.api.request.ImGroupOperationReq; +import cn.axzo.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.response.ImGroupTipsResp; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaRelationDto; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -13,9 +17,7 @@ import java.util.List; * @date 2025/01/15 * @desc 变更签证记录内容关系表 */ -public interface ChangeRecordRelationService { - - boolean save(ChangeRecordRelation processRelation); +public interface ChangeRecordRelationService extends IService { boolean save(VisaRelationFieldEnum type, VisaChangeTempCreateReq req, ChangeRecord changeRecord); @@ -29,4 +31,19 @@ public interface ChangeRecordRelationService { */ List findByVisaAndVarName(Long visaId, String varName); + /** + * IM 群聊中,保存 IM 用户操作横条的人 + * + * @param req + * @return + */ + Boolean saveImOperationParticipate(ImGroupOperationReq req); + + /** + * IM 群聊界面,查询当前人的 tips 横条 + * + * @param req + * @return + */ + ImGroupTipsResp queryImGroupTips(ImGroupTipsQueryReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 90f7a16f..3c1c24b9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -1,14 +1,24 @@ package cn.axzo.visa.server.service.impl; +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.visa.api.request.ImGroupOperationReq; +import cn.axzo.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.visa.api.response.ImGroupButton; +import cn.axzo.visa.api.response.ImGroupTipsResp; import cn.axzo.visa.server.domain.ChangeRecord; import cn.axzo.visa.server.domain.ChangeRecordRelation; import cn.axzo.visa.server.dto.VisaRelationDto; import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; +import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.service.ChangeRecordRelationService; +import cn.axzo.visa.server.service.ChangeRecordService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -20,10 +30,15 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.AbstractMap; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import static cn.axzo.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS; +import static cn.axzo.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS; + /** * @author xudawei * @date 2025/01/15 @@ -33,12 +48,8 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean save(ChangeRecordRelation entity) { - return super.save(entity); - } + private final ChangeRecordService changeRecordService; + private final ProfileGateway profileGateway; /** * 保存 @@ -126,4 +137,108 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl imGroupParticipate = findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode()) + .build()); + List buttons = new ArrayList<>(); + if (Boolean.TRUE.equals(req.getGroupOwner())) { + Map countMap = imGroupParticipate.stream() + .collect(Collectors.groupingBy(ChangeRecordRelation::getVarExt, Collectors.counting())); + Long agreeCount = countMap.getOrDefault(VisaButtonTypeEnum.AGREE.getCode(), 0L); + Long rejectCount = countMap.getOrDefault(VisaButtonTypeEnum.REJECT.getCode(), 0L); + resp.setTipsText(String.format(IM_GROUP_OWNER_TIPS, req.getGroupTotalPersonCount() - 1, + imGroupParticipate.size(), agreeCount, rejectCount)); + switch (record.getStatus()) { + case DECIDING: + if (req.getGroupTotalPersonCount() - 1 == agreeCount) { + // 全部同意 + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.TO_APPROVE.getDesc()) + .type(VisaButtonTypeEnum.TO_APPROVE.getCode()) + .build()); + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.EXECUTE.getDesc()) + .type(VisaButtonTypeEnum.EXECUTE.getCode()) + .build()); + } else { + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.FORBID.getDesc()) + .type(VisaButtonTypeEnum.FORBID.getCode()) + .build()); + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.REDECISION.getDesc()) + .type(VisaButtonTypeEnum.REDECISION.getCode()) + .build()); + } + break; + case EXECUTING: + if (req.getGroupTotalPersonCount() - 1 == agreeCount) { + // 全部同意 + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.EXECUTE.getDesc()) + .type(VisaButtonTypeEnum.EXECUTE.getCode()) + .build()); + } else { + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.FORBID.getDesc()) + .type(VisaButtonTypeEnum.FORBID.getCode()) + .build()); + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.REDECISION.getDesc()) + .type(VisaButtonTypeEnum.REDECISION.getCode()) + .build()); + } + break; + default: + break; + } + } else if (Objects.equals(VisaStatusEnum.DECIDING, record.getStatus()) + || Objects.equals(VisaStatusEnum.EXECUTING, record.getStatus())) { + // IM 群中非群主的人 + boolean operated = imGroupParticipate.stream() + .filter(i -> Objects.equals(i.getCreateBy(), req.getPersonId())) + .anyMatch(i -> Objects.equals(i.getContentExt(), String.valueOf(req.getOuId()))); + if (!operated) { + PersonProfileDto profile = profileGateway.getProfile(record.getCreateBy()); + resp.setTipsText(String.format(IM_GROUP_PARTICIPATE_TIPS, profile.getRealName(), record.getTopic())); + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.AGREE.getDesc()) + .type(VisaButtonTypeEnum.AGREE.getCode()) + .build()); + buttons.add(ImGroupButton.builder() + .name(VisaButtonTypeEnum.REJECT.getDesc()) + .type(VisaButtonTypeEnum.REJECT.getCode()) + .build()); + } + } + resp.setButtonList(buttons); + return resp; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 4502f312..acd1118e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -12,6 +12,9 @@ import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; +import cn.axzo.im.center.api.feign.GroupApi; +import cn.axzo.im.center.api.vo.req.GroupCreateRequest; +import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; @@ -44,6 +47,7 @@ import cn.axzo.visa.server.mapper.ChangeRecordDao; import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.visa.server.rpc.CooperateShipGateway; import cn.axzo.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.visa.server.rpc.MsgCenterGateway; import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.visa.server.rpc.ProfileGateway; import cn.axzo.visa.server.rpc.ProjectApiGateway; @@ -164,6 +168,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); - // TODO 传递表单数据 + // 传递表单数据 formVariables.put(FORM_FIELD_NO, req.getNo()); formVariables.put(FORM_FIELD_HAPPEN_TIME, req.getHappenTime()); formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); @@ -459,29 +482,27 @@ public class ChangeRecordServiceImpl extends ServiceImpl EMPTY = Lists.newArrayList(); - List taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.TASK_ORDER.getCode(), EMPTY); + List taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.TASK_ORDER.getCode(), null); if (CollectionUtils.isNotEmpty(taskOrderIds)) { formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrderIds); } - List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.RECTIFICATION_ORDER.getCode(), EMPTY); + List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.RECTIFICATION_ORDER.getCode(), null); if (CollectionUtils.isNotEmpty(rectificationOrderIds)) { formVariables.put(FORM_FIELD_RELATION_RECTIFICATION_ORDER, rectificationOrderIds); } - List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.VISA_ORDER.getCode(), EMPTY); + List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.VISA_ORDER.getCode(), null); if (CollectionUtils.isNotEmpty(visaOrderIds)) { formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderIds); } } - // TODO 附件传输 - req.getAttach(); - formVariables.put(FORM_FIELD_ATTACH, ""); + formVariables.put(FORM_FIELD_ATTACH, req.getAttach()); processDto.setStartFormVariables(formVariables); processDto.setProcessDefinitionKey(req.getType().getProcessDefinitionKey()); Map pendingVariables = new HashMap<>(); @@ -490,8 +511,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 5 Feb 2025 20:13:19 +0800 Subject: [PATCH 065/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeTempCreateReq.java | 2 +- .../service/impl/ChangeRecordServiceImpl.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java index 679d5100..81a9d188 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java @@ -61,7 +61,7 @@ public class VisaChangeTempCreateReq { /** * 工程 */ - @NotBlank(message = "请选择工程") + @NotNull(message = "请选择工程") @Min(value = 1, message = "请选择工程") private Long relationProject; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java index 7a631550..17457975 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -38,6 +38,7 @@ import cn.axzo.visa.server.domain.ChangeRecordBill; import cn.axzo.visa.server.domain.ChangeRecordConfirm; import cn.axzo.visa.server.domain.ChangeRecordLog; import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.visa.server.dto.VisaAddLogContext; import cn.axzo.visa.server.dto.VisaBillDto; import cn.axzo.visa.server.dto.VisaConfirmDto; import cn.axzo.visa.server.dto.VisaLogParam; @@ -376,6 +377,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl confirmPerson = Lists.newArrayList(); + VisaAddLogContext oldContext = null; + VisaAddLogContext newContext = null; if (NumberUtil.isNotPositiveNumber(req.getId())) { /*暂存(新增)*/ /*保存主记录*/ @@ -389,9 +392,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl oldVisaAttach = changeRecordRelationService.findByVisaAndVarName(changeRecord.getId(), VisaRelationFieldEnum.ATTACHMENT.name()); + oldContext.setRelationList(oldVisaAttach); changeRecordRelationService.deleteByVisaId(changeRecord.getId(), Lists.newArrayList(VisaRelationFieldEnum.ATTACHMENT)); } /*保存附加关联信息*/ @@ -428,7 +435,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 5 Feb 2025 20:24:33 +0800 Subject: [PATCH 066/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8C=85=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=A2=9E=E5=8A=A0nanopart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 26 ++-- .../api/changerecord/ChangeRecordLogApi.java | 6 +- .../changerecord/ChangeRecordRelationApi.java | 13 +- .../api/config/VisaApiAutoConfiguration.java | 4 +- .../visa/api/constant/VisaConstant.java | 2 +- .../visa/api/enums/MQEventEnum.java | 2 +- .../visa/api/enums/VisaBillTypeEnum.java | 2 +- .../visa/api/enums/VisaButtonTypeEnum.java | 2 +- .../visa/api/enums/VisaChangeFieldEnum.java | 2 +- .../api/enums/VisaConfirmBizTypeEnum.java | 2 +- .../visa/api/enums/VisaLogTypeEnum.java | 2 +- .../visa/api/enums/VisaRelationFieldEnum.java | 2 +- .../api/enums/VisaRelationVarTypeEnum.java | 2 +- .../visa/api/enums/VisaStatusEnum.java | 2 +- .../visa/api/enums/VisaTypeEnum.java | 2 +- .../visa/api/request/AddVisaLogRequest.java | 4 +- .../visa/api/request/ChangeStatusRequest.java | 6 +- .../request/FetchVisaLogByVisaIdRequest.java | 2 +- .../visa/api/request/ImGroupOperationReq.java | 4 +- .../visa/api/request/ImGroupTipsQueryReq.java | 2 +- .../request/VisaChangeApproveCreateReq.java | 2 +- .../request/VisaChangeDiscussCreateReq.java | 2 +- .../visa/api/request/VisaChangeExportReq.java | 4 +- .../api/request/VisaChangePageSearchReq.java | 6 +- .../api/request/VisaChangeTempCreateReq.java | 6 +- .../api/request/VisaDetailByIdRequest.java | 2 +- .../api/request/VisaInitiatorListReq.java | 2 +- .../visa/api/request/VisaRecordSelectReq.java | 6 +- .../visa/api/request/VisaRelationReq.java | 4 +- .../FetchVisaLogByVisaIdResponse.java | 2 +- .../visa/api/response/ImGroupButton.java | 2 +- .../visa/api/response/ImGroupTipsResp.java | 4 +- .../api/response/VisaChangeInitiatorResp.java | 2 +- .../response/VisaChangePageSearchResp.java | 6 +- .../api/response/VisaDetailByIdResponse.java | 10 +- .../visa/api/response/VisaRelationResp.java | 5 +- .../main/resources/META-INF/spring.factories | 2 +- .../controller/ChangeRecordController.java | 32 ++--- .../controller/ChangeRecordLogController.java | 10 +- .../ChangeRecordRelationController.java | 24 ++-- .../visa/server/domain/ChangeRecord.java | 6 +- .../visa/server/domain/ChangeRecordBill.java | 4 +- .../server/domain/ChangeRecordConfirm.java | 4 +- .../visa/server/domain/ChangeRecordLog.java | 2 +- .../server/domain/ChangeRecordRelation.java | 2 +- .../visa/server/dto/VisaAddLogContext.java | 10 +- .../visa/server/dto/VisaBillDto.java | 4 +- .../visa/server/dto/VisaConfirmDto.java | 4 +- .../visa/server/dto/VisaExportDto.java | 2 +- .../visa/server/dto/VisaLogDto.java | 4 +- .../visa/server/dto/VisaLogParam.java | 8 +- .../visa/server/dto/VisaRelationDto.java | 2 +- .../server/mapper/ChangeRecordBillDao.java | 5 +- .../server/mapper/ChangeRecordConfirmDao.java | 4 +- .../visa/server/mapper/ChangeRecordDao.java | 4 +- .../server/mapper/ChangeRecordLogDao.java | 4 +- .../mapper/ChangeRecordRelationDao.java | 4 +- .../mq/listener/workflow/BasicLogSupport.java | 4 +- .../ProcessInstanceAllEventHandler.java | 20 +-- .../task/ProcessTaskAllEventHandler.java | 14 +-- .../mq/producer/VisaChangeLogPayload.java | 9 +- .../mq/producer/VisaChangeLogProducer.java | 2 +- .../rpc/ApolloConstructionAreaGateway.java | 2 +- .../visa/server/rpc/CooperateShipGateway.java | 4 +- .../visa/server/rpc/DataObjectApiGateway.java | 2 +- .../visa/server/rpc/DrawingMajorGateway.java | 2 +- .../visa/server/rpc/MsgCenterGateway.java | 2 +- .../rpc/OrganizationalNodeUserGateway.java | 2 +- .../server/rpc/OrganizationalUnitGateway.java | 2 +- .../visa/server/rpc/ProfileGateway.java | 2 +- .../visa/server/rpc/ProjectApiGateway.java | 4 +- .../visa/server/rpc/WorkflowGateway.java | 2 +- .../visa/server/rpc/WorkspaceGateway.java | 2 +- .../service/ChangeRecordBillService.java | 6 +- .../service/ChangeRecordConfirmService.java | 14 +-- .../service/ChangeRecordLogService.java | 10 +- .../service/ChangeRecordRelationService.java | 12 +- .../server/service/ChangeRecordService.java | 26 ++-- .../visa/server/service/VisaHelper.java | 10 +- .../impl/ChangeRecordBillServiceImpl.java | 10 +- .../impl/ChangeRecordConfirmServiceImpl.java | 34 ++--- .../impl/ChangeRecordLogServiceImpl.java | 22 ++-- .../impl/ChangeRecordRelationServiceImpl.java | 39 +++--- .../service/impl/ChangeRecordServiceImpl.java | 117 +++++++++--------- .../visa/server/utils/RpcUtil.java | 2 +- 85 files changed, 330 insertions(+), 342 deletions(-) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/changerecord/ChangeRecordApi.java (78%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/changerecord/ChangeRecordLogApi.java (79%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/changerecord/ChangeRecordRelationApi.java (73%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/config/VisaApiAutoConfiguration.java (62%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/constant/VisaConstant.java (97%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/MQEventEnum.java (95%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaBillTypeEnum.java (91%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaButtonTypeEnum.java (99%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaChangeFieldEnum.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaConfirmBizTypeEnum.java (95%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaLogTypeEnum.java (98%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaRelationFieldEnum.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaRelationVarTypeEnum.java (89%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaStatusEnum.java (97%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/enums/VisaTypeEnum.java (93%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/AddVisaLogRequest.java (90%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/ChangeStatusRequest.java (93%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/FetchVisaLogByVisaIdRequest.java (91%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/ImGroupOperationReq.java (91%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/ImGroupTipsQueryReq.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaChangeApproveCreateReq.java (97%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaChangeDiscussCreateReq.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaChangeExportReq.java (81%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaChangePageSearchReq.java (93%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaChangeTempCreateReq.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaDetailByIdRequest.java (93%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaInitiatorListReq.java (90%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaRecordSelectReq.java (84%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/request/VisaRelationReq.java (86%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/FetchVisaLogByVisaIdResponse.java (92%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/ImGroupButton.java (90%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/ImGroupTipsResp.java (80%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/VisaChangeInitiatorResp.java (95%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/VisaChangePageSearchResp.java (92%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/VisaDetailByIdResponse.java (96%) rename visa/visa-api/src/main/java/cn/axzo/{ => nanopart}/visa/api/response/VisaRelationResp.java (86%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/controller/ChangeRecordController.java (73%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/controller/ChangeRecordLogController.java (78%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/controller/ChangeRecordRelationController.java (59%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/domain/ChangeRecord.java (95%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/domain/ChangeRecordBill.java (93%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/domain/ChangeRecordConfirm.java (94%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/domain/ChangeRecordLog.java (97%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/domain/ChangeRecordRelation.java (97%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaAddLogContext.java (80%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaBillDto.java (89%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaConfirmDto.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaExportDto.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaLogDto.java (82%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaLogParam.java (93%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/dto/VisaRelationDto.java (91%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mapper/ChangeRecordBillDao.java (66%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mapper/ChangeRecordConfirmDao.java (71%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mapper/ChangeRecordDao.java (71%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mapper/ChangeRecordLogDao.java (72%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mapper/ChangeRecordRelationDao.java (72%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mq/listener/workflow/BasicLogSupport.java (93%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java (84%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java (84%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mq/producer/VisaChangeLogPayload.java (82%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/mq/producer/VisaChangeLogProducer.java (82%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/ApolloConstructionAreaGateway.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/CooperateShipGateway.java (90%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/DataObjectApiGateway.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/DrawingMajorGateway.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/MsgCenterGateway.java (98%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/OrganizationalNodeUserGateway.java (98%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/OrganizationalUnitGateway.java (97%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/ProfileGateway.java (97%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/ProjectApiGateway.java (92%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/WorkflowGateway.java (97%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/rpc/WorkspaceGateway.java (96%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/ChangeRecordBillService.java (79%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/ChangeRecordConfirmService.java (81%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/ChangeRecordLogService.java (81%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/ChangeRecordRelationService.java (73%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/ChangeRecordService.java (69%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/VisaHelper.java (88%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/impl/ChangeRecordBillServiceImpl.java (91%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java (93%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/impl/ChangeRecordLogServiceImpl.java (95%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/impl/ChangeRecordRelationServiceImpl.java (89%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/service/impl/ChangeRecordServiceImpl.java (91%) rename visa/visa-server/src/main/java/cn/axzo/{ => nanopart}/visa/server/utils/RpcUtil.java (97%) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java similarity index 78% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index a36386f7..8a67b23f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -1,19 +1,19 @@ -package cn.axzo.visa.api.changerecord; +package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.request.VisaChangeExportReq; -import cn.axzo.visa.api.request.VisaChangePageSearchReq; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.request.VisaDetailByIdRequest; -import cn.axzo.visa.api.request.VisaInitiatorListReq; -import cn.axzo.visa.api.request.VisaRecordSelectReq; -import cn.axzo.visa.api.response.VisaChangeInitiatorResp; -import cn.axzo.visa.api.response.VisaChangePageSearchResp; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; +import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java similarity index 79% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java index b8a21eed..cda0305e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordLogApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.api.changerecord; +package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiListResult; -import cn.axzo.visa.api.request.FetchVisaLogByVisaIdRequest; -import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.nanopart.visa.api.request.FetchVisaLogByVisaIdRequest; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java similarity index 73% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java index ac4f94e2..94eb29b2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java @@ -1,12 +1,11 @@ -package cn.axzo.visa.api.changerecord; +package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.request.ImGroupOperationReq; -import cn.axzo.visa.api.request.ImGroupTipsQueryReq; -import cn.axzo.visa.api.request.VisaRelationReq; -import cn.axzo.visa.api.response.ImGroupTipsResp; -import cn.axzo.visa.api.response.VisaRelationResp; +import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; +import cn.axzo.nanopart.visa.api.request.VisaRelationReq; +import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; +import cn.axzo.nanopart.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/config/VisaApiAutoConfiguration.java similarity index 62% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/config/VisaApiAutoConfiguration.java index 20366f1c..b867bf9b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/config/VisaApiAutoConfiguration.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/config/VisaApiAutoConfiguration.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.config; +package cn.axzo.nanopart.visa.api.config; -import cn.axzo.visa.api.constant.VisaConstant; +import cn.axzo.nanopart.visa.api.constant.VisaConstant; import org.springframework.cloud.openfeign.EnableFeignClients; @EnableFeignClients(VisaConstant.BASIC_FEIGN_PACKAGE) diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java similarity index 97% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 2c061782..e31643a0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.constant; +package cn.axzo.nanopart.visa.api.constant; /** * 变洽签 API 基础包路径 diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java similarity index 95% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java index b66dd93b..037c71d6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/MQEventEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import cn.axzo.framework.rocketmq.Event; import lombok.Getter; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java similarity index 91% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java index c1c540cd..437943cd 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaBillTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java similarity index 99% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index 04689a1e..197ad022 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import cn.axzo.framework.domain.ServiceException; import com.google.common.collect.Maps; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java index 07d7764a..1211b46c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaChangeFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import lombok.Getter; import org.apache.commons.lang3.StringUtils; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java similarity index 95% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java index 74caa92e..96ecef89 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaConfirmBizTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import com.google.common.collect.Sets; import lombok.AccessLevel; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java similarity index 98% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java index 17626cc8..c3097342 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaLogTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import com.google.common.collect.Sets; import lombok.AccessLevel; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java index 3ce9f305..4388bb53 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationVarTypeEnum.java similarity index 89% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationVarTypeEnum.java index 424e0209..e830577d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaRelationVarTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationVarTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java similarity index 97% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java index d9422d9f..74ce8cf1 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import com.google.common.collect.Sets; import lombok.AccessLevel; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java similarity index 93% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java index b0886598..74fa68e5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.enums; +package cn.axzo.nanopart.visa.api.enums; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/AddVisaLogRequest.java similarity index 90% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/AddVisaLogRequest.java index b09d19be..febeb506 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/AddVisaLogRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/AddVisaLogRequest.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java similarity index 93% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java index 7ce03b63..f29eb0ae 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import cn.axzo.framework.domain.ServiceException; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaLogByVisaIdRequest.java similarity index 91% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaLogByVisaIdRequest.java index aa788f29..f4176ea8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/FetchVisaLogByVisaIdRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaLogByVisaIdRequest.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java similarity index 91% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java index 070b1aa7..9b4141d9 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java index 4a4343ea..776c3501 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/ImGroupTipsQueryReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java similarity index 97% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index 1d3fc79e..cb5f902a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeDiscussCreateReq.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeDiscussCreateReq.java index 3bb0827f..6b9399b9 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeDiscussCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeDiscussCreateReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java similarity index 81% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java index 3d1feaa8..44058d44 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeExportReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaChangeFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java similarity index 93% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index e74c3c8f..accc0a9e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -1,7 +1,7 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 81a9d188..3fc98635 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java similarity index 93% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java index 60637778..cbc8e708 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaDetailByIdRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java similarity index 90% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java index 9de0cadf..f9c653fd 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaInitiatorListReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java similarity index 84% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java index f7929023..27379ea1 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRecordSelectReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java @@ -1,7 +1,7 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java similarity index 86% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java index f4d1949b..bd4faa2c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/request/VisaRelationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.request; +package cn.axzo.nanopart.visa.api.request; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/FetchVisaLogByVisaIdResponse.java similarity index 92% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/FetchVisaLogByVisaIdResponse.java index fbb55585..5bbcf828 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/FetchVisaLogByVisaIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/FetchVisaLogByVisaIdResponse.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupButton.java similarity index 90% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupButton.java index e198b81a..dc13b2f8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupButton.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupButton.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java similarity index 80% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java index 52886c21..0dbe7caf 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/ImGroupTipsResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; -import cn.axzo.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeInitiatorResp.java similarity index 95% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeInitiatorResp.java index 90590d76..eafeefc5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangeInitiatorResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeInitiatorResp.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java similarity index 92% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index effbf2fc..633d7f4c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -1,7 +1,7 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java similarity index 96% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 6b8d2f0a..b791dc12 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -1,10 +1,10 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.visa.api.enums.VisaButtonTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; diff --git a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java similarity index 86% rename from visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java index 9cccb322..93d1d2ef 100644 --- a/visa/visa-api/src/main/java/cn/axzo/visa/api/response/VisaRelationResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java @@ -1,5 +1,6 @@ -package cn.axzo.visa.api.response; +package cn.axzo.nanopart.visa.api.response; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -28,7 +29,7 @@ public class VisaRelationResp { private String visaId; /** * 变洽签单据关联的行数据类型 - * {@link cn.axzo.visa.api.enums.VisaRelationFieldEnum} + * {@link VisaRelationFieldEnum} */ private String varName; diff --git a/visa/visa-api/src/main/resources/META-INF/spring.factories b/visa/visa-api/src/main/resources/META-INF/spring.factories index 9e9bac10..c3000f13 100644 --- a/visa/visa-api/src/main/resources/META-INF/spring.factories +++ b/visa/visa-api/src/main/resources/META-INF/spring.factories @@ -1,2 +1,2 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -cn.axzo.visa.api.config.VisaApiAutoConfiguration \ No newline at end of file +cn.axzo.nanopart.visa.api.config.VisaApiAutoConfiguration \ No newline at end of file diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java similarity index 73% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 097b5bfb..7fd82b67 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -1,23 +1,23 @@ -package cn.axzo.visa.server.controller; +package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; -import cn.axzo.visa.api.changerecord.ChangeRecordApi; -import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.request.VisaChangeExportReq; -import cn.axzo.visa.api.request.VisaChangePageSearchReq; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.request.VisaDetailByIdRequest; -import cn.axzo.visa.api.request.VisaInitiatorListReq; -import cn.axzo.visa.api.request.VisaRecordSelectReq; -import cn.axzo.visa.api.response.VisaChangeInitiatorResp; -import cn.axzo.visa.api.response.VisaChangePageSearchResp; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.visa.server.service.ChangeRecordConfirmService; -import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; +import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; +import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java similarity index 78% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java index abd0edec..84e67970 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordLogController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java @@ -1,10 +1,10 @@ -package cn.axzo.visa.server.controller; +package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiListResult; -import cn.axzo.visa.api.changerecord.ChangeRecordLogApi; -import cn.axzo.visa.api.request.FetchVisaLogByVisaIdRequest; -import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; -import cn.axzo.visa.server.service.ChangeRecordLogService; +import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordLogApi; +import cn.axzo.nanopart.visa.api.request.FetchVisaLogByVisaIdRequest; +import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java similarity index 59% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index 115a8fe3..d4699895 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -1,26 +1,20 @@ -package cn.axzo.visa.server.controller; +package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.visa.api.changerecord.ChangeRecordRelationApi; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; -import cn.axzo.visa.api.request.ImGroupOperationReq; -import cn.axzo.visa.api.request.ImGroupTipsQueryReq; -import cn.axzo.visa.api.request.VisaRelationReq; -import cn.axzo.visa.api.response.ImGroupTipsResp; -import cn.axzo.visa.api.response.VisaRelationResp; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordRelation; -import cn.axzo.visa.server.service.ChangeRecordRelationService; -import cn.axzo.visa.server.service.ChangeRecordService; -import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; +import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; +import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; +import cn.axzo.nanopart.visa.api.request.VisaRelationReq; +import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; +import cn.axzo.nanopart.visa.api.response.VisaRelationResp; +import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import java.util.List; -import java.util.Objects; /** * @author xudawei diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java similarity index 95% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 10ecf71d..52250cc2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.server.domain; +package cn.axzo.nanopart.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java similarity index 93% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java index 8f981f7b..97fcbbfe 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordBill.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java @@ -1,7 +1,7 @@ -package cn.axzo.visa.server.domain; +package cn.axzo.nanopart.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; -import cn.axzo.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java similarity index 94% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java index bf91cd4a..d7133fc2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordConfirm.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.server.domain; +package cn.axzo.nanopart.visa.server.domain; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java index 8f29f254..128e1b2d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.domain; +package cn.axzo.nanopart.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java index dc9494b2..b0846124 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/domain/ChangeRecordRelation.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.domain; +package cn.axzo.nanopart.visa.server.domain; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaAddLogContext.java similarity index 80% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaAddLogContext.java index 010f2e22..9c1ac9a9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaAddLogContext.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaAddLogContext.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java similarity index 89% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java index 650be46e..b1cd2807 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java index fa705e9f..283be9a1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java index 4c34a97b..ca1943ef 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaExportDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; import com.alibaba.excel.annotation.ExcelProperty; import lombok.AllArgsConstructor; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogDto.java similarity index 82% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogDto.java index f6f0173d..731ff412 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogDto.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java similarity index 93% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java index 5a3cd7ea..89aa170a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaLogParam.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java @@ -1,8 +1,8 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java similarity index 91% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java index 89a64bb4..70b4b39c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/dto/VisaRelationDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.dto; +package cn.axzo.nanopart.visa.server.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordBillDao.java similarity index 66% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordBillDao.java index 096af5b5..6bf5f9ad 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordBillDao.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordBillDao.java @@ -1,7 +1,6 @@ -package cn.axzo.visa.server.mapper; +package cn.axzo.nanopart.visa.server.mapper; -import cn.axzo.visa.server.domain.ChangeRecordBill; -import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordConfirmDao.java similarity index 71% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordConfirmDao.java index 0e750000..770a3dc3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordConfirmDao.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordConfirmDao.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.mapper; +package cn.axzo.nanopart.visa.server.mapper; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordDao.java similarity index 71% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordDao.java index 9ed96183..54050363 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordDao.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordDao.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.mapper; +package cn.axzo.nanopart.visa.server.mapper; -import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordLogDao.java similarity index 72% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordLogDao.java index d30fe419..1ce735c9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordLogDao.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordLogDao.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.mapper; +package cn.axzo.nanopart.visa.server.mapper; -import cn.axzo.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordRelationDao.java similarity index 72% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordRelationDao.java index 821b3c7a..925dc2af 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mapper/ChangeRecordRelationDao.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mapper/ChangeRecordRelationDao.java @@ -1,6 +1,6 @@ -package cn.axzo.visa.server.mapper; +package cn.axzo.nanopart.visa.server.mapper; -import cn.axzo.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java similarity index 93% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java index 7652d333..2dfd5f1f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/BasicLogSupport.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.mq.listener.workflow; +package cn.axzo.nanopart.visa.server.mq.listener.workflow; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; -import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import com.google.common.collect.Lists; import org.springframework.util.CollectionUtils; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java similarity index 84% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 5caf0f33..93b5f3b6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,20 +1,20 @@ -package cn.axzo.visa.server.mq.listener.workflow.process; +package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.mq.listener.workflow.BasicLogSupport; -import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; -import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; +import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; -import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; /** * 工作流广播的实例维度的所有事件类型 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java similarity index 84% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 81539112..93ea23a5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -1,17 +1,17 @@ -package cn.axzo.visa.server.mq.listener.workflow.task; +package cn.axzo.nanopart.visa.server.mq.listener.workflow.task; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.mq.listener.workflow.BasicLogSupport; -import cn.axzo.visa.server.mq.producer.VisaChangeLogPayload; -import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; +import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; import org.springframework.stereotype.Component; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; -import static cn.axzo.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; /** * 工作流广播的任务维度的所有事件类型 diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java similarity index 82% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java index 7db65c7c..0cafa4a0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogPayload.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java @@ -1,10 +1,8 @@ -package cn.axzo.visa.server.mq.producer; +package cn.axzo.nanopart.visa.server.mq.producer; import cn.axzo.framework.rocketmq.Event; -import cn.axzo.visa.api.enums.MQEventEnum; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import cn.axzo.nanopart.visa.api.enums.MQEventEnum; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -13,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.io.Serializable; import java.util.Date; -import java.util.Map; /** * 变洽签单据日志 MQ Payload diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogProducer.java similarity index 82% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogProducer.java index 97899dc7..438f1961 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/mq/producer/VisaChangeLogProducer.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogProducer.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.mq.producer; +package cn.axzo.nanopart.visa.server.mq.producer; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java index 0b3a30a2..c42f5d4d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ApolloConstructionAreaGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.apollo.api.ApolloConstructionAreaApi; import cn.axzo.apollo.api.res.ConstructionAreaInfo; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java similarity index 90% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java index 6bdbd159..89e410be 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/CooperateShipGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.maokai.api.client.CooperateShipQueryApi; import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.response.CooperateShipResp; -import cn.axzo.visa.server.utils.RpcUtil; +import cn.axzo.nanopart.visa.server.utils.RpcUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java index 96ca0631..3e9ff8ed 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DataObjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.foundation.result.ApiResult; import cn.axzo.karma.client.feign.tyr.DataObjectApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingMajorGateway.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingMajorGateway.java index 57640987..2bc46dc7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/DrawingMajorGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingMajorGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.pokonyan.util.RpcUtil; import cn.axzo.thor.client.feign.DrawingMajorApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java similarity index 98% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java index 41139a86..1c075d02 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/MsgCenterGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.feign.GroupApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java similarity index 98% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java index 3f30516f..3004ff7f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalNodeUserGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.foundation.page.PageResp; import cn.axzo.foundation.result.ApiResult; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java index 6295607e..ec0cf0a4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/OrganizationalUnitGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.maokai.api.client.OrganizationalUnitApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java index 7abea7d7..cdb1d3d3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProfileGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.basics.profiles.api.UserProfileServiceApi; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java similarity index 92% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java index f0ea78b7..aee725da 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/ProjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java @@ -1,10 +1,10 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.apollo.workspace.api.workspace.ProjectApi; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; import cn.axzo.basics.common.util.NumberUtil; -import cn.axzo.visa.server.utils.RpcUtil; +import cn.axzo.nanopart.visa.server.utils.RpcUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index 5eca22b3..9a053d9d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.pokonyan.util.RpcUtil; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkspaceGateway.java similarity index 96% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkspaceGateway.java index 246f6bbc..3996fa13 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/rpc/WorkspaceGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkspaceGateway.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.rpc; +package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.apollo.core.web.Result; import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java similarity index 79% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index bfe3be8e..191fec6e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -1,7 +1,7 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; -import cn.axzo.visa.server.domain.ChangeRecordBill; -import cn.axzo.visa.server.dto.VisaBillDto; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; +import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import java.util.List; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java similarity index 81% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index 129af48d..ce67b4d4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -1,11 +1,11 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; -import cn.axzo.visa.api.enums.VisaButtonTypeEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; -import cn.axzo.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import java.util.List; import java.util.Set; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordLogService.java similarity index 81% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordLogService.java index e6b60da3..00d96bfa 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordLogService.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.dto.VisaLogParam; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import java.util.List; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java similarity index 73% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index cae62e1b..67ecac33 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -1,10 +1,10 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordRelation; -import cn.axzo.visa.server.dto.VisaRelationDto; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; import java.util.List; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java similarity index 69% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index 816d289f..df064247 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -1,18 +1,18 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; import cn.axzo.framework.domain.web.result.PageData; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.request.VisaChangeExportReq; -import cn.axzo.visa.api.request.VisaChangePageSearchReq; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.request.VisaInitiatorListReq; -import cn.axzo.visa.api.response.VisaChangeInitiatorResp; -import cn.axzo.visa.api.response.VisaChangePageSearchResp; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; +import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import java.util.List; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java similarity index 88% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index fb07010b..8f37d189 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.service; +package cn.axzo.nanopart.visa.server.service; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.server.dto.VisaAddLogContext; -import cn.axzo.visa.server.dto.VisaLogParam; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; +import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java similarity index 91% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 86c40058..51976cb4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,9 +1,9 @@ -package cn.axzo.visa.server.service.impl; +package cn.axzo.nanopart.visa.server.service.impl; -import cn.axzo.visa.server.domain.ChangeRecordBill; -import cn.axzo.visa.server.dto.VisaBillDto; -import cn.axzo.visa.server.mapper.ChangeRecordBillDao; -import cn.axzo.visa.server.service.ChangeRecordBillService; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; +import cn.axzo.nanopart.visa.server.dto.VisaBillDto; +import cn.axzo.nanopart.visa.server.mapper.ChangeRecordBillDao; +import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java similarity index 93% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 45bad9b5..efbb95e5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.service.impl; +package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; @@ -6,22 +6,22 @@ import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; -import cn.axzo.visa.api.enums.VisaButtonTypeEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; -import cn.axzo.visa.server.dto.VisaConfirmDto; -import cn.axzo.visa.server.mapper.ChangeRecordConfirmDao; -import cn.axzo.visa.server.rpc.DataObjectApiGateway; -import cn.axzo.visa.server.rpc.OrganizationalUnitGateway; -import cn.axzo.visa.server.rpc.ProfileGateway; -import cn.axzo.visa.server.rpc.WorkflowGateway; -import cn.axzo.visa.server.service.ChangeRecordConfirmService; -import cn.axzo.visa.server.service.ChangeRecordLogService; -import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.server.mapper.ChangeRecordConfirmDao; +import cn.axzo.nanopart.visa.server.rpc.DataObjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; +import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java similarity index 95% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 7c6eaa9d..3d8a6a91 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -1,20 +1,20 @@ -package cn.axzo.visa.server.service.impl; +package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.dto.VisaLogDto; +import cn.axzo.nanopart.visa.server.dto.VisaLogParam; +import cn.axzo.nanopart.visa.server.mapper.ChangeRecordLogDao; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.response.FetchVisaLogByVisaIdResponse; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.dto.VisaLogDto; -import cn.axzo.visa.server.dto.VisaLogParam; -import cn.axzo.visa.server.mapper.ChangeRecordLogDao; -import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; -import cn.axzo.visa.server.service.ChangeRecordLogService; -import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java similarity index 89% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 61ba2dca..efa3335f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -1,25 +1,25 @@ -package cn.axzo.visa.server.service.impl; +package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.framework.domain.ServiceException; -import cn.axzo.visa.api.enums.VisaButtonTypeEnum; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.request.ImGroupOperationReq; -import cn.axzo.visa.api.request.ImGroupTipsQueryReq; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.response.ImGroupButton; -import cn.axzo.visa.api.response.ImGroupTipsResp; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordRelation; -import cn.axzo.visa.server.dto.VisaRelationDto; -import cn.axzo.visa.server.mapper.ChangeRecordRelationDao; -import cn.axzo.visa.server.rpc.ProfileGateway; -import cn.axzo.visa.server.service.ChangeRecordRelationService; -import cn.axzo.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; +import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.response.ImGroupButton; +import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; +import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao; +import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -31,15 +31,14 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import java.util.AbstractMap; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -import static cn.axzo.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS; -import static cn.axzo.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS; /** * @author xudawei diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java similarity index 91% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index bd3fbffd..6c40231b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.service.impl; +package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; @@ -12,55 +12,54 @@ import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; -import cn.axzo.im.center.api.feign.GroupApi; import cn.axzo.im.center.api.vo.req.GroupCreateRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; +import cn.axzo.nanopart.visa.server.dto.VisaBillDto; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.server.dto.VisaLogParam; +import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; +import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; +import cn.axzo.nanopart.visa.server.rpc.CooperateShipGateway; +import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; +import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.thor.client.model.DrawingMajorResp; -import cn.axzo.visa.api.enums.VisaBillTypeEnum; -import cn.axzo.visa.api.enums.VisaChangeFieldEnum; -import cn.axzo.visa.api.enums.VisaConfirmBizTypeEnum; -import cn.axzo.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.visa.api.enums.VisaRelationVarTypeEnum; -import cn.axzo.visa.api.enums.VisaStatusEnum; -import cn.axzo.visa.api.request.ChangeStatusRequest; -import cn.axzo.visa.api.request.VisaChangeApproveCreateReq; -import cn.axzo.visa.api.request.VisaChangeDiscussCreateReq; -import cn.axzo.visa.api.request.VisaChangeExportReq; -import cn.axzo.visa.api.request.VisaChangePageSearchReq; -import cn.axzo.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.visa.api.request.VisaInitiatorListReq; -import cn.axzo.visa.api.response.VisaChangeInitiatorResp; -import cn.axzo.visa.api.response.VisaChangePageSearchResp; -import cn.axzo.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.visa.server.domain.ChangeRecord; -import cn.axzo.visa.server.domain.ChangeRecordBill; -import cn.axzo.visa.server.domain.ChangeRecordConfirm; -import cn.axzo.visa.server.domain.ChangeRecordLog; -import cn.axzo.visa.server.domain.ChangeRecordRelation; -import cn.axzo.visa.server.dto.VisaAddLogContext; -import cn.axzo.visa.server.dto.VisaBillDto; -import cn.axzo.visa.server.dto.VisaConfirmDto; -import cn.axzo.visa.server.dto.VisaLogParam; -import cn.axzo.visa.server.mapper.ChangeRecordDao; -import cn.axzo.visa.server.rpc.ApolloConstructionAreaGateway; -import cn.axzo.visa.server.rpc.CooperateShipGateway; -import cn.axzo.visa.server.rpc.DrawingMajorGateway; -import cn.axzo.visa.server.rpc.MsgCenterGateway; -import cn.axzo.visa.server.rpc.OrganizationalNodeUserGateway; -import cn.axzo.visa.server.rpc.ProfileGateway; -import cn.axzo.visa.server.rpc.ProjectApiGateway; -import cn.axzo.visa.server.rpc.WorkflowGateway; -import cn.axzo.visa.server.rpc.WorkspaceGateway; -import cn.axzo.visa.server.service.ChangeRecordBillService; -import cn.axzo.visa.server.service.ChangeRecordConfirmService; -import cn.axzo.visa.server.service.ChangeRecordLogService; -import cn.axzo.visa.server.service.ChangeRecordRelationService; -import cn.axzo.visa.server.service.ChangeRecordService; -import cn.axzo.visa.server.service.VisaHelper; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; +import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.server.service.VisaHelper; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -95,21 +94,21 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_NO; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_REASON; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROJECT; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_RECTIFICATION_ORDER; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; -import static cn.axzo.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; -import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; -import static cn.axzo.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_NO; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_REASON; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROJECT; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_RECTIFICATION_ORDER; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; /** * @author xudawei diff --git a/visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/RpcUtil.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/RpcUtil.java index 858b599b..c1f7c49a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/visa/server/utils/RpcUtil.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/RpcUtil.java @@ -1,4 +1,4 @@ -package cn.axzo.visa.server.utils; +package cn.axzo.nanopart.visa.server.utils; import cn.axzo.apollo.core.web.Result; import cn.axzo.framework.domain.web.result.ApiListResult; From 5614cdbbb0abe5abdfbaec307db6aeb4537bcd4f Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 5 Feb 2025 20:37:36 +0800 Subject: [PATCH 067/341] feat: (REQ-3300) fix-complier-error --- .../visa/server/service/ChangeRecordRelationService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index 67ecac33..abc28d4b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -1,10 +1,14 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; +import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; From 984af6df3e27ac73a68a88b4ea13a72f072684f1 Mon Sep 17 00:00:00 2001 From: wangli Date: Wed, 5 Feb 2025 23:51:45 +0800 Subject: [PATCH 068/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=BE=A4=E8=81=8A=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/constant/VisaConstant.java | 4 ++ .../service/impl/ChangeRecordServiceImpl.java | 60 ++++++++++++------- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index e31643a0..691e1189 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -17,6 +17,10 @@ public interface VisaConstant { * 用于发送待办的变量名 */ String WORKFLOW_PENDING_TOPIC = "theme"; + /** + * IM 群的扩展信息 + */ + String IM_GROUP_BIZ_INFO_RECORD_ID = "visaId"; // **************** 业务传入审批的表单项组件的唯一的 KEY ***************** // 单号 String FORM_FIELD_NO = "no"; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6c40231b..ca858f6b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -12,11 +12,30 @@ import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; +import cn.axzo.im.center.api.vo.PersonAccountAttribute; import cn.axzo.im.center.api.vo.req.GroupCreateRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; +import cn.axzo.im.center.common.enums.GroupType; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; +import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; +import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; @@ -36,30 +55,13 @@ import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; -import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; -import cn.axzo.thor.client.model.DrawingMajorResp; -import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; -import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; -import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; -import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; -import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; -import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; -import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; -import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; -import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; -import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; -import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; -import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; -import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.nanopart.visa.server.service.VisaHelper; +import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -76,6 +78,7 @@ import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.apache.groovy.util.Maps; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; @@ -107,6 +110,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_RECORD_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; @@ -476,6 +480,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl PersonAccountAttribute.builder() + // TODO + .build()) + .collect(Collectors.toSet())); + } + request.setAvatar(""); + request.setMemberLimit(100L); + request.setBizGroupInfo(Maps.of(IM_GROUP_BIZ_INFO_RECORD_ID, visaId)); GroupCreateResponse imGroup = msgCenterGateway.createImGroup(request); updateImInfo(visaId, imGroup); @@ -494,6 +513,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 10:11:06 +0800 Subject: [PATCH 069/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=BA=9F=E6=AD=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 11 +++- .../api/request/ChangeRecordForbidReq.java | 45 +++++++++++++++ .../controller/ChangeRecordController.java | 7 +++ .../visa/server/rpc/WorkflowGateway.java | 6 ++ .../server/service/ChangeRecordService.java | 8 +++ .../service/impl/ChangeRecordServiceImpl.java | 56 +++++++++++++++++-- 6 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 8a67b23f..e87bc3ea 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -10,10 +11,10 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; -import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -104,4 +105,12 @@ public interface ChangeRecordApi { */ @PostMapping("/api/visa/change/initiator/list") ApiResult> listInitiator(@RequestBody @Validated VisaInitiatorListReq req); + + /** + * 变洽签废止 + * + * @return + */ + @PostMapping("/api/visa/change/record/forbid") + ApiResult forbidChangeRecord(@Validated @RequestBody ChangeRecordForbidReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java new file mode 100644 index 00000000..e76e9d98 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java @@ -0,0 +1,45 @@ +package cn.axzo.nanopart.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * 变洽签废止 + * + * @author wangli + * @since 2025-02-05 20:26 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class ChangeRecordForbidReq { + + /** + * 变洽签主键 ID + */ + @NotNull(message = "变洽签 ID 不能为空") + private Long visaId; + + /** + * 操作人 personId + */ + @NotNull(message = "操作人 personId 不能为空") + private Long operatorPersonId; + + /** + * 操作人 ouId + */ + @NotNull(message = "操作人 ouId 不能为空") + private Long operatorOuId; + + /** + * 操作人 workspaceId + */ + @NotNull(message = "操作人 workspaceId 不能为空") + private Long operatorWorkspaceId; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 7fd82b67..742193d2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; +import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -97,4 +98,10 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult> listInitiator(VisaInitiatorListReq req) { return ApiResult.ok(changeRecordService.listInitiator(req)); } + + @Override + public ApiResult forbidChangeRecord(ChangeRecordForbidReq req) { + changeRecordService.forbid(req); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index 9a053d9d..587e4025 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.pokonyan.util.RpcUtil; +import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.starter.api.WorkflowCoreService; @@ -28,6 +29,11 @@ public class WorkflowGateway { return workflowCoreService.createProcessInstance(dto); } + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "中止流程实例") + public void processInstanceAbort(BpmnProcessInstanceAbortDTO dto) { + workflowCoreService.abortProcessInstance(dto); + } + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "查询某个人是否是指定流程的审批人") public Boolean checkInstanceApprover(BpmnProcessInstanceCheckApproverDTO dto) { try { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index df064247..e80c826d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -95,4 +96,11 @@ public interface ChangeRecordService { * @param req 筛查条件和导出字段 */ void export(VisaChangeExportReq req); + + /** + * 变洽签单据废止,并解散 IM 群聊,中止审批 + * + * @param req + */ + void forbid(ChangeRecordForbidReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ca858f6b..58bb87f6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -14,7 +14,9 @@ import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.im.center.api.vo.PersonAccountAttribute; import cn.axzo.im.center.api.vo.req.GroupCreateRequest; +import cn.axzo.im.center.api.vo.req.GroupDismissRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; +import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.GroupType; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; @@ -26,6 +28,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -63,6 +66,7 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.nanopart.visa.server.service.VisaHelper; import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; +import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; @@ -153,6 +157,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl !i.getIsAdmin()) .map(i -> PersonAccountAttribute.builder() - // TODO + .personId(String.valueOf(i.getPersonId())) + .ouId(i.getUnitId()) + .workspaceId(i.getWorkspaceId()) + .appType(AppTypeEnum.CMP) .build()) .collect(Collectors.toSet())); } + // 群头像 request.setAvatar(""); request.setMemberLimit(100L); request.setBizGroupInfo(Maps.of(IM_GROUP_BIZ_INFO_RECORD_ID, visaId)); @@ -956,5 +971,34 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 10:19:20 +0800 Subject: [PATCH 070/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=B8=AD=E6=AD=A2=E5=AE=A1=E6=89=B9=E6=B5=81=E7=9A=84=E4=B8=AD?= =?UTF-8?q?=E6=AD=A2=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 58bb87f6..7c9958bc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -992,7 +992,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 10:35:28 +0800 Subject: [PATCH 071/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8A=20Tips=20=E7=9A=84=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java | 2 +- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java index 776c3501..468da89d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupTipsQueryReq.java @@ -34,7 +34,7 @@ public class ImGroupTipsQueryReq { * 当前登录人是否是群主 */ @NotNull(message = "群主标识不能为空") - private Boolean groupOwner; + private Boolean isGroupOwner; /** * 当前群成员总数, 包含群主 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index efa3335f..6e7dfbd7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -164,7 +164,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl buttons = new ArrayList<>(); - if (Boolean.TRUE.equals(req.getGroupOwner())) { + if (Boolean.TRUE.equals(req.getIsGroupOwner())) { Map countMap = imGroupParticipate.stream() .collect(Collectors.groupingBy(ChangeRecordRelation::getVarExt, Collectors.counting())); Long agreeCount = countMap.getOrDefault(VisaButtonTypeEnum.AGREE.getCode(), 0L); From b668855ea4a63b39097817090aef7da4842bf739 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 6 Feb 2025 10:40:55 +0800 Subject: [PATCH 072/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99Bean=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/server/job/BlackUserSyncJob.java | 5 ++++- .../server/mq/producer/BlackProducer.java | 15 ++++++--------- nanopart-server/pom.xml | 12 ++++++++++++ .../cn/axzo/nanopart/NanopartApplication.java | 8 ++++++-- .../mq/listener/workflow/BasicLogSupport.java | 10 +++++----- .../process/ProcessInstanceAllEventHandler.java | 10 +++++----- .../workflow/task/ProcessTaskAllEventHandler.java | 10 +++++----- ...Gateway.java => VisaCooperateShipGateway.java} | 2 +- ...ava => VisaOrganizationalNodeUserGateway.java} | 8 ++++---- ...rofileGateway.java => VisaProfileGateway.java} | 2 +- .../impl/ChangeRecordConfirmServiceImpl.java | 6 +++--- .../service/impl/ChangeRecordLogServiceImpl.java | 6 +++--- .../impl/ChangeRecordRelationServiceImpl.java | 6 +++--- .../service/impl/ChangeRecordServiceImpl.java | 14 +++++++------- 14 files changed, 65 insertions(+), 49 deletions(-) rename visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/{CooperateShipGateway.java => VisaCooperateShipGateway.java} (95%) rename visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/{OrganizationalNodeUserGateway.java => VisaOrganizationalNodeUserGateway.java} (85%) rename visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/{ProfileGateway.java => VisaProfileGateway.java} (98%) diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/job/BlackUserSyncJob.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/job/BlackUserSyncJob.java index 6b569bac..ef865a35 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/job/BlackUserSyncJob.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/job/BlackUserSyncJob.java @@ -40,6 +40,9 @@ public class BlackUserSyncJob extends IJobHandler{ @Resource private BlackAndWhiteListService blackAndWhiteListService; + + @Resource + private BlackProducer blackProducer; /** * 定时任务执行逻辑 * 这具数据比较少,一直性发个几百条我问题不在 @@ -79,7 +82,7 @@ public class BlackUserSyncJob extends IJobHandler{ blackList.forEach(item -> sends.add(item.getParam())); String jsonStr = JSONUtil.toJsonStr(sends); if(Objects.nonNull(blackModuleEnum) && Objects.nonNull(event)){ - BlackProducer.send(event, jsonStr); + blackProducer.send(event, jsonStr); } }); return ReturnT.SUCCESS; diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/mq/producer/BlackProducer.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/mq/producer/BlackProducer.java index 3a439d73..7333115e 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/mq/producer/BlackProducer.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/mq/producer/BlackProducer.java @@ -11,13 +11,16 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Slf4j @Service -public class BlackProducer implements InitializingBean { - private static EventProducer eventProducer; - public static void send(MQEventEnum mqEventEnum, String data) { +public class BlackProducer { + + @Resource + private EventProducer eventProducer; + public void send(MQEventEnum mqEventEnum, String data) { if(mqEventEnum == null){ throw new ServiceException("无法正确发送mq: mqEventEnum不能为空"); } @@ -33,10 +36,4 @@ public class BlackProducer implements InitializingBean { .data(data) .build()); } - - @Override - public void afterPropertiesSet() { - eventProducer = SpringUtil.getBean(EventProducer.class); - } - } diff --git a/nanopart-server/pom.xml b/nanopart-server/pom.xml index 92d8fba2..50fd8844 100644 --- a/nanopart-server/pom.xml +++ b/nanopart-server/pom.xml @@ -133,6 +133,18 @@ 2.0.0-SNAPSHOT + + cn.axzo.nanopart + visa-api + 2.0.0-SNAPSHOT + + + + cn.axzo.nanopart + visa-server + 2.0.0-SNAPSHOT + + cn.axzo.im.center im-center-api diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java index 521bb1b8..e0b3aa91 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart; +import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.nanopart.config.RocketMQEventConfiguration; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -9,12 +10,15 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.Import; @MapperScan(value = {"cn.axzo.**.mapper"}) -@SpringBootApplication +@SpringBootApplication(scanBasePackages = "cn.axzo", exclude = { + org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class + ,cn.axzo.framework.swagger.yapi.config.SyncSwaggerToYApiAutoConfiguration.class +}) @EnableFeignClients(basePackages = { "cn.axzo" }) @EnableAspectJAutoProxy() -@Import(RocketMQEventConfiguration.class) +@Import({RocketMQEventConfiguration.class, ReportServiceSDK.class}) public class NanopartApplication { public static void main(String[] args) { SpringApplication.run(NanopartApplication.class, args); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java index 2dfd5f1f..b9e1f73a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java @@ -3,7 +3,7 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; -import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import com.google.common.collect.Lists; import org.springframework.util.CollectionUtils; @@ -17,11 +17,11 @@ import java.util.Objects; */ public abstract class BasicLogSupport { private final EventProducer eventProducer; - protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; - protected BasicLogSupport(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { + protected BasicLogSupport(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { this.eventProducer = eventProducer; - this.organizationalNodeUserGateway = organizationalNodeUserGateway; + this.visaOrganizationalNodeUserGateway = visaOrganizationalNodeUserGateway; } protected String buildLogUserInfo(BpmnTaskDelegateAssigner assigner) { @@ -37,7 +37,7 @@ public abstract class BasicLogSupport { } protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) { - List users = organizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() + List users = visaOrganizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() .workspaceId(Long.valueOf(assigner.getTenantId())) .ouId(Long.valueOf(assigner.getOuId())) .personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId()))) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 93b5f3b6..58d24123 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -4,7 +4,7 @@ import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; -import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; @@ -25,12 +25,12 @@ import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; @Component public class ProcessInstanceAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler { private final EventProducer eventProducer; - protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; - public ProcessInstanceAllEventHandler(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { - super(eventProducer, organizationalNodeUserGateway); + public ProcessInstanceAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { + super(eventProducer, visaOrganizationalNodeUserGateway); this.eventProducer = eventProducer; - this.organizationalNodeUserGateway = organizationalNodeUserGateway; + this.visaOrganizationalNodeUserGateway = visaOrganizationalNodeUserGateway; } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 93ea23a5..ead7a7d9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -5,7 +5,7 @@ import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; -import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; import org.springframework.stereotype.Component; @@ -22,12 +22,12 @@ import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; @Component public class ProcessTaskAllEventHandler extends BasicLogSupport implements ProcessTaskEventHandler { private final EventProducer eventProducer; - protected final OrganizationalNodeUserGateway organizationalNodeUserGateway; + protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; - public ProcessTaskAllEventHandler(EventProducer eventProducer, OrganizationalNodeUserGateway organizationalNodeUserGateway) { - super(eventProducer, organizationalNodeUserGateway); + public ProcessTaskAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { + super(eventProducer, visaOrganizationalNodeUserGateway); this.eventProducer = eventProducer; - this.organizationalNodeUserGateway = organizationalNodeUserGateway; + this.visaOrganizationalNodeUserGateway = visaOrganizationalNodeUserGateway; } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaCooperateShipGateway.java similarity index 95% rename from visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaCooperateShipGateway.java index 89e410be..b9dd0ed7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/CooperateShipGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaCooperateShipGateway.java @@ -20,7 +20,7 @@ import java.util.Objects; @Slf4j @Service @RequiredArgsConstructor -public class CooperateShipGateway { +public class VisaCooperateShipGateway { private final CooperateShipQueryApi cooperateShipQueryApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeUserGateway.java similarity index 85% rename from visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeUserGateway.java index 3004ff7f..44e30ec3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalNodeUserGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeUserGateway.java @@ -26,7 +26,7 @@ import java.util.Objects; @Service @Slf4j @RequiredArgsConstructor -public class OrganizationalNodeUserGateway { +public class VisaOrganizationalNodeUserGateway { private final OrganizationalNodeUserQueryApi organizationalNodeUserQueryApi; @@ -43,12 +43,12 @@ public class OrganizationalNodeUserGateway { return new PageResp(); } try { - log.info("OrganizationalNodeUserGateway list, params:{}", req); + log.info("VisaOrganizationalNodeUserGateway list, params:{}", req); ApiResult> list = orgNodeUserApi.list(req); - log.info("OrganizationalNodeUserGateway list, result:{}", JSON.toJSONString(list)); + log.info("VisaOrganizationalNodeUserGateway list, result:{}", JSON.toJSONString(list)); return list.getData(); } catch (Exception e) { - log.warn("OrganizationalNodeUserGateway list exception", e); + log.warn("VisaOrganizationalNodeUserGateway list exception", e); throw e; } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java similarity index 98% rename from visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java index cdb1d3d3..bea10999 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProfileGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java @@ -21,7 +21,7 @@ import java.util.Objects; @Slf4j @Service @RequiredArgsConstructor -public class ProfileGateway { +public class VisaProfileGateway { private final UserProfileServiceApi userProfileServiceApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index efbb95e5..b70f64a4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -17,7 +17,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.nanopart.visa.server.rpc.DataObjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; -import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; @@ -52,7 +52,7 @@ import java.util.stream.Collectors; public class ChangeRecordConfirmServiceImpl extends ServiceImpl implements ChangeRecordConfirmService { @Resource - private ProfileGateway profileGateway; + private VisaProfileGateway visaProfileGateway; @Resource private OrganizationalUnitGateway organizationalUnitGateway; @@ -269,7 +269,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl profiles = profileGateway.getProfiles(Lists.newArrayList(personSet)); + List profiles = visaProfileGateway.getProfiles(Lists.newArrayList(personSet)); if (CollectionUtils.isEmpty(profiles)) { return Maps.newHashMap(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 3d8a6a91..c61e24d9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -7,7 +7,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.dto.VisaLogDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordLogDao; -import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; @@ -37,7 +37,7 @@ import java.util.stream.Collectors; public class ChangeRecordLogServiceImpl extends ServiceImpl implements ChangeRecordLogService { @Resource - private OrganizationalNodeUserGateway organizationalNodeUserGateway; + private VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; @Resource private ChangeRecordService changeRecordService; @@ -229,7 +229,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl pageResp = organizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() + PageResp pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() .personId(personId) .organizationalUnitId(ouId) .workspaceId(workspaceId) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index efa3335f..f0b03e98 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -17,7 +17,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao; -import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.alibaba.fastjson.JSON; @@ -50,7 +50,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPA @RequiredArgsConstructor public class ChangeRecordRelationServiceImpl extends ServiceImpl implements ChangeRecordRelationService { private final ChangeRecordService changeRecordService; - private final ProfileGateway profileGateway; + private final VisaProfileGateway visaProfileGateway; /** * 保存 @@ -222,7 +222,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Objects.equals(i.getCreateBy(), req.getPersonId())) .anyMatch(i -> Objects.equals(i.getContentExt(), String.valueOf(req.getOuId()))); if (!operated) { - PersonProfileDto profile = profileGateway.getProfile(record.getCreateBy()); + PersonProfileDto profile = visaProfileGateway.getProfile(record.getCreateBy()); resp.setTipsText(String.format(IM_GROUP_PARTICIPATE_TIPS, profile.getRealName(), record.getTopic())); buttons.add(ImGroupButton.builder() .name(VisaButtonTypeEnum.AGREE.getDesc()) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6c40231b..cd85d106 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -28,11 +28,11 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; -import cn.axzo.nanopart.visa.server.rpc.CooperateShipGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; -import cn.axzo.nanopart.visa.server.rpc.OrganizationalNodeUserGateway; -import cn.axzo.nanopart.visa.server.rpc.ProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; @@ -128,7 +128,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); Map> billMap = changeRecordBills.stream().collect(Collectors.groupingBy(ChangeRecordBill::getBillType, Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); From d96ab838479f8df18386efc4b3ce9e7225c0486b Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 6 Feb 2025 11:39:14 +0800 Subject: [PATCH 073/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99-=E7=B1=BB=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/axzo/nanopart/NanopartApplication.java | 7 ++----- .../nanopart/visa/api/request/VisaDetailByIdRequest.java | 1 - .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java index e0b3aa91..2e36edb8 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java @@ -10,15 +10,12 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.Import; @MapperScan(value = {"cn.axzo.**.mapper"}) -@SpringBootApplication(scanBasePackages = "cn.axzo", exclude = { - org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class - ,cn.axzo.framework.swagger.yapi.config.SyncSwaggerToYApiAutoConfiguration.class -}) +@SpringBootApplication @EnableFeignClients(basePackages = { "cn.axzo" }) @EnableAspectJAutoProxy() -@Import({RocketMQEventConfiguration.class, ReportServiceSDK.class}) +@Import({RocketMQEventConfiguration.class}) public class NanopartApplication { public static void main(String[] args) { SpringApplication.run(NanopartApplication.class, args); diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java index cbc8e708..0e68d9f3 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java @@ -27,7 +27,6 @@ public class VisaDetailByIdRequest { /** * 人员Id */ - @NotNull(message = "人员Id不能为空") private Long personId; private Long workspaceId; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0963523c..9dfc6c37 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -153,8 +153,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 14:32:59 +0800 Subject: [PATCH 074/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeApproveCreateReq.java | 7 ++++++- .../nanopart/visa/api/request/VisaChangeTempCreateReq.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index cb5f902a..ed8e59cc 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -54,10 +54,15 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { */ private Long unitId; + /** + * 节点 Id + */ + private Long nodeId; /** * 审批人personId列表 */ - private List personIdList; + private List personIds; + } } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 3fc98635..41147910 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -166,7 +166,7 @@ public class VisaChangeTempCreateReq { /** * 确认人personId */ - private List personId; + private List personIds; } From 523848c319f5e13ba76d3de87c9ef28213df1475 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 6 Feb 2025 14:45:55 +0800 Subject: [PATCH 075/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeApproveCreateReq.java | 2 +- .../nanopart/visa/api/request/VisaChangeTempCreateReq.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index ed8e59cc..f4b80623 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -61,7 +61,7 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { /** * 审批人personId列表 */ - private List personIds; + private Long personId; } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 41147910..19ed6ace 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -156,6 +156,9 @@ public class VisaChangeTempCreateReq { */ private SaasCooperateShipCooperateTypeEnum type; + /** + * 单位 ID + */ private Long ouId; /** @@ -166,7 +169,7 @@ public class VisaChangeTempCreateReq { /** * 确认人personId */ - private List personIds; + private Long personId; } From a7422eea5f1b2e9efbb4ed97c39569b29f0b09ea Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 6 Feb 2025 15:04:21 +0800 Subject: [PATCH 076/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeApproveCreateReq.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index f4b80623..df825de1 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -63,6 +63,16 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { */ private Long personId; + /** + * 审批人的姓名 + */ + private String realName; + + /** + * 审批人头像 + */ + private String avatarUrl; + } } From 7a8babc487687ecb938dcdf0aa3cb0df2932f83c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 6 Feb 2025 15:05:22 +0800 Subject: [PATCH 077/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/VisaChangeApproveCreateReq.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index df825de1..0d6b090c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -64,12 +64,12 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { private Long personId; /** - * 审批人的姓名 + * (主要用于回显)审批人的姓名 */ private String realName; /** - * 审批人头像 + * (主要用于回显)审批人头像 */ private String avatarUrl; From 90720043f40305442f60837414243f88c5072964 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 6 Feb 2025 15:08:23 +0800 Subject: [PATCH 078/341] =?UTF-8?q?feat(REQ-3300):=20VisaChangeTempCreateR?= =?UTF-8?q?eq=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeApproveCreateReq.java | 5 +++-- .../nanopart/visa/api/request/VisaChangeTempCreateReq.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index 0d6b090c..f683c28a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.api.request; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,7 +43,7 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { * * @see cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum */ - private Integer type; + private SaasCooperateShipCooperateTypeEnum type; /** * 项目id @@ -52,7 +53,7 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { /** * 单位id */ - private Long unitId; + private Long ouId; /** * 节点 Id diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 19ed6ace..fa5e4614 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -162,7 +162,7 @@ public class VisaChangeTempCreateReq { private Long ouId; /** - * 单位的顶级节点Id或项目内班组节点id + * 确认人所在部门节点id或项目内班组节点id */ private Long nodeId; From b5d642eadefdea1427ac525db2f946052de26c0f Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 6 Feb 2025 15:28:34 +0800 Subject: [PATCH 079/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=A2=AB=E5=85=B3=E8=81=94=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 10 ---- .../api/request/VisaChangePageSearchReq.java | 5 ++ .../visa/api/request/VisaRecordSelectReq.java | 55 ------------------- .../response/VisaChangePageSearchResp.java | 9 +++ .../controller/ChangeRecordController.java | 6 -- .../service/ChangeRecordBillService.java | 10 ++++ .../impl/ChangeRecordBillServiceImpl.java | 16 +++++- .../service/impl/ChangeRecordServiceImpl.java | 29 ++++++++-- 8 files changed, 62 insertions(+), 78 deletions(-) delete mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index e87bc3ea..8f03a635 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -11,7 +11,6 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; -import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -88,15 +87,6 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/export") ApiResult exportVisaChangeRecord(@RequestBody @Validated VisaChangeExportReq req); - /** - * 变更单选择器 - * - * @param req {@link VisaRecordSelectReq} 筛选条件 - * @return 变更单列表 - */ - @PostMapping("/api/visa/change/record/select") - ApiResult> selectVisaChangeRecord(@RequestBody @Validated VisaRecordSelectReq req); - /** * 获取发起人列表 * diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index accc0a9e..22b419b7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -106,4 +106,9 @@ public class VisaChangePageSearchReq { */ private List visaIds; + /** + * 是否需要主单据(即是否被其他单据关联)信息 + */ + private Boolean needRelatedBill = false; + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java deleted file mode 100644 index 27379ea1..00000000 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRecordSelectReq.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.axzo.nanopart.visa.api.request; - -import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; -import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author chenwenjian - * @version 1.0 - * @date 2025/1/17 16:55 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class VisaRecordSelectReq { - - - /** - * 单据类型 - *

- * DESIGN_CHANGE:设计变更 - * TECHNOLOGY_APPROVED:技术核定 - * PROJECT_VISA:工程签证 - *

- * - * @see VisaTypeEnum - */ - private VisaTypeEnum type; - - /** - * 单号或主题 - *

- * 单号精确搜索,主题模糊搜索 - *

- */ - private String keyword; - - - /** - * 发起人 - */ - private List initiators; - - /** - * 状态 - */ - private List statuses; - -} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index 633d7f4c..447b8a34 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -108,6 +108,15 @@ public class VisaChangePageSearchResp { */ private VisaChangeInitiatorResp initiator; + /** + * 发生原因 + */ + private String reason; + /** + * 是否被其他单据关联 + */ + private Boolean isRelated; + public String getTypeDesc() { if (Objects.isNull(type)) { return null; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 742193d2..336c6b28 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -13,7 +13,6 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; -import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -89,11 +88,6 @@ public class ChangeRecordController implements ChangeRecordApi { return ApiResult.ok(); } - @Override - public ApiResult> selectVisaChangeRecord(VisaRecordSelectReq req) { - return null; - } - @Override public ApiResult> listInitiator(VisaInitiatorListReq req) { return ApiResult.ok(changeRecordService.listInitiator(req)); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index 191fec6e..ec18d3ba 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.service; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; @@ -38,4 +39,13 @@ public interface ChangeRecordBillService { */ List listById(Long visaId); + /** + * 获取指定类型单据的主单据(是否被其他单据关联) + * + * @param billType 单据类型 + * @param billIds 单据id + * @return 主单据信息 + */ + List findMainBill(VisaRelationFieldEnum billType, List billIds); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 51976cb4..63869a68 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,5 +1,7 @@ package cn.axzo.nanopart.visa.server.service.impl; +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordBillDao; @@ -24,7 +26,7 @@ import java.util.Objects; @Slf4j @Service @RequiredArgsConstructor -public class ChangeRecordBillServiceImpl extends ServiceImpl implements ChangeRecordBillService { +public class ChangeRecordBillServiceImpl extends ServiceImpl implements ChangeRecordBillService { /** * 新增 @@ -56,6 +58,7 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl findMainBill(VisaRelationFieldEnum billType, List billIds) { + AssertUtil.notNull(billType, "单据类型不能为空"); + AssertUtil.notEmpty(billIds, "单据Id不能为空"); + return lambdaQuery().in(ChangeRecordBill::getBillId, billIds) + .eq(ChangeRecordBill::getBillType, billType) + .eq(ChangeRecordBill::getIsDelete, 0) + .orderByDesc(ChangeRecordBill::getUpdateAt) + .list(); + } + /** * 查询数量 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 9dfc6c37..11380aa2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,7 +8,6 @@ import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; -import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; @@ -50,12 +49,12 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; -import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; @@ -153,7 +152,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildVisaChangePageSearchResp(List records) { + private List buildVisaChangePageSearchResp(List records, VisaChangePageSearchReq req) { if (CollectionUtils.isEmpty(records)) { return Collections.emptyList(); } @@ -791,6 +790,22 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorMap = getPersonBriefInfoMap(records.get(0).getRelationWorkspaceId(), initiatorPersonIdList); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); + // 获取主单据信息 + Map billMainMap; + if (req.getNeedRelatedBill()) { + List billIds = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); + List mainBill = changeRecordBillService.findMainBill(VisaRelationFieldEnum.VISA_ORDER, billIds); + if (CollectionUtils.isEmpty(mainBill)) { + billMainMap = null; + log.info("所有单据均为主单据"); + } else { + // Map + billMainMap = mainBill.stream().collect(Collectors.toMap(ChangeRecordBill::getBillId, ChangeRecordBill::getVisaId, (v1, v2) -> v2)); + } + } else { + billMainMap = null; + } + /*组装信息*/ return records.stream() .map(r -> { @@ -799,6 +814,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 15:37:55 +0800 Subject: [PATCH 080/341] =?UTF-8?q?feat(REQ-3300):=20=E9=80=82=E9=85=8DVis?= =?UTF-8?q?aChangeTempCreateReq=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 11380aa2..1b31e0e6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -430,7 +430,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl rup.getPersonId().stream().map(p -> buildVisaConfirmDto(changeRecord, rup, p))) + .map(p -> buildVisaConfirmDto(p, changeRecord)) .collect(Collectors.toList()); } changeRecordConfirmService.addConfirm(confirmPerson); @@ -865,16 +865,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 15:45:57 +0800 Subject: [PATCH 081/341] =?UTF-8?q?feat(REQ-3300):=20=E9=80=82=E9=85=8DVis?= =?UTF-8?q?aChangeTempCreateReq=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1b31e0e6..b68f86d9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -898,18 +898,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl team = req.getRelationUnitAndPersonList().stream() - .filter(r -> { - AssertUtil.notNull(r.getType(), "相关单位类型错误"); - AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); - AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); - AssertUtil.notEmpty(r.getPersonId(), "请选择" + r.getType().getDesc() + "确认人"); - AssertUtil.isTrue(r.getPersonId().size() <= verifyPersonLimit, String.format(r.getType().getDesc() + "确认人,最多支持{}个", verifyPersonLimit)); - return Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, r.getType()); - }) - .collect(Collectors.toList()); - List unit = req.getRelationUnitAndPersonList(); +// if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) { +// List team = req.getRelationUnitAndPersonList().stream() +// .filter(r -> { +// AssertUtil.notNull(r.getType(), "相关单位类型错误"); +// AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); +// AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); +//// AssertUtil.isTrue(r.getPersonId().size() <= verifyPersonLimit, String.format(r.getType().getDesc() + "确认人,最多支持{}个", verifyPersonLimit)); +// return Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, r.getType()); +// }) +// .collect(Collectors.toList()); +// List unit = req.getRelationUnitAndPersonList(); // if (CollectionUtils.isNotEmpty(team)) { // // 去除班组 // List teamNodeId = team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).distinct().collect(Collectors.toList()); From bb3fa9b9d0018be2c7bcc3203c4ed5ce6330176f Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 6 Feb 2025 15:47:57 +0800 Subject: [PATCH 082/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E8=AF=A6=E6=83=85-=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 7 ++-- .../visa/api/enums/VisaLogTypeEnum.java | 2 +- .../api/response/VisaDetailByIdResponse.java | 26 ++++++++++++ .../visa/server/domain/ChangeRecord.java | 4 +- .../visa/server/domain/ChangeRecordBill.java | 2 +- .../visa/server/domain/ChangeRecordLog.java | 11 ----- .../server/domain/ChangeRecordRelation.java | 2 +- .../mq/producer/VisaChangeLogPayload.java | 1 - .../service/impl/ChangeRecordServiceImpl.java | 40 ++++++++++++++----- 9 files changed, 66 insertions(+), 29 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index 197ad022..bead5a3c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -6,7 +6,7 @@ import com.google.common.collect.Sets; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; -import org.springframework.util.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import java.util.Map; import java.util.Objects; @@ -108,9 +108,10 @@ public enum VisaButtonTypeEnum { switch (bizTypeSet) { case CREATE: case CONFIRM: - return bizTypeBtnMap.get(bizTypeSet.name() + status.name()); + case OTHER: case APPROVE: - + Set buttonTypeEnumSet = bizTypeBtnMap.get(bizTypeSet.name() + status.name()); + return CollectionUtils.isNotEmpty(buttonTypeEnumSet) ? buttonTypeEnumSet : Sets.newHashSet(); default: throw new ServiceException("单据确认业务类型不匹配"); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java index c3097342..78e226f8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java @@ -19,7 +19,7 @@ public enum VisaLogTypeEnum { CHAT_GROUP("chat_group", "发起群聊洽商","发起群聊洽商","%s发起群聊洽商"), EDIT_FORM("edit_form", "编辑表单","%s编辑表单","%s编辑表单"), - EDIT_AMOUNT("edit_amount", "编辑金额变化","%s编辑金额变化","原值:金额变化:%s;/n 新值:金额变化:%s;"), + EDIT_AMOUNT("edit_amount", "编辑金额变化","%s编辑金额变化","原值:金额变化:%s;
新值:金额变化:%s;"), UPLOAD_FILE("upload_file", "上传附件","%s上传附件","%s上传%d个附件:%s"), DELETE_UPLOAD_FILE("delete_upload_file", "删除附件","%s删除附件","%s删除%d个附件:"), TO_EXECUTE("to_execute", "发起执行","发起执行", "%s发起执行"), diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index b791dc12..a68d964c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -247,6 +247,20 @@ public class VisaDetailByIdResponse { } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationProfessional { + + /** + * code + */ + private String code; + } + + + @Data @Builder @NoArgsConstructor @@ -270,6 +284,18 @@ public class VisaDetailByIdResponse { } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RelationArea { + /** + * id + */ + private Long id; + + } + @Data @Builder @NoArgsConstructor diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 52250cc2..524914ff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -61,7 +61,7 @@ public class ChangeRecord extends BaseEntity { */ @TableField(value = "relation_area", typeHandler = FastjsonTypeHandler.class) - private JSONObject relationArea; + private JSONArray relationArea; /** * 专业集合 @@ -138,7 +138,7 @@ public class ChangeRecord extends BaseEntity { /** * 修改人id */ - @TableField(value = "updateBy") + @TableField(value = "update_by") private Long updateBy; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java index 97fcbbfe..68aa9d1b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java @@ -65,7 +65,7 @@ public class ChangeRecordBill extends BaseEntity { /** * 修改人id */ - @TableField(value = "updateBy") + @TableField(value = "update_by") private Long updateBy; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java index 128e1b2d..aece4fc2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordLog.java @@ -56,22 +56,11 @@ public class ChangeRecordLog extends BaseEntity { @TableField(value = "order_by") private Integer orderBy; - /** - * 操作时间 - */ - @TableField(value = "operation_time") - private Date operationTime; /** * 创建人id */ @TableField(value = "create_by") private Long createBy; - /** - * 修改人id - */ - @TableField(value = "updateBy") - private Long updateBy; - } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java index b0846124..079a9eaf 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordRelation.java @@ -68,7 +68,7 @@ public class ChangeRecordRelation extends BaseEntity { /** * 修改人id */ - @TableField(value = "updateBy") + @TableField(value = "update_by") private Long updateBy; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java index 0cafa4a0..3ff07e3c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java @@ -37,7 +37,6 @@ public class VisaChangeLogPayload implements Serializable { .action(log.getAction()) .title(log.getTitle()) .content(log.getContent()) - .operateTime(log.getOperationTime()) .personId(log.getCreateBy()) .build(); return Event.builder() diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 9dfc6c37..7465579a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,7 +8,6 @@ import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; -import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; @@ -50,12 +49,12 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; -import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; @@ -73,12 +72,12 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; @@ -328,8 +327,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildArea(List areaIds) { + private List buildArea(JSONArray relationArea) { + if (CollectionUtils.isEmpty(relationArea)) { + return Lists.newArrayList(); + } + List relationAreaList = relationArea.toJavaList(VisaDetailByIdResponse.RelationArea.class); + if (CollectionUtils.isEmpty(relationAreaList)) { + return Lists.newArrayList(); + } + List areaIds = relationAreaList.stream() + .filter(item -> Objects.nonNull(item.getId())) + .map(VisaDetailByIdResponse.RelationArea::getId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(areaIds)) { return Lists.newArrayList(); } @@ -944,10 +953,23 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildProfession(Long projectId, Set majorCodes) { - if (Objects.isNull(projectId) || CollectionUtils.isEmpty(majorCodes)) { + private List buildProfession(Long projectId, JSONArray relationProfessional) { + + if (Objects.isNull(projectId) || CollectionUtils.isEmpty(relationProfessional)) { return Lists.newArrayList(); } + List professionalList = relationProfessional.toJavaList(VisaDetailByIdResponse.RelationProfessional.class); + + if (CollectionUtils.isEmpty(professionalList)) { + return Lists.newArrayList(); + } + Set majorCodes = professionalList.stream() + .filter(item -> StringUtils.hasText(item.getCode())) + .map(VisaDetailByIdResponse.RelationProfessional::getCode).collect(Collectors.toSet()); + if (CollectionUtils.isEmpty(majorCodes)) { + return Lists.newArrayList(); + } + List majorRespList = drawingMajorGateway.list(projectId, majorCodes, true); if (CollectionUtils.isEmpty(majorCodes)) { return Lists.newArrayList(); From 952f0e3d5565a0f81b6d88d12a7382cbe0c340cf Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 6 Feb 2025 15:59:30 +0800 Subject: [PATCH 083/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8ATips=20=E6=8C=89=E9=92=AE=E7=9A=84?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 20 ++++++- .../api/request/FetchVisaAllConfirmReq.java | 27 +++++++++ .../api/request/VisaChangeApproveOnlyReq.java | 41 ++++++++++++++ .../controller/ChangeRecordController.java | 12 ++++ .../mq/listener/workflow/BasicLogSupport.java | 2 +- .../ProcessInstanceAllEventHandler.java | 55 +++++++++++++++++-- .../task/ProcessTaskAllEventHandler.java | 4 -- .../service/ChangeRecordConfirmService.java | 10 +++- .../server/service/ChangeRecordService.java | 3 +- .../impl/ChangeRecordConfirmServiceImpl.java | 30 ++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 19 +++---- 11 files changed, 199 insertions(+), 24 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaAllConfirmReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 8f03a635..dc0684d2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -4,7 +4,9 @@ import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; @@ -97,7 +99,23 @@ public interface ChangeRecordApi { ApiResult> listInitiator(@RequestBody @Validated VisaInitiatorListReq req); /** - * 变洽签废止 + * IM 变洽签群中,点击“提交审批”前拉取对应的确认人列表 + * + * @return + */ + @PostMapping("/api/visa/change/confirm/list") + ApiResult> getVisaAllConfirm(@Validated @RequestBody FetchVisaAllConfirmReq req); + + /** + * IM 变洽签群,“提交审批”按钮 + * + * @return + */ + @PostMapping("/api/visa/change/approve/only/create") + ApiResult approveExistsVisaChangeRecord(@Validated @RequestBody VisaChangeApproveOnlyReq req); + + /** + * IM 变洽签群,“废止”按钮 * * @return */ diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaAllConfirmReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaAllConfirmReq.java new file mode 100644 index 00000000..bc7962e3 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/FetchVisaAllConfirmReq.java @@ -0,0 +1,27 @@ +package cn.axzo.nanopart.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * 拉取指定已存在变洽签的确认人全部列表 + * + * @author wangli + * @since 2025-02-06 13:56 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class FetchVisaAllConfirmReq { + /** + * 变洽签 ID + */ + @NotNull(message = "变洽签 ID 不能为空") + private Long visaId; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java new file mode 100644 index 00000000..1bdbd0af --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java @@ -0,0 +1,41 @@ +package cn.axzo.nanopart.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 通过 IM 群聊中发起的审批入参模型 + * + * @author wangli + * @since 2025-02-06 13:59 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeApproveOnlyReq { + + /** + * 变洽签 ID + */ + @NotNull(message = "变洽签 ID 不能为空") + private Long visaId; + + /** + * 需要设置审批人的节点标识 + */ + @NotBlank(message = "待设置审批人的节点为空") + private String activityId; + + /** + * 审批人信息 + */ + private List approvePersonInfoList; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 336c6b28..4cf43fde 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -6,7 +6,9 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; @@ -93,6 +95,16 @@ public class ChangeRecordController implements ChangeRecordApi { return ApiResult.ok(changeRecordService.listInitiator(req)); } + @Override + public ApiResult> getVisaAllConfirm(FetchVisaAllConfirmReq req) { + return ApiResult.ok(changeRecordConfirmService.listAllConfirmByVisaId(req.getVisaId())); + } + + @Override + public ApiResult approveExistsVisaChangeRecord(VisaChangeApproveOnlyReq req) { + return null; + } + @Override public ApiResult forbidChangeRecord(ChangeRecordForbidReq req) { changeRecordService.forbid(req); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java index b9e1f73a..7221f10f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java @@ -16,7 +16,7 @@ import java.util.Objects; * @since 2025-01-20 10:18 */ public abstract class BasicLogSupport { - private final EventProducer eventProducer; + protected final EventProducer eventProducer; protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; protected BasicLogSupport(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 58d24123..87a61ca5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,20 +1,28 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; +import java.util.Date; + import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE; /** * 工作流广播的实例维度的所有事件类型 @@ -24,13 +32,16 @@ import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; */ @Component public class ProcessInstanceAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler { - private final EventProducer eventProducer; - protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; + protected final ChangeRecordService changeRecordService; + protected final ChangeRecordRelationService changeRecordRelationService; - public ProcessInstanceAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { + public ProcessInstanceAllEventHandler(EventProducer eventProducer, + VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway, + ChangeRecordService changeRecordService, + ChangeRecordRelationService changeRecordRelationService) { super(eventProducer, visaOrganizationalNodeUserGateway); - this.eventProducer = eventProducer; - this.visaOrganizationalNodeUserGateway = visaOrganizationalNodeUserGateway; + this.changeRecordService = changeRecordService; + this.changeRecordRelationService = changeRecordRelationService; } @Override @@ -69,6 +80,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .content(String.format(APPROVE_COMPLETED.getContent(), visaType)) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); + + updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.APPROVED); } /** @@ -88,6 +101,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .content(String.format(REVERT_APPROVE.getContent(), buildLogUserInfo(initiator))) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); + + updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.CANCELLED); } /** @@ -105,10 +120,40 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .content(String.format(REJECT_APPROVE.getContent(), buildLogUserInfo(lastOperationAssigner), dto.getReason())) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); + + updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.REJECTED); } @Override public void onAborted(ProcessInstanceDTO dto) { ProcessInstanceEventHandler.super.onAborted(dto); + + updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.ABORTED); + } + + private void updateChangeRecordApprovalStatus(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum resultEnum) { + // 更新主表审批信息 + changeRecordService.lambdaQuery() + .eq(ChangeRecord::getId, Long.valueOf(dto.getBusinessKey())) + .eq(ChangeRecord::getApprovalId, dto.getProcessInstanceId()) + .eq(ChangeRecord::getIsDelete, 0) + .oneOpt() + .ifPresent(changeRecord -> { + changeRecord.setApprovalStatus(resultEnum.getStatus()); + changeRecord.setApprovalCompleteTime(new Date()); + changeRecordService.updateById(changeRecord); + }); + + // 更新关联表审批信息 + changeRecordRelationService.lambdaQuery() + .eq(ChangeRecordRelation::getVisaId, Long.valueOf(dto.getBusinessKey())) + .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.getCode()) + .eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId()) + .oneOpt() + .ifPresent(changeRecordRelation -> { + changeRecordRelation.setContentExt(resultEnum.getStatus()); + changeRecordRelationService.updateById(changeRecordRelation); + }); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index ead7a7d9..f97d7118 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -21,13 +21,9 @@ import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; */ @Component public class ProcessTaskAllEventHandler extends BasicLogSupport implements ProcessTaskEventHandler { - private final EventProducer eventProducer; - protected final VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway; public ProcessTaskAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) { super(eventProducer, visaOrganizationalNodeUserGateway); - this.eventProducer = eventProducer; - this.visaOrganizationalNodeUserGateway = visaOrganizationalNodeUserGateway; } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index ce67b4d4..2f69d45a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -3,9 +3,10 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; -import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import java.util.List; import java.util.Set; @@ -66,4 +67,11 @@ public interface ChangeRecordConfirmService { * @return 变更签证visaId集合 */ Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId); + + /** + * 获取指定的变洽签所有的确认人 + * @param visaId + * @return + */ + List listAllConfirmByVisaId(Long visaId); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index e80c826d..ed4919a6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -14,6 +14,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -22,7 +23,7 @@ import java.util.List; * @date 2025/01/15 * @desc 变更签证记录 */ -public interface ChangeRecordService { +public interface ChangeRecordService extends IService { /** * 状态变更 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index b70f64a4..0ee65ae0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -10,6 +10,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; @@ -36,10 +37,12 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -276,6 +279,17 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl x)); } + private Map buildPersonDtoMap(Set personSet) { + if (CollectionUtils.isEmpty(personSet)) { + return Maps.newHashMap(); + } + List profiles = visaProfileGateway.getProfiles(Lists.newArrayList(personSet)); + if (CollectionUtils.isEmpty(profiles)) { + return Maps.newHashMap(); + } + return profiles.stream().collect(Collectors.toMap(PersonProfileDto::getId, Function.identity(), (x, y) -> x)); + } + /** * 条件查询列表 */ @@ -334,4 +348,20 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl listAllConfirmByVisaId(Long visaId) { + VisaConfirmDto dto = VisaConfirmDto.builder() + .visaId(visaId) + .bizType(VisaConfirmBizTypeEnum.CONFIRM).build(); + List list = this.findByCondition(dto); + if (CollectionUtils.isEmpty(list)) { + return Lists.newArrayList(); + } + Map personMap = buildPersonDtoMap(list.stream() + .map(ChangeRecordConfirm::getPersonId) + .collect(Collectors.toSet())); + list.stream().map(i-> VisaChangeApproveCreateReq.ApprovePersonInfo.builder().build()) + .collect(Collectors.toList()); + return null; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 5fcf4c2a..ae8b950e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -506,7 +506,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl info.getPersonIdList().stream() - .map(personId -> BpmnTaskDelegateAssigner.builder() - .personId(String.valueOf(personId)) - .tenantId(String.valueOf(info.getWorkspaceId())) - .ouId(String.valueOf(info.getUnitId())) - .build())) - .collect(Collectors.toList()) - ); + .map(i -> BpmnTaskDelegateAssigner.builder() + .personId(String.valueOf(i.getPersonId())) + .tenantId(String.valueOf(i.getWorkspaceId())) + .ouId(String.valueOf(i.getOuId())) + .build()) + .collect(Collectors.toList())); return approvers; } @@ -925,7 +923,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl= 0, "金额变化超出范围"); // 关联单据合法性 if (CollUtil.isNotEmpty(req.getRelationOrderMap())) { @@ -1030,7 +1028,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 16:53:10 +0800 Subject: [PATCH 084/341] =?UTF-8?q?feat:=20(REQ-3300)=20FeignConfig?= =?UTF-8?q?=E5=8A=A0=E4=B8=8Athor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/nanopart/config/FeignConfig.java | 3 +++ .../cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java | 4 ++++ .../visa/server/controller/ChangeRecordController.java | 4 +++- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 5 ++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java index dbb23e00..00336a74 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java @@ -69,6 +69,8 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware { private String dataCollectionUrl; @Value("${attendanceUrl:http://dev-app.axzo.cn/attendance}") private String attendanceApi; + @Value("${thorUrl:http://dev-app.axzo.cn/thor}") + private String thorApi; private static String POD_NAMESPACE; static { @@ -107,6 +109,7 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware { url = url.replace("http://karma:8080", karmaEnvUrl); url = url.replace("http://data-collection:21200", dataCollectionUrl); url = url.replace("http://attendance:8080", attendanceApi); + url = url.replace("http://thor:8080", thorApi); String profile = environment.getProperty("spring.profiles.active"); if(Objects.equals(profile, "test") && url.contains("dev-app.axzo.cn")) { url = url.replace("dev-app", "test-api"); diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index bead5a3c..d94be06f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -117,4 +117,8 @@ public enum VisaButtonTypeEnum { } } + public static Set all() { + return Sets.newHashSet(VisaButtonTypeEnum.values()); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 4cf43fde..e1383352 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; @@ -74,7 +75,8 @@ public class ChangeRecordController implements ChangeRecordApi { */ public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) { VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId()); - resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); + resp.setBtnList(VisaButtonTypeEnum.all()); +// resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); return ApiResult.ok(resp); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ae8b950e..74cd0411 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -320,6 +320,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl attachContentList = attachList.stream().map(ChangeRecordRelation::getContent).collect(Collectors.toList()); + List attachContentList = attachList.stream() + .filter(item -> StringUtils.hasText(item.getContent())) + .map(ChangeRecordRelation::getContent).collect(Collectors.toList()); if (CollectionUtils.isEmpty(attachContentList)) { return Lists.newArrayList(); } From 6023ae8f823ecf462685b4fc6c5de5a2f6a783f1 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 6 Feb 2025 17:15:02 +0800 Subject: [PATCH 085/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E8=AF=A6=E6=83=85-=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=B1=BB=E5=9E=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/response/VisaDetailByIdResponse.java | 6 +++--- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index a68d964c..da7c2114 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -134,17 +134,17 @@ public class VisaDetailByIdResponse { /** * 任务单 */ - private List relationTaskList; + private List relationTaskList; /** * 整改单 */ - private List relationRectifyList; + private List relationRectifyList; /** * 变更单 */ - private List relationVisaList; + private List relationVisaList; /** * 状态 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 74cd0411..9ad46171 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -313,7 +313,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); - Map> billMap = changeRecordBills.stream().collect(Collectors.groupingBy(ChangeRecordBill::getBillType, Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); + Map> billMap = changeRecordBills.stream() + .collect(Collectors.groupingBy(ChangeRecordBill::getBillType + , Collectors.mapping(item -> Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); ProjectDetailRes projectDetailRes = projectApiGateway.getProjectById(visa.getRelationProject()); GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId()); From 78ccbbc7ca920dbfe1b1913f3be64bd12afc149d Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 6 Feb 2025 17:55:47 +0800 Subject: [PATCH 086/341] =?UTF-8?q?feat:=20(REQ-3300)=20ProjectApiGateway?= =?UTF-8?q?=E5=86=B2=E7=AA=81=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ojectApiGateway.java => VisaProjectApiGateway.java} | 2 +- .../server/service/impl/ChangeRecordServiceImpl.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) rename visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/{ProjectApiGateway.java => VisaProjectApiGateway.java} (97%) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProjectApiGateway.java similarity index 97% rename from visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java rename to visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProjectApiGateway.java index aee725da..656a9248 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ProjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProjectApiGateway.java @@ -21,7 +21,7 @@ import java.util.List; @Slf4j @Service @RequiredArgsConstructor -public class ProjectApiGateway { +public class VisaProjectApiGateway { private final ProjectApi projectApi; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 9ad46171..1cbac6a7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -51,7 +51,7 @@ import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; -import cn.axzo.nanopart.visa.server.rpc.ProjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; @@ -144,7 +144,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); - ProjectDetailRes projectDetailRes = projectApiGateway.getProjectById(visa.getRelationProject()); + ProjectDetailRes projectDetailRes = visaProjectApiGateway.getProjectById(visa.getRelationProject()); GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId()); @@ -776,7 +776,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl projectIdList = records.stream().map(ChangeRecord::getRelationProject).distinct().collect(Collectors.toList()); - List projectBriefByIds = projectApiGateway.getProjectBriefByIds(projectIdList); + List projectBriefByIds = visaProjectApiGateway.getProjectBriefByIds(projectIdList); AssertUtil.notEmpty(projectBriefByIds, "工程信息获取失败"); // Map Map projectIdNameMap = projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); @@ -887,7 +887,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 18:22:08 +0800 Subject: [PATCH 087/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E4=B8=93=E4=B8=9A?= =?UTF-8?q?=E5=8A=A0=E4=B8=8Ademo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/server/domain/ChangeRecord.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 524914ff..3cd997e9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -65,6 +65,20 @@ public class ChangeRecord extends BaseEntity { /** * 专业集合 + * 示例 + * [ + * { + * "id": 9658, + * "code": "JIANZHU_CUOSHIBIAO", + * "children": [ + * { + * "id": 9659, + * "code": "JIANZHU_CUOSHIBIAOSHINEIWAIZHUANGXIUGOUZAOZUOFABIAO", + * "children": [] + * } + * ] + * } + * ] */ @TableField(value = "relation_professional", typeHandler = FastjsonTypeHandler.class) private JSONArray relationProfessional; From f5a7ba894d870446b50b137575a604a9760f75e8 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 6 Feb 2025 18:43:02 +0800 Subject: [PATCH 088/341] =?UTF-8?q?feat(REQ-3300):=20=E9=80=9A=E8=BF=87vis?= =?UTF-8?q?aId=E6=9E=84=E5=BB=BA=E5=AE=A1=E6=89=B9=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1cbac6a7..5979473a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -27,6 +27,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -51,10 +52,9 @@ import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; @@ -146,9 +146,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); Map> billMap = changeRecordBills.stream() .collect(Collectors.groupingBy(ChangeRecordBill::getBillType - , Collectors.mapping(item -> Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); + , Collectors.mapping(item -> Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); ProjectDetailRes projectDetailRes = visaProjectApiGateway.getProjectById(visa.getRelationProject()); GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId()); @@ -901,34 +904,30 @@ public class ChangeRecordServiceImpl extends ServiceImpl team = req.getRelationUnitAndPersonList().stream() -// .filter(r -> { -// AssertUtil.notNull(r.getType(), "相关单位类型错误"); -// AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); -// AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); -//// AssertUtil.isTrue(r.getPersonId().size() <= verifyPersonLimit, String.format(r.getType().getDesc() + "确认人,最多支持{}个", verifyPersonLimit)); -// return Objects.equals(SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, r.getType()); -// }) -// .collect(Collectors.toList()); -// List unit = req.getRelationUnitAndPersonList(); -// if (CollectionUtils.isNotEmpty(team)) { -// // 去除班组 -// List teamNodeId = team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).distinct().collect(Collectors.toList()); -// unit = unit.stream().filter(o -> !teamNodeId.contains(o.getOuIdOrTeamNodeId())).collect(Collectors.toList()); -// } - // TODO 相关单位退场状态校验 -// CooperateShipQueryReq shipQueryReq = CooperateShipQueryReq.builder() -// .workspaceId(req.getRelationWorkspaceId()) -// .workspaceType(WorkspaceTypeEnum.PROJECT.getType()) -// .organizationNodeIds(unit.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).collect(Collectors.toList())) -// .nodeIds(team.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuIdOrTeamNodeId).collect(Collectors.toList())) -// .parentNodeIds(unit.stream().map()) -// .build(); -// cooperateShipGateway.genericQuery() - // 班组存在性及状态 - -// } + if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) { + Map> cooperateTypeMap = req.getRelationUnitAndPersonList().stream() + .peek(r -> { + AssertUtil.notNull(r.getType(), "相关单位类型错误"); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getPersonId()), "请选择" + r.getType().getDesc() + "确认人"); + }) + .collect(Collectors.groupingBy(VisaChangeTempCreateReq.RelationUnitAndPerson::getType)); + // 获取项目下所有为退场人员 + OrgNodeUserBriefInfoListReq infoListReq = OrgNodeUserBriefInfoListReq.builder() + .workspaceId(req.getRelationWorkspaceId()) + .orgNodeIds(req.getRelationUnitAndPersonList().stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getNodeId).collect(Collectors.toList())) + .build(); + List nodeUserBriefInfoResps = nodeUserGateway.listOrgNodeUsers(infoListReq); + AssertUtil.notEmpty(nodeUserBriefInfoResps, "所有单位确认人均已退场"); + cooperateTypeMap.forEach((k, v) -> { + AssertUtil.isTrue(v.size() <= verifyPersonLimit, String.format(k.getDesc() + "确认人,最多支持%d个", verifyPersonLimit)); + boolean noExit = v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) + .anyMatch(p -> nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p))); + AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); + }); + } + // 金额变化合法性 AssertUtil.isTrue(req.getAmountChange().compareTo(maxAmount) <= 0 && req.getAmountChange().compareTo(minAmount) >= 0, "金额变化超出范围"); // 关联单据合法性 if (CollUtil.isNotEmpty(req.getRelationOrderMap())) { @@ -938,7 +937,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl mainBill = changeRecordBillService.findMainBill(VisaRelationFieldEnum.VISA_ORDER, value); } else { throw new ServiceException("不支持的关联单据类型"); } @@ -1042,4 +1044,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 18:52:28 +0800 Subject: [PATCH 089/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8ATips=20=E7=9A=84=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 2 +- .../api/request/VisaChangeApproveOnlyReq.java | 6 ++ .../api/request/VisaChangeTempCreateReq.java | 6 ++ .../controller/ChangeRecordController.java | 4 +- .../visa/server/domain/ChangeRecord.java | 23 +++++++- .../server/service/ChangeRecordService.java | 9 +++ .../visa/server/service/VisaHelper.java | 1 + .../impl/ChangeRecordConfirmServiceImpl.java | 13 +++- .../service/impl/ChangeRecordServiceImpl.java | 59 +++++++++++++------ 9 files changed, 98 insertions(+), 25 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index dc0684d2..7dca3645 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -112,7 +112,7 @@ public interface ChangeRecordApi { * @return */ @PostMapping("/api/visa/change/approve/only/create") - ApiResult approveExistsVisaChangeRecord(@Validated @RequestBody VisaChangeApproveOnlyReq req); + ApiResult approveCreateOnlyVisaChangeRecord(@Validated @RequestBody VisaChangeApproveOnlyReq req); /** * IM 变洽签群,“废止”按钮 diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java index 1bdbd0af..f3118b88 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveOnlyReq.java @@ -38,4 +38,10 @@ public class VisaChangeApproveOnlyReq { */ private List approvePersonInfoList; + private Long operatorPersonId; + + private Long operatorOuId; + + private Long operatorWorkspaceId; + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index fa5e4614..1bec835a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -64,6 +64,11 @@ public class VisaChangeTempCreateReq { @NotNull(message = "请选择工程") @Min(value = 1, message = "请选择工程") private Long relationProject; + /** + * 工程名称 + */ + @NotBlank(message = "工程名称不能为空") + private String relationProjectName; /** * 区域集合 @@ -108,6 +113,7 @@ public class VisaChangeTempCreateReq { /** * 有符号的变更金额 */ + @NotNull(message = "变更金额不能为空") private BigDecimal amountChange; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index e1383352..6a1d5fed 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -103,8 +103,8 @@ public class ChangeRecordController implements ChangeRecordApi { } @Override - public ApiResult approveExistsVisaChangeRecord(VisaChangeApproveOnlyReq req) { - return null; + public ApiResult approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) { + return ApiResult.ok(changeRecordService.approveCreateOnlyVisaChangeRecord(req)); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 3cd997e9..b3ef1b9d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -58,8 +58,29 @@ public class ChangeRecord extends BaseEntity { /** * 区域集合 + *
+     * [
+     *     {
+     *         "areaId": 249556,
+     *         "childrenAreaList": [
+     *             {
+     *                 "areaId": 249739,
+     *                 "childrenAreaList": []
+     *             }
+     *         ]
+     *     },
+     *     {
+     *         "areaId": 249556,
+     *         "childrenAreaList": [
+     *             {
+     *                 "areaId": 249739,
+     *                 "childrenAreaList": []
+     *             }
+     *         ]
+     *     }
+     * ]
+     *  
*/ - @TableField(value = "relation_area", typeHandler = FastjsonTypeHandler.class) private JSONArray relationArea; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index ed4919a6..033c234b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -5,6 +5,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; @@ -104,4 +105,12 @@ public interface ChangeRecordService extends IService { * @param req */ void forbid(ChangeRecordForbidReq req); + + /** + * IM 群聊中提交审批 + * + * @param req + * @return + */ + Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 8f37d189..87538520 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -4,6 +4,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; +import com.alibaba.fastjson.JSONArray; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 0ee65ae0..61eb1d12 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -37,7 +37,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; @@ -360,8 +359,16 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl personMap = buildPersonDtoMap(list.stream() .map(ChangeRecordConfirm::getPersonId) .collect(Collectors.toSet())); - list.stream().map(i-> VisaChangeApproveCreateReq.ApprovePersonInfo.builder().build()) + return list.stream().map(i -> VisaChangeApproveCreateReq.ApprovePersonInfo.builder() + .workspaceId(i.getWorkspaceId()) + .ouId(i.getOuId()) + .nodeId(i.getNodeId()) + .personId(i.getPersonId()) + .realName(personMap.getOrDefault(i.getPersonId(), new PersonProfileDto()) + .getRealName()) + .avatarUrl(personMap.getOrDefault(i.getPersonId(), new PersonProfileDto()) + .getAvatarUrl()) + .build()) .collect(Collectors.toList()); - return null; } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 5979473a..9bb57f35 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -31,6 +31,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; +import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; @@ -552,7 +553,25 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { + amountDesc = "增加" + req.getAmountChange().toPlainString() + "元"; + } else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { + amountDesc = "减少" + req.getAmountChange().toPlainString() + "元"; + } + formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc); // 三种单据 if (MapUtils.isNotEmpty(req.getRelationOrderMap())) { @@ -604,20 +628,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl pendingVariables = new HashMap<>(); pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic()); processDto.setPendingVariables(pendingVariables); - String processInstanceId = workflowGateway.processInstanceCreate(processDto); - - // 更新主表中的审批字段,记录变量表的审批的信息 - updateApprovalInfo(visaId, processInstanceId); - - // 更新主表状态 - changeStatus(ChangeStatusRequest.builder() - .visaId(visaId) - .updateStatus(VisaStatusEnum.APPROVING) - .personId(req.getOperatorPersonId()) - .ouId(req.getOperatorOuId()) - .workspaceId(req.getRelationWorkspaceId()) - .build()); - return visaId; + return workflowGateway.processInstanceCreate(processDto); } /** @@ -1045,6 +1056,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 22:17:44 +0800 Subject: [PATCH 090/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8A=E4=B8=AD=E7=9A=84=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=92=8C=E5=8F=91=E8=B5=B7=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=8C=89=E9=92=AE=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 19 +++++++- ...va => ChangeRecordButtonOperationReq.java} | 8 +++- .../controller/ChangeRecordController.java | 17 ++++++- .../service/ChangeRecordRelationService.java | 7 +++ .../server/service/ChangeRecordService.java | 8 +++- .../impl/ChangeRecordRelationServiceImpl.java | 15 +++++- .../service/impl/ChangeRecordServiceImpl.java | 47 +++++++++++++++++-- 7 files changed, 110 insertions(+), 11 deletions(-) rename visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/{ChangeRecordForbidReq.java => ChangeRecordButtonOperationReq.java} (84%) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 7dca3645..650869cc 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -2,7 +2,7 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -120,5 +120,20 @@ public interface ChangeRecordApi { * @return */ @PostMapping("/api/visa/change/record/forbid") - ApiResult forbidChangeRecord(@Validated @RequestBody ChangeRecordForbidReq req); + ApiResult forbidChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + + /** + * IM 变洽签群,“重新发起”按钮 + * @return + */ + @PostMapping("/api/visa/change/reDecision") + ApiResult reDecisionChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + + /** + * IM 变洽签全,“发起执行”按钮 + * @param req + * @return + */ + @PostMapping("/api/visa/change/execute") + ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req(); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java similarity index 84% rename from visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java rename to visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java index e76e9d98..a590c33f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordForbidReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java @@ -17,7 +17,7 @@ import javax.validation.constraints.NotNull; @AllArgsConstructor @NoArgsConstructor @Data -public class ChangeRecordForbidReq { +public class ChangeRecordButtonOperationReq { /** * 变洽签主键 ID @@ -25,6 +25,12 @@ public class ChangeRecordForbidReq { @NotNull(message = "变洽签 ID 不能为空") private Long visaId; + /** + * IM 群 ID + */ + @NotNull(message = "IM 群 ID 不能为空") + private Long imGroupId; + /** * 操作人 personId */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 6a1d5fed..c5b70006 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -5,7 +5,7 @@ import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; -import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -21,6 +21,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -108,8 +109,20 @@ public class ChangeRecordController implements ChangeRecordApi { } @Override - public ApiResult forbidChangeRecord(ChangeRecordForbidReq req) { + public ApiResult forbidChangeRecord(ChangeRecordButtonOperationReq req) { changeRecordService.forbid(req); return ApiResult.ok(); } + + @Override + public ApiResult reDecisionChangeRecord(ChangeRecordButtonOperationReq req) { + changeRecordService.reDecision(req); + return ApiResult.ok(); + } + + @Override + public ApiResult executeChangeRecord(ChangeRecordButtonOperationReq req) { + changeRecordService.doExecute(req); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index abc28d4b..8922fe35 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -40,6 +40,13 @@ public interface ChangeRecordRelationService extends IService { * * @param req */ - void forbid(ChangeRecordForbidReq req); + void forbid(ChangeRecordButtonOperationReq req); /** * IM 群聊中提交审批 @@ -113,4 +113,8 @@ public interface ChangeRecordService extends IService { * @return */ Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req); + + void reDecision(ChangeRecordButtonOperationReq req); + + void doExecute(ChangeRecordButtonOperationReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 4169934e..d109da90 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -23,10 +23,10 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -134,9 +134,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl confirmUsers = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() + .visaId(visaId) + .bizType(VisaConfirmBizTypeEnum.CREATE) + .build()); + + AssertUtil.isTrue(CollectionUtils.isNotEmpty(confirmUsers) && confirmUsers.size() == 1, "单据发起人信息数据异常"); + + ChangeRecordConfirm creator = confirmUsers.get(0); + AssertUtil.isTrue(Objects.equals(creator.getPersonId(), personId) + && Objects.equals(creator.getOuId(), ouId) + && Objects.equals(creator.getWorkspaceId(), workspaceId), "不是单据发起人,不能操作"); + + } + @Override public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) { + validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId()); + VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId()); AssertUtil.notNull(createReq, "未找到变洽签单据"); createReq.setApprovePersonInfoList(req.getApprovePersonInfoList()); @@ -1068,6 +1089,26 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 6 Feb 2025 22:18:48 +0800 Subject: [PATCH 091/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8A=E4=B8=AD=E7=9A=84=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=92=8C=E5=8F=91=E8=B5=B7=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=8C=89=E9=92=AE=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 650869cc..08c52b37 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -135,5 +135,5 @@ public interface ChangeRecordApi { * @return */ @PostMapping("/api/visa/change/execute") - ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req(); + ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); } From 9194506e2a241a1679cd0f7a685b79cf6c343b10 Mon Sep 17 00:00:00 2001 From: wangli Date: Thu, 6 Feb 2025 23:49:04 +0800 Subject: [PATCH 092/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E7=BB=93=E6=9D=9F=E5=90=8E=EF=BC=8C=E5=9B=9E?= =?UTF-8?q?=E9=80=80=E5=8D=95=E6=8D=AE=E7=8A=B6=E6=80=81=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changerecord/ChangeRecordRelationApi.java | 5 +++-- .../ChangeRecordRelationController.java | 2 +- .../process/ProcessInstanceAllEventHandler.java | 17 +++++++++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java index 94eb29b2..33b2d56e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java @@ -24,9 +24,10 @@ public interface ChangeRecordRelationApi { @PostMapping("/api/visa/relation/list") ApiResult> listByVisaId(@Validated @RequestBody VisaRelationReq req) ; - @PostMapping("/api/visa/relation/add") - ApiResult relationAdd(@Validated @RequestBody ImGroupOperationReq req); + @PostMapping("/api/visa/relation/im/operation") + ApiResult saveImOperationParticipate(@Validated @RequestBody ImGroupOperationReq req); @PostMapping("/api/visa/relation/im/tips") ApiResult queryImGroupTips(@Validated @RequestBody ImGroupTipsQueryReq req); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index d4699895..0e1bc9df 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -37,7 +37,7 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { } @Override - public ApiResult relationAdd(ImGroupOperationReq req) { + public ApiResult saveImOperationParticipate(ImGroupOperationReq req) { return ApiResult.ok(changeRecordRelationService.saveImOperationParticipate(req)); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 87a61ca5..b244d771 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,6 +1,8 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; @@ -16,6 +18,7 @@ import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; import java.util.Date; +import java.util.Objects; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; @@ -133,8 +136,9 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P private void updateChangeRecordApprovalStatus(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum resultEnum) { // 更新主表审批信息 + Long visaId = Long.valueOf(dto.getBusinessKey()); changeRecordService.lambdaQuery() - .eq(ChangeRecord::getId, Long.valueOf(dto.getBusinessKey())) + .eq(ChangeRecord::getId, visaId) .eq(ChangeRecord::getApprovalId, dto.getProcessInstanceId()) .eq(ChangeRecord::getIsDelete, 0) .oneOpt() @@ -146,7 +150,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P // 更新关联表审批信息 changeRecordRelationService.lambdaQuery() - .eq(ChangeRecordRelation::getVisaId, Long.valueOf(dto.getBusinessKey())) + .eq(ChangeRecordRelation::getVisaId, visaId) .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.getCode()) .eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId()) .oneOpt() @@ -155,5 +159,14 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P changeRecordRelationService.updateById(changeRecordRelation); }); + if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) { + return; + } + // 回退到待提报或决策中 + ChangeRecord visa = changeRecordService.getById(visaId); + changeRecordService.changeStatus(ChangeStatusRequest.builder() + .visaId(visaId) + .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) + .build()); } } From 3f260a9823ebe1b793872fe1c032d6e4f949b56b Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 7 Feb 2025 10:15:30 +0800 Subject: [PATCH 093/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85=E5=8A=A0=E4=B8=8A=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E5=A4=B4=E5=83=8F/=E5=8F=91=E8=B5=B7=E4=BA=BA?= =?UTF-8?q?=E5=B2=97=E4=BD=8D/=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=85=AC?= =?UTF-8?q?=E5=8F=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/config/FeignConfig.java | 8 ++- .../api/enums/VisaConfirmBizTypeEnum.java | 2 +- .../api/response/VisaDetailByIdResponse.java | 25 ++++++++ .../server/domain/ChangeRecordConfirm.java | 2 + .../service/ChangeRecordConfirmService.java | 8 ++- .../impl/ChangeRecordConfirmServiceImpl.java | 9 +-- .../service/impl/ChangeRecordServiceImpl.java | 61 ++++++++++++++++++- 7 files changed, 102 insertions(+), 13 deletions(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java index 00336a74..819cfbcb 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/FeignConfig.java @@ -70,7 +70,10 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware { @Value("${attendanceUrl:http://dev-app.axzo.cn/attendance}") private String attendanceApi; @Value("${thorUrl:http://dev-app.axzo.cn/thor}") - private String thorApi; + private String thorUrl; + @Value("${orgGateway:http://dev-app.axzo.cn/org-gateway}") + private String orgGatewayUrl; + private static String POD_NAMESPACE; static { @@ -109,7 +112,8 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware { url = url.replace("http://karma:8080", karmaEnvUrl); url = url.replace("http://data-collection:21200", dataCollectionUrl); url = url.replace("http://attendance:8080", attendanceApi); - url = url.replace("http://thor:8080", thorApi); + url = url.replace("http://thor:8080", thorUrl); + url = url.replace("http://org-gateway:8080", orgGatewayUrl); String profile = environment.getProperty("spring.profiles.active"); if(Objects.equals(profile, "test") && url.contains("dev-app.axzo.cn")) { url = url.replace("dev-app", "test-api"); diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java index 96ecef89..90882861 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaConfirmBizTypeEnum.java @@ -18,7 +18,7 @@ public enum VisaConfirmBizTypeEnum { CONFIRM("CONFIRM", "确认"), CREATE("CREATE", "创建"), - APPROVE("CREATE", "审核"), + APPROVE("APPROVE", "审核"), OTHER("OTHER", "其他"), ; diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index da7c2114..61a523bf 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -54,6 +54,31 @@ public class VisaDetailByIdResponse { */ private String createName; + /** + * 发起人头像 + */ + private String createAvatarUrl; + + /** + * 发起人岗位名称 + */ + private String createJobName; + + /** + * 发起人岗位code + */ + private String createJobCode; + + /** + * 发起人单位名称 + */ + private String createOuName; + + /** + * 发起人单位Id + */ + private Long createOuId; + /** * 发起人Id */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java index d7133fc2..fcac7fb9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -23,6 +24,7 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor +@Builder @TableName(value = "visa_change_record_confirm", autoResultMap = true) public class ChangeRecordConfirm extends BaseEntity { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index 2f69d45a..e2e662ff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -9,6 +9,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -43,7 +44,7 @@ public interface ChangeRecordConfirmService { /** * 变更签证Id获取map */ - List listRelationByVisaId(Long visaId); + List listRelationByVisaId(List list); /** * 根据条件查询 @@ -74,4 +75,9 @@ public interface ChangeRecordConfirmService { * @return */ List listAllConfirmByVisaId(Long visaId); + + /** + * 构建公司的Map,orgIdAndNameMap,key:ouId,value:ouName + */ + Map buildOrgIdAndNameMap(Set ouIdSet); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 0ee65ae0..1490de27 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -179,12 +179,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl listRelationByVisaId(Long visaId) { - // 1 查询相关确认人 - VisaConfirmDto dto = VisaConfirmDto.builder() - .visaId(visaId) - .bizType(VisaConfirmBizTypeEnum.CONFIRM).build(); - List list = this.findByCondition(dto); + public List listRelationByVisaId(List list) { if (CollectionUtils.isEmpty(list)) { return Lists.newArrayList(); } @@ -204,7 +199,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildOrgIdAndNameMap(Set ouIdSet) { + public Map buildOrgIdAndNameMap(Set ouIdSet) { if (CollectionUtils.isEmpty(ouIdSet)) { return Maps.newHashMap(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1cbac6a7..3329aed8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -9,6 +9,7 @@ import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.basics.report.api.sheet.SheetWrapper; +import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.im.center.api.vo.PersonAccountAttribute; @@ -51,10 +52,11 @@ import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; @@ -63,6 +65,9 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.nanopart.visa.server.service.VisaHelper; +import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; +import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; @@ -71,6 +76,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -183,6 +189,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl, ChangeRecordConfirm> pair = this.buildConfirmCreate(visaId); + + OrgNodeUserDTO orgNodeUserDTO = this.getOrgNodeUserDTO(pair.getValue().getPersonId(), pair.getValue().getOuId(), pair.getValue().getWorkspaceId()); return VisaDetailByIdResponse.builder() .visaId(visaId) @@ -327,6 +343,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl, ChangeRecordConfirm> buildConfirmCreate(Long visaId) { + VisaConfirmDto dto = VisaConfirmDto.builder() + .visaId(visaId).build(); + List list = this.changeRecordConfirmService.findByCondition(dto); + List confirmList = list.stream().filter(item -> item.getBizType() == VisaConfirmBizTypeEnum.CONFIRM).collect(Collectors.toList()); + List createList = list.stream().filter(item -> item.getBizType() == VisaConfirmBizTypeEnum.CREATE).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(confirmList)) { + confirmList = Lists.newArrayList(); + } + if (CollectionUtils.isEmpty(createList)) { + return Pair.of(confirmList, ChangeRecordConfirm.builder().build()); + } + return Pair.of(confirmList, createList.get(0)); + } + + /** + * 综合获取基础信息 + */ + private OrgNodeUserDTO getOrgNodeUserDTO(Long personId, Long ouId, Long workspaceId) { + if (Objects.isNull(personId) || Objects.isNull(ouId) || Objects.isNull(workspaceId)) { + return null; + } + PageResp pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() + .personId(personId) + .organizationalUnitId(ouId) + .workspaceId(workspaceId) + .needs(ListNodeUserReq.Needs.builder().job(true).unit(true).personProfile(true).build()).build()); + if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) { + return null; + } + return pageResp.getData().get(0); + } + /** * 构建上传文件对象集合 */ From 84b18ee6f681eba6bbacff454a6bccfc16355de6 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 7 Feb 2025 10:31:12 +0800 Subject: [PATCH 094/341] =?UTF-8?q?feat:=20(REQ-3300)=20change=5Frecord=5F?= =?UTF-8?q?bill=E5=A2=9E=E5=8A=A0visaType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/visa/server/domain/ChangeRecordBill.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java index 68aa9d1b..c0fb9c38 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.domain; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import com.alibaba.fastjson.JSONObject; @@ -33,6 +34,12 @@ public class ChangeRecordBill extends BaseEntity { @TableField(value = "visa_id") private Long visaId; + /** + * 变更签证单据类型 + */ + @TableField(value = "visa_type") + private VisaTypeEnum visaType; + /** * 单据id */ From 7db033260d5157b4e00843867b846d910db904ff Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 7 Feb 2025 11:44:00 +0800 Subject: [PATCH 095/341] =?UTF-8?q?feat(REQ-3300):=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaBillTypeEnum.java | 2 +- .../api/request/VisaChangeTempCreateReq.java | 44 +++++++++++++- .../visa/server/domain/ChangeRecord.java | 5 +- .../nanopart/visa/server/dto/VisaBillDto.java | 6 ++ .../service/ChangeRecordBillService.java | 4 +- .../impl/ChangeRecordBillServiceImpl.java | 4 +- .../service/impl/ChangeRecordServiceImpl.java | 58 ++++++++++++++----- 7 files changed, 101 insertions(+), 22 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java index 437943cd..0bf38b9e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaBillTypeEnum.java @@ -15,7 +15,7 @@ public enum VisaBillTypeEnum { TASK("task", "任务单"), RECTIFY("rectify", "整改单"), - VISA("visa", "变更单"), + DESIGN_VISA("design_visa", "设计变更单"), ; diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 1bec835a..95881fd1 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -1,9 +1,10 @@ package cn.axzo.nanopart.visa.api.request; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; @@ -72,6 +73,29 @@ public class VisaChangeTempCreateReq { /** * 区域集合 + * 示例: + *
+     * [
+     *     {
+     *         "areaId": 249556,
+     *         "childrenAreaList": [
+     *             {
+     *                 "areaId": 249739,
+     *                 "childrenAreaList": []
+     *             }
+     *         ]
+     *     },
+     *     {
+     *         "areaId": 249556,
+     *         "childrenAreaList": [
+     *             {
+     *                 "areaId": 249739,
+     *                 "childrenAreaList": []
+     *             }
+     *         ]
+     *     }
+     * ]
+     *  
*/ private JSONObject relationArea; @@ -83,9 +107,25 @@ public class VisaChangeTempCreateReq { /** * 专业集合 + * 示例: + *
+     * [
+     *     {
+     *         "id": 9658,
+     *         "code": "JIANZHU_CUOSHIBIAO",
+     *         "children": [
+     *             {
+     *                 "id": 9659,
+     *                 "code": "JIANZHU_CUOSHIBIAOSHINEIWAIZHUANGXIUGOUZAOZUOFABIAO",
+     *                 "children": []
+     *             }
+     *         ]
+     *     }
+     * ]
+     * 
*/ @NotNull(message = "请选择专业") - private JSONObject relationProfessional; + private JSONArray relationProfessional; /** * 发生原因 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index b3ef1b9d..7628c57f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -58,6 +58,7 @@ public class ChangeRecord extends BaseEntity { /** * 区域集合 + * 示例: *
      * [
      *     {
@@ -86,7 +87,8 @@ public class ChangeRecord extends BaseEntity {
 
     /**
      * 专业集合
-     * 示例
+     * 示例:
+     * 
      * [
      *     {
      *         "id": 9658,
@@ -100,6 +102,7 @@ public class ChangeRecord extends BaseEntity {
      *         ]
      *     }
      * ]
+     * 
*/ @TableField(value = "relation_professional", typeHandler = FastjsonTypeHandler.class) private JSONArray relationProfessional; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java index b1cd2807..83f43beb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.dto; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; @@ -25,6 +26,11 @@ public class VisaBillDto { */ private Long visaId; + /** + * 变更签证单据类型 + */ + private VisaTypeEnum visaType; + /** * 单据id */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index ec18d3ba..6cbb647f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -1,6 +1,6 @@ package cn.axzo.nanopart.visa.server.service; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; @@ -46,6 +46,6 @@ public interface ChangeRecordBillService { * @param billIds 单据id * @return 主单据信息 */ - List findMainBill(VisaRelationFieldEnum billType, List billIds); + List findMainBill(VisaBillTypeEnum billType, List billIds); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 63869a68..25a79e72 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,7 +1,7 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.common.util.AssertUtil; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordBillDao; @@ -78,7 +78,7 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl findMainBill(VisaRelationFieldEnum billType, List billIds) { + public List findMainBill(VisaBillTypeEnum billType, List billIds) { AssertUtil.notNull(billType, "单据类型不能为空"); AssertUtil.notEmpty(billIds, "单据Id不能为空"); return lambdaQuery().in(ChangeRecordBill::getBillId, billIds) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fedfa60d..1c40f774 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -56,7 +56,6 @@ import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; @@ -333,7 +332,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); Map> billMap = changeRecordBills.stream() .collect(Collectors.groupingBy(ChangeRecordBill::getBillType - , Collectors.mapping(item -> Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); + , Collectors.mapping(item -> Objects.equals(0L, item.getBillId()) ? item.getBillNo() : item.getBillId().toString(), Collectors.toList()))); ProjectDetailRes projectDetailRes = visaProjectApiGateway.getProjectById(visa.getRelationProject()); GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId()); @@ -366,7 +365,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl os.getValue().stream() .map(o -> VisaBillDto.builder() .visaId(changeRecord.getId()) + .visaType(changeRecord.getType()) .billId(o) .billType(VisaRelationFieldEnum.valueOf(os.getKey())) .createBy(req.getOperatorPersonId()) @@ -870,10 +870,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl billMainMap; if (req.getNeedRelatedBill()) { List billIds = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); - List mainBill = changeRecordBillService.findMainBill(VisaRelationFieldEnum.VISA_ORDER, billIds); + List mainBill = changeRecordBillService.findMainBill(VisaBillTypeEnum.DESIGN_VISA, billIds); if (CollectionUtils.isEmpty(mainBill)) { billMainMap = null; - log.info("所有单据均为主单据"); + log.info("all bill is main bill"); } else { // Map billMainMap = mainBill.stream().collect(Collectors.toMap(ChangeRecordBill::getBillId, ChangeRecordBill::getVisaId, (v1, v2) -> v2)); @@ -1003,14 +1003,28 @@ public class ChangeRecordServiceImpl extends ServiceImpl { if (Objects.equals(VisaRelationFieldEnum.TASK_ORDER.name(), key)) { - // 任务单 TODO - } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { - // 整改单 TODO - } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { - // 变更单 - AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); + /*任务单*/ + // 关联单据数量限制 AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单,请重新选择", verifyVisaLimit)); - List mainBill = changeRecordBillService.findMainBill(VisaRelationFieldEnum.VISA_ORDER, value); + validBillIfRelated(VisaBillTypeEnum.TASK, value, req.getType()); + } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { + /*整改单*/ + // 关联单据数量限制 + AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单,请重新选择", verifyVisaLimit)); + validBillIfRelated(VisaBillTypeEnum.RECTIFY, value, req.getType()); + } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { + /*变更单*/ + AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); + // 关联单据数量限制 + AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单,请重新选择", verifyVisaLimit)); + // 关联单据合法性,是否存在,状态是否合法 + List relationVisa = listByIds(value); + AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); + relationVisa.forEach(r -> { + AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); + AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc())); + }); + validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, value, req.getType()); } else { throw new ServiceException("不支持的关联单据类型"); } @@ -1018,6 +1032,22 @@ public class ChangeRecordServiceImpl extends ServiceImpl value, VisaTypeEnum visaType) { + AssertUtil.notNull(billType, "关联单据类型不能为空"); + AssertUtil.notEmpty(value, "关联单据Id不能为空"); + AssertUtil.notNull(visaType, "单据类型不能为空"); + List mainBill = changeRecordBillService.findMainBill(billType, value); + mainBill.stream() + .collect(Collectors.groupingBy(ChangeRecordBill::getBillId)) + .forEach((k, v) -> v.stream() + .filter(m -> Objects.equals(m.getVisaType(), visaType)) + .findAny() + .ifPresent(m -> { + log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); + throw new ServiceException(String.format("单据%s已被其他单据关联,请重新选择", m.getBillNo())); + })); + } + private List buildArea(JSONArray relationArea) { if (CollectionUtils.isEmpty(relationArea)) { return Lists.newArrayList(); @@ -1152,8 +1182,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 14:00:42 +0800 Subject: [PATCH 096/341] =?UTF-8?q?feat:=20(REQ-3300)=20VisaHelper?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/server/service/VisaHelper.java | 5 ++++- .../server/service/impl/ChangeRecordServiceImpl.java | 9 ++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 87538520..56fa8151 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -33,7 +33,10 @@ public class VisaHelper { //oldContext为空,newContext不为空,则是新增; // 操作日志:只有状态变更,没有属性变更日志 if (Objects.isNull(oldContext) && Objects.nonNull(newContext)) { - changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), newContext.getStatus().getLogType(), VisaLogParam.builder().build()); + changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), newContext.getStatus().getLogType(), VisaLogParam.builder() + .personId(newContext.getPersonId()) + .ouId(newContext.getOuId()) + .workspaceId(newContext.getWorkspaceId()).build()); changeRecordService.changeDbStatus(newContext.getChangeRecord().getId(), VisaStatusEnum.allStatus(), newContext.getStatus()); return; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fedfa60d..af33273e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -56,7 +56,6 @@ import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; @@ -210,7 +209,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl preStatusList = this.buildPreStatusAndLog(request.getUpdateStatus()); + List preStatusList = this.buildPreStatus(request.getUpdateStatus()); // 2 更新状态 this.updateVisaStatus(request.getVisaId(), preStatusList, request.getUpdateStatus()); // 3 新增日志 @@ -269,12 +268,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildPreStatusAndLog(VisaStatusEnum updateStatus) { + private List buildPreStatus(VisaStatusEnum updateStatus) { List preStatusList; switch (updateStatus) { case DECIDING: From c3cb2ca3a147592d20ad9c6ac56e1c1132606f85 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 7 Feb 2025 14:54:05 +0800 Subject: [PATCH 097/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E6=95=B0=E6=8D=AE=E6=9E=84?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 9 ++- .../nanopart/visa/server/dto/VisaBillDto.java | 4 +- .../service/impl/ChangeRecordServiceImpl.java | 60 ++++++++++++++++++- 3 files changed, 64 insertions(+), 9 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 95881fd1..210ae2d3 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -1,11 +1,10 @@ package cn.axzo.nanopart.visa.api.request; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -97,7 +96,7 @@ public class VisaChangeTempCreateReq { * ] *
*/ - private JSONObject relationArea; + private JSONArray relationArea; /** * 提出时间 @@ -159,11 +158,11 @@ public class VisaChangeTempCreateReq { /** * 关联的单据,key: 单据类型,value: 单据id集合 *

- * TASK_ORDER :任务单 RECTIFICATION_ORDER :整改单 VISA_ORDER:变更单 + * TASK :任务单 RECTIFY :整改单 DESIGN_VISA:变更单 * 只有变更签证类型即{@code type}为“技术核定”或“工程签证”时才可能会有关联变更单 *

* - * @see VisaRelationFieldEnum + * @see VisaBillTypeEnum */ private Map> relationOrderMap; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java index 83f43beb..89ec05c5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java @@ -1,6 +1,6 @@ package cn.axzo.nanopart.visa.server.dto; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; @@ -44,7 +44,7 @@ public class VisaBillDto { /** * 单据类型 */ - private VisaRelationFieldEnum billType; + private VisaBillTypeEnum billType; /** * 额外信息 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1c40f774..8ebefe4f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -72,6 +72,7 @@ import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; +import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -81,6 +82,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -531,7 +533,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl confirms = changeRecordConfirmService.findByCondition(confirmDto); + if (CollectionUtils.isNotEmpty(confirms)) { + req.setRelationUnitAndPersonList(confirms.stream() + .map(item -> BeanUtil.copyProperties(item, VisaChangeTempCreateReq.RelationUnitAndPerson.class)) + .collect(Collectors.toList())); + } + // 发生内容说明 + List contentDescription = changeRecordRelationService.findByVisaAndVarName(changeRecord.getId(), VisaRelationFieldEnum.CONTENT_DESCRIPTION.name()); + if (CollectionUtils.isNotEmpty(contentDescription)) { + req.setChangeContextAndDescriptionList(contentDescription.stream() + .map(item -> { + try { + return JSONObject.parseObject(item.getContent(), VisaChangeTempCreateReq.ChangeContextAndDescription.class); + } catch (Exception e) { + throw new ServiceException("发生内容说明解析失败"); + } + }) + .collect(Collectors.toList())); + } + // 关联单据 + List bills = changeRecordBillService.listById(changeRecord.getId()); + if (CollectionUtils.isNotEmpty(bills)) { + req.setRelationOrderMap(bills.stream().collect(Collectors.groupingBy(b -> b.getBillType().name(), + Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))) + ); + } + // 附件 + List attach = changeRecordRelationService.findByVisaAndVarName(changeRecord.getId(), VisaRelationFieldEnum.ATTACHMENT.name()); + if (CollectionUtils.isNotEmpty(attach)) { + req.setAttach(attach.stream() + .map(item -> { + try { + return JSONObject.parseObject(item.getContent(), UploadFieldDTO.class); + } catch (Exception e) { + throw new ServiceException("附件解析失败"); + } + }) + .collect(Collectors.toList())); + } + return req; } } From bea156f7eea604899fe767378fc3531e354d2504 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 16:12:31 +0800 Subject: [PATCH 098/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E4=BA=8E=20nacos=20=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=9A=84=E9=85=8D=E7=BD=AE=20Bean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RefreshableConfiguration.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java new file mode 100644 index 00000000..76d849ba --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java @@ -0,0 +1,30 @@ +package cn.axzo.nanopart.visa.server.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * 可 nacos 动态更新的对象 + * + * @author wangli + * @since 2025-02-07 16:03 + */ +@Data +@Component +@RefreshScope +public class RefreshableConfiguration { + + /** + * IM 群创建成功后发送卡片模板 + */ + @Value("${visa.im.card:261c7fa3db344fb69f3553f695a5a19c}") + private String imGroupCardTemplateCode; + /** + * 变更签证洽商通知 + * IM 群添加成员,给新成员发送的通知 + */ + @Value("${visa.im.notice.addMember:2a4fe042020f4dd783b73fdbb6e6ac98}") + private String imGroupAddMemberNoticeTemplateCode; +} From df4d6a7827a6906a8bd918229246f54e67794d95 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 7 Feb 2025 16:15:43 +0800 Subject: [PATCH 099/341] =?UTF-8?q?feat:=20(REQ-3300)=20VisaHelper?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97NPE?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordLogApi.java | 2 +- .../controller/ChangeRecordController.java | 1 + .../controller/ChangeRecordLogController.java | 2 +- .../impl/ChangeRecordLogServiceImpl.java | 54 ++++++++++++++++--- .../service/impl/ChangeRecordServiceImpl.java | 3 ++ .../nanopart/visa/server/utils/Constants.java | 34 ++++++++++++ 6 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java index cda0305e..0d794319 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordLogApi.java @@ -20,7 +20,7 @@ public interface ChangeRecordLogApi { /** * 根据变签Id,获取变签日志 */ - @PostMapping("api/visa/log/fetchVisaLogByVisaId") + @PostMapping("/api/visa/log/fetchVisaLogByVisaId") ApiListResult fetchVisaLogByVisaId(@RequestBody @Valid FetchVisaLogByVisaIdRequest req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index c5b70006..9f9940a1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -74,6 +74,7 @@ public class ChangeRecordController implements ChangeRecordApi { /** * 变签详情 */ + @Override public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) { VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId()); resp.setBtnList(VisaButtonTypeEnum.all()); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java index 84e67970..ce209c63 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordLogController.java @@ -30,7 +30,7 @@ public class ChangeRecordLogController implements ChangeRecordLogApi { /** * 根据变签Id,获取变签日志 */ - @RequestMapping(value = "api/visa/log/fetchVisaLogByVisaId", method = RequestMethod.POST) + @Override public ApiListResult fetchVisaLogByVisaId(@RequestBody @Valid FetchVisaLogByVisaIdRequest req) { List responseList = changeRecordLogService.fetchVisaLogByVisaId(req.getVisaId()); return ApiListResult.ok(responseList); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index c61e24d9..cfa01526 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaLogDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordLogDao; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; @@ -76,6 +77,11 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl buildLogList(Long visaId, VisaLogTypeEnum type, VisaLogParam param) { + + if (Objects.isNull(visaId) || Objects.isNull(type)) { + return Lists.newArrayList(); + } + List logList = Lists.newArrayList(); switch (type) { case CHAT_GROUP: @@ -86,7 +92,10 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 17:03:29 +0800 Subject: [PATCH 100/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=20IM=20=E7=BE=A4=E6=88=90=E5=91=98=E7=9A=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E4=BF=A1=E6=81=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordConfirmServiceImpl.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index c7b29c7a..83a87588 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -273,17 +273,6 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl x)); } - private Map buildPersonDtoMap(Set personSet) { - if (CollectionUtils.isEmpty(personSet)) { - return Maps.newHashMap(); - } - List profiles = visaProfileGateway.getProfiles(Lists.newArrayList(personSet)); - if (CollectionUtils.isEmpty(profiles)) { - return Maps.newHashMap(); - } - return profiles.stream().collect(Collectors.toMap(PersonProfileDto::getId, Function.identity(), (x, y) -> x)); - } - /** * 条件查询列表 */ @@ -351,9 +340,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl personMap = buildPersonDtoMap(list.stream() + Map personMap = visaProfileGateway.getProfileMap(list.stream() .map(ChangeRecordConfirm::getPersonId) - .collect(Collectors.toSet())); + .collect(Collectors.toList())); return list.stream().map(i -> VisaChangeApproveCreateReq.ApprovePersonInfo.builder() .workspaceId(i.getWorkspaceId()) .ouId(i.getOuId()) From a1f33a364dc5579e0312996e716fffbe59204dca Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 17:04:38 +0800 Subject: [PATCH 101/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20IM=20=E7=BE=A4=E6=88=90=E5=91=98=E5=8F=98=E5=8A=A8=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E6=93=8D=E4=BD=9C=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E6=8A=95=E7=A5=A8=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ChangeRecordRelationService.java | 3 +- .../impl/ChangeRecordRelationServiceImpl.java | 48 ++++++++++++++++--- .../service/impl/ChangeRecordServiceImpl.java | 19 +++++--- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index 8922fe35..bc2d79c3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; @@ -45,7 +46,7 @@ public interface ChangeRecordRelationService extends IService implements ChangeRecordRelationService { private final ChangeRecordService changeRecordService; private final VisaProfileGateway visaProfileGateway; + private final MsgCenterGateway msgCenterGateway; /** * 保存 @@ -130,6 +138,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl byCondition = findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode()) + .content(String.valueOf(req.getOperatorOuId())) + .contentExt(NumberUtil.isPositiveNumber(req.getOperatorWorkspaceId()) ? String.valueOf(req.getOperatorWorkspaceId()) : null) + .createBy(req.getOperatorPersonId()) + .build()); + removeByIds(byCondition.stream().map(ChangeRecordRelation::getVisaId).collect(Collectors.toList())); + } + return true; } @@ -172,6 +207,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl imGroupParticipate = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode()) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ad4b405b..789de120 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -31,7 +31,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; -import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -123,7 +123,9 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_RECORD_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; @@ -577,7 +579,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 17:05:56 +0800 Subject: [PATCH 102/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=9B=B8=E5=85=B3=E4=BA=8B=E4=BB=B6=E7=9A=84=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RocketMQEventConfiguration.java | 22 ++++ .../visa/api/constant/VisaConstant.java | 13 ++- .../nanopart/visa/api/enums/VisaTypeEnum.java | 6 + .../api/request/ImGroupOperationClearReq.java | 24 ++++ .../visa/api/response/ImGroupTipsResp.java | 2 + .../visa/server/dto/VisaRelationDto.java | 15 +++ .../im/ImGroupAddMembersEventHandler.java | 100 +++++++++++++++++ .../im/ImGroupDismissedEventHandler.java | 41 +++++++ .../im/ImGroupRemoveMembersEventHandler.java | 73 +++++++++++++ .../im/ImGroupsCreatedEventHandler.java | 103 ++++++++++++++++++ .../visa/server/rpc/VisaProfileGateway.java | 14 +++ 11 files changed, 411 insertions(+), 2 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupDismissedEventHandler.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java index a27af970..63390c70 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java @@ -264,4 +264,26 @@ public class RocketMQEventConfiguration { super.onEvent(message, eventConsumer); } } + + /** + * IM 事件处理 + */ + @Slf4j + @Component + @RocketMQMessageListener(topic = "topic_im_center_${spring.profiles.active}", + consumerGroup = "GID_im_${spring.application.name}_${spring.profiles.active}", + consumeMode = ConsumeMode.ORDERLY, + nameServer = "${rocketmq.name-server}" + ) + public static class ImCenterListener extends BaseListener implements RocketMQListener { + + @Autowired + private EventConsumer eventConsumer; + + @Override + public void onMessage(MessageExt message) { + log.info("ImCenterListener onMessage nanopart, message:{}", JSON.toJSONString(message)); + super.onEvent(message, eventConsumer); + } + } } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 691e1189..044acc99 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -17,10 +17,19 @@ public interface VisaConstant { * 用于发送待办的变量名 */ String WORKFLOW_PENDING_TOPIC = "theme"; + String MSG_CENTER_APP_CODE = "nanopart-visa"; /** - * IM 群的扩展信息 + * IM 群的扩展信息:变洽签 ID */ - String IM_GROUP_BIZ_INFO_RECORD_ID = "visaId"; + String IM_GROUP_BIZ_INFO_VISA_ID = "visaId"; + /** + * IM 群扩展信息:变洽签单据类型 + */ + String IM_GROUP_BIZ_INFO_VISA_TYPE = "visaType"; + /** + * IM 群扩展信息:群主 workspaceId + */ + String IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID = "ownerWorkspaceId"; // **************** 业务传入审批的表单项组件的唯一的 KEY ***************** // 单号 String FORM_FIELD_NO = "no"; diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java index 74fa68e5..391e02f6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java @@ -4,6 +4,8 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; + /** * 签证业务类型 * @@ -21,4 +23,8 @@ public enum VisaTypeEnum { private final String processDefinitionKey; private final String code; private final String desc; + + public static VisaTypeEnum valueOfCode(String code) { + return Arrays.stream(VisaTypeEnum.values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null); + } } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java new file mode 100644 index 00000000..40133437 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java @@ -0,0 +1,24 @@ +package cn.axzo.nanopart.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * IM 群成员投票操作的清除 + * + * @author wangli + * @since 2025-02-07 15:39 + */ +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ImGroupOperationClearReq extends ImGroupOperationReq{ + + private Boolean clearAll; + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java index 0dbe7caf..4128475e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java @@ -22,6 +22,8 @@ public class ImGroupTipsResp { private VisaStatusEnum status; + private String statusText; + private String tipsText; private List buttonList; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java index 70b4b39c..69d40f88 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaRelationDto.java @@ -28,4 +28,19 @@ public class VisaRelationDto { */ private String varName; + /** + * 内容 + */ + private String content; + + /** + * 内容扩展 + */ + private String contentExt; + + /** + * 创建人 + */ + private Long createBy; + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java new file mode 100644 index 00000000..63bb5a0d --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -0,0 +1,100 @@ +package cn.axzo.nanopart.visa.server.mq.listener.im; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventHandler; +import cn.axzo.im.center.api.vo.group.GroupInfo; +import cn.axzo.im.center.api.vo.group.GroupMemberInfo; +import cn.axzo.im.center.api.vo.mq.GroupMembersChangeMessage; +import cn.axzo.msg.center.api.MessageAPIV3; +import cn.axzo.msg.center.api.request.v3.MessageSendReqV3; +import cn.axzo.msg.center.service.dto.PersonV3DTO; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration; +import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.groovy.util.Maps; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.Objects; + +import static cn.axzo.im.center.api.enums.MqEventType.GROUP_ADD_MEMBERS; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; + +/** + * 监听 IM 添加群成员的广播事件 + * + * @author wangli + * @since 2025-02-07 13:53 + */ +@Slf4j +@Component +public class ImGroupAddMembersEventHandler implements EventHandler, InitializingBean { + @Autowired + private EventConsumer eventConsumer; + @Resource + private RefreshableConfiguration refreshableConfiguration; + @Resource + private MessageAPIV3 noticeApi; + @Resource + private VisaProfileGateway visaProfileGateway; + + @Override + public void onEvent(Event event, EventConsumer.Context context) { + if (Objects.isNull(event) || Objects.isNull(event.getEventCode())) { + log.warn("illegal event code: {}", JSON.toJSONString(event)); + return; + } + log.info("receive add member event, push notice : {}", JSON.toJSONString(event)); + GroupMembersChangeMessage groupMembersChangeMessage = event.normalizedData(GroupMembersChangeMessage.class); + GroupInfo group = groupMembersChangeMessage.getGroup(); + AssertUtil.notNull(group, "im group is null"); + + GroupMemberInfo member = groupMembersChangeMessage.getMember(); + AssertUtil.notNull(member, "im member is null"); + + Map profileMap = visaProfileGateway.getProfileMap(Lists.newArrayList(group.getOwnerPersonId(), member.getPersonId())); + + String visaId = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + String visaType = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, ""); + Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L); + + PersonProfileDto memberProfile = profileMap.getOrDefault(member.getPersonId(), null); + PersonProfileDto ownerProfile = profileMap.getOrDefault(group.getOwnerPersonId(), null); + + if (Objects.nonNull(memberProfile) && Objects.nonNull(ownerProfile)) { + MessageSendReqV3 notice = new MessageSendReqV3(); + notice.setSender(PersonV3DTO.builder().build()); + + notice.setReceivers(Lists.newArrayList(PersonV3DTO.builder() + .id(member.getPersonId()) + .name(memberProfile.getRealName()) + .imReceiveModel(new PersonV3DTO.ReceiveModel(member.getPersonOuId(), workspaceId)) + .build())); + notice.setBizEventMappingCode(refreshableConfiguration.getImGroupAddMemberNoticeEventCode()); + notice.setBizCode(visaId); + notice.setBizExtParams(new JSONObject(Maps.of( + "initiatorName", ownerProfile.getRealName(), + "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), + "topic", group.getName()))); + noticeApi.send(notice); + } + log.info("receive add member event, push notice success!"); + } + + @Override + public void afterPropertiesSet() { + eventConsumer.registerHandler(GROUP_ADD_MEMBERS.getEventCode(), this); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupDismissedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupDismissedEventHandler.java new file mode 100644 index 00000000..9595df8c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupDismissedEventHandler.java @@ -0,0 +1,41 @@ +package cn.axzo.nanopart.visa.server.mq.listener.im; + +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventHandler; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +import static cn.axzo.im.center.api.enums.MqEventType.GROUP_DISMISSED; + +/** + * 监听 IM 群解散的广播事件 + * + * @author wangli + * @since 2025-02-07 13:53 + */ +@Slf4j +@Component +public class ImGroupDismissedEventHandler implements EventHandler, InitializingBean { + @Autowired + private EventConsumer eventConsumer; + + @Override + public void onEvent(Event event, EventConsumer.Context context) { + if (Objects.isNull(event) || Objects.isNull(event.getEventCode())) { + log.warn("illegal event code: {}", JSON.toJSONString(event)); + return; + } + + } + + @Override + public void afterPropertiesSet() { + eventConsumer.registerHandler(GROUP_DISMISSED.getEventCode(), this); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java new file mode 100644 index 00000000..16e77ba2 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java @@ -0,0 +1,73 @@ +package cn.axzo.nanopart.visa.server.mq.listener.im; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventHandler; +import cn.axzo.im.center.api.vo.group.GroupInfo; +import cn.axzo.im.center.api.vo.group.GroupMemberInfo; +import cn.axzo.im.center.api.vo.mq.GroupMembersChangeMessage; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; +import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Objects; + +import static cn.axzo.im.center.api.enums.MqEventType.GROUP_REMOVE_MEMBERS; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; + +/** + * 监听 IM 群成员被移除的广播事件 + * + * @author wangli + * @since 2025-02-07 13:53 + */ +@Slf4j +@Component +public class ImGroupRemoveMembersEventHandler implements EventHandler, InitializingBean { + @Autowired + private EventConsumer eventConsumer; + @Resource + private ChangeRecordRelationService changeRecordRelationService; + + @Override + public void onEvent(Event event, EventConsumer.Context context) { + if (Objects.isNull(event) || Objects.isNull(event.getEventCode())) { + log.warn("illegal event code: {}", JSON.toJSONString(event)); + return; + } + log.info("receive remove member event: {}", JSON.toJSONString(event)); + GroupMembersChangeMessage groupMembersChangeMessage = event.normalizedData(GroupMembersChangeMessage.class); + GroupInfo group = groupMembersChangeMessage.getGroup(); + AssertUtil.notNull(group, "im group is null"); + + GroupMemberInfo member = groupMembersChangeMessage.getMember(); + AssertUtil.notNull(member, "im member is null"); + + // 移除该群成员的投票信息 + removeMemberVote(group, member); + log.info("receive remove member event handle success!"); + } + + private void removeMemberVote(GroupInfo group, GroupMemberInfo member) { + Long visaId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + + ImGroupOperationClearReq build = new ImGroupOperationClearReq(); + build.setClearAll(false); + build.setImGroupId(group.getTid()); + build.setVisaId(visaId); + build.setOperatorPersonId(member.getPersonId()); + build.setOperatorOuId(member.getPersonOuId()); + changeRecordRelationService.clearImOperationParticipate(build); + } + + @Override + public void afterPropertiesSet() { + eventConsumer.registerHandler(GROUP_REMOVE_MEMBERS.getEventCode(), this); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java new file mode 100644 index 00000000..c00ef1cf --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -0,0 +1,103 @@ +package cn.axzo.nanopart.visa.server.mq.listener.im; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventHandler; +import cn.axzo.im.center.api.vo.PersonAccountAttribute; +import cn.axzo.im.center.api.vo.group.GroupInfo; +import cn.axzo.im.center.api.vo.group.GroupMemberInfo; +import cn.axzo.im.center.api.vo.mq.GroupChangedMessage; +import cn.axzo.im.center.api.vo.req.GroupGetOwnerRequest; +import cn.axzo.im.center.api.vo.req.SendChatMessageRequest; +import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse; +import cn.axzo.im.center.common.enums.AppTypeEnum; +import cn.axzo.msg.center.service.dto.PeerPerson; +import cn.axzo.msg.center.service.pending.request.CardSendRequest; +import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Sets; +import lombok.extern.slf4j.Slf4j; +import org.apache.groovy.util.Maps; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; + +import static cn.axzo.im.center.api.enums.MqEventType.GROUP_CREATED; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE; + +/** + * 监听 IM 群创建的广播事件 + * + * @author wangli + * @since 2025-02-07 13:53 + */ +@Slf4j +@Component +public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBean { + @Autowired + private EventConsumer eventConsumer; + @Resource + private MsgCenterGateway msgCenterGateway; + + @Override + public void onEvent(Event event, EventConsumer.Context context) { + if (Objects.isNull(event) || Objects.isNull(event.getEventCode())) { + log.warn("illegal event code: {}", JSON.toJSONString(event)); + return; + } + log.info("receive create im group event: {}", JSON.toJSONString(event)); + GroupChangedMessage groupChangedMessage = event.normalizedData(GroupChangedMessage.class); + GroupInfo group = groupChangedMessage.getGroup(); + AssertUtil.notNull(group, "group info is null"); + sendCardAndMsgToImGroup(group); + log.info("receive create im group event, handle success: {}", JSON.toJSONString(event)); + } + + private void sendCardAndMsgToImGroup(GroupInfo group) { + Map bizGroupInfo = group.getBizGroupInfo(); + HashSet imReceiveAccounts = Sets.newHashSet(String.valueOf(group.getTid())); + GroupGetOwnerRequest ownerRequest = new GroupGetOwnerRequest(); + GroupGetOwnerResponse groupOwner = msgCenterGateway.getGroupOwner(ownerRequest); + AssertUtil.isTrue(Objects.nonNull(groupOwner) && Objects.nonNull(groupOwner.getOwner()), "im group owner is null"); + GroupMemberInfo owner = groupOwner.getOwner(); + // 发送卡片 + CardSendRequest cardRequest = new CardSendRequest(); + cardRequest.setAppCode(MSG_CENTER_APP_CODE); + cardRequest.setTemplateCode(""); + Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + cardRequest.setBizCode(IM_GROUP_BIZ_INFO_VISA_ID + ":" + visaId); + Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L); + cardRequest.setSender(PeerPerson.create(owner.getPersonId(), owner.getPersonOuId(), ownerWorkspaceId)); + cardRequest.setImSenderAccountAppType(AppTypeEnum.CMP); + cardRequest.setImReceiveAccounts(imReceiveAccounts); + cardRequest.setBizParam(new JSONObject(Maps.of("topic", ""))); + msgCenterGateway.sendCardToCroup(cardRequest); + + // 普通群消息 + SendChatMessageRequest msgRequest = new SendChatMessageRequest(); + msgRequest.setAsTextMessage(group.getName() + ",请各位审阅"); + msgRequest.setImReceiveAccounts(imReceiveAccounts); + msgRequest.setSender(PersonAccountAttribute.builder() + .personId(String.valueOf(owner.getPersonId())) + .ouId(owner.getPersonOuId()) + .workspaceId(ownerWorkspaceId) + .appType(AppTypeEnum.CMP) + .build()); + msgRequest.setBizId(IM_GROUP_BIZ_INFO_VISA_ID + ":" + visaId); + msgCenterGateway.sendMsgToGroup(msgRequest); + } + + @Override + public void afterPropertiesSet() { + eventConsumer.registerHandler(GROUP_CREATED.getEventCode(), this); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java index bea10999..743440d4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java @@ -5,13 +5,18 @@ import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.azxo.framework.common.logger.MethodAroundLog; import cn.azxo.framework.common.model.CommonResponse; import cn.hutool.core.collection.CollectionUtil; +import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author chenwenjian @@ -60,4 +65,13 @@ public class VisaProfileGateway { } return Collections.emptyList(); } + + @MethodAroundLog(target = "pudge", source = "nanopart", value = "获取用户档案并转换Map") + public Map getProfileMap(List personIds) { + List profiles = getProfiles(personIds); + if (CollectionUtils.isEmpty(profiles)) { + return Maps.newHashMap(); + } + return profiles.stream().collect(Collectors.toMap(PersonProfileDto::getId, Function.identity(), (x, y) -> x)); + } } From a803b802f724e4b8714b168a646fc8612cc0d16b Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 17:06:19 +0800 Subject: [PATCH 103/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=20nacos=20=E5=8A=A8=E6=80=81=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/config/RefreshableConfiguration.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java index 76d849ba..14be872f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java @@ -27,4 +27,9 @@ public class RefreshableConfiguration { */ @Value("${visa.im.notice.addMember:2a4fe042020f4dd783b73fdbb6e6ac98}") private String imGroupAddMemberNoticeTemplateCode; + /** + * 配合上面的通知发送使用 + */ + @Value("${visa.im.event.addMember:visaNegotiation}") + private String imGroupAddMemberNoticeEventCode; } From 09fce2418907a62ed0604e5f3e42b5875d988ad6 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 17:06:49 +0800 Subject: [PATCH 104/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20Feign=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/rpc/MsgCenterGateway.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java index 1c075d02..df32c20a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java @@ -2,14 +2,21 @@ package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.feign.GroupApi; +import cn.axzo.im.center.api.feign.MessageApi; import cn.axzo.im.center.api.vo.req.GroupCreateRequest; import cn.axzo.im.center.api.vo.req.GroupDismissRequest; import cn.axzo.im.center.api.vo.req.GroupGetMembersRequest; import cn.axzo.im.center.api.vo.req.GroupGetOwnerRequest; +import cn.axzo.im.center.api.vo.req.SendChatMessageRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.im.center.api.vo.resp.GroupGetMembersResponse; import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse; +import cn.axzo.msg.center.service.pending.card.CardClient; +import cn.axzo.msg.center.service.pending.request.CardSendRequest; +import cn.axzo.msg.center.service.pending.request.CardUpdateStateRequest; +import cn.axzo.msg.center.service.pending.response.CardSendResponse; import cn.azxo.framework.common.logger.MethodAroundLog; +import cn.azxo.framework.common.model.CommonResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -28,6 +35,8 @@ import java.util.Objects; public class MsgCenterGateway { private final GroupApi groupApi; + private final MessageApi messageApi; + private final CardClient cardClient; @MethodAroundLog(target = "imCenter", source = "nanopart", value = "创建 IM 群聊") public GroupCreateResponse createImGroup(GroupCreateRequest request) { @@ -60,4 +69,27 @@ public class MsgCenterGateway { } return null; } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "发送普通消息到群消息") + public Long sendMsgToGroup(SendChatMessageRequest request) { + ApiResult mesageId = messageApi.sendChatMessage(request); + if(mesageId.isSuccess() && Objects.nonNull(mesageId.getData())) { + return mesageId.getData(); + } + return null; + } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "发送卡片消息到群消息") + public CardSendResponse sendCardToCroup(CardSendRequest request) { + CommonResponse sendCard = cardClient.send(request); + if (Objects.nonNull(sendCard) && sendCard.getCode() == 200) { + return sendCard.getData(); + } + return null; + } + + @MethodAroundLog(target = "imCenter", source = "nanopart", value = "更新 IM 群内卡片状态") + public void updateCardState(CardUpdateStateRequest request) { + cardClient.updateState(request); + } } From 6dfbf95f36407227f6276742858ff823e07ce8f1 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 7 Feb 2025 17:23:05 +0800 Subject: [PATCH 105/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/server/dto/VisaConfirmDto.java | 2 ++ .../impl/ChangeRecordConfirmServiceImpl.java | 7 +++++-- .../service/impl/ChangeRecordServiceImpl.java | 16 ++++++++++------ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java index 283be9a1..cea663ca 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java @@ -87,6 +87,8 @@ public class VisaConfirmDto { */ private Collection nodeIds; + private Long operator; + /** * 根据DataItem创建Dto */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 83a87588..11fd1ad2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.service.impl; +import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; @@ -25,7 +26,6 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; -import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -78,7 +78,10 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl dtoList) { - List visaConfirmDtos = BeanUtil.copyToList(dtoList, ChangeRecordConfirm.class); + List visaConfirmDtos = BeanMapper.copyList(dtoList, ChangeRecordConfirm.class, (s, t) -> { + t.setCreateBy(s.getOperator()); + t.setUpdateBy(s.getOperator()); + }); return this.saveOrUpdateBatch(visaConfirmDtos); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 789de120..73150f3a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -471,14 +471,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildVisaConfirmDto(p, changeRecord)) + .map(p -> buildConfirmVisaConfirmDto(p, changeRecord, req.getOperatorPersonId())) .collect(Collectors.toList()); } changeRecordConfirmService.addConfirm(confirmPerson); @@ -934,7 +936,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 17:33:00 +0800 Subject: [PATCH 106/341] =?UTF-8?q?feat:=20(REQ-3300)=20VisaHelper?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97checkstyl?= =?UTF-8?q?e=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaStatusEnum.java | 2 +- .../impl/ChangeRecordLogServiceImpl.java | 161 ++++++++---------- .../service/impl/ChangeRecordServiceImpl.java | 5 + 3 files changed, 76 insertions(+), 92 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java index 74ce8cf1..fefa3774 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java @@ -33,7 +33,7 @@ public enum VisaStatusEnum { /** * 可以编辑变更签证单的状态 */ - private static Set editFormStatus = Sets.newHashSet(DECIDING, EXECUTING); + private static Set editFormStatus = Sets.newHashSet(DECIDING, EXECUTING, DECIDING_FROM_APPROVE); private final String code; private final String desc; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index cfa01526..172765f4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -85,163 +85,142 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl logList = Lists.newArrayList(); switch (type) { case CHAT_GROUP: - ChangeRecordLog.ChangeRecordLogBuilder builder = ChangeRecordLog.builder(); // 动作: 创建群聊洽商 // 状态流转:[待提报|审核不通过的待提报] --> [决策中] - String userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.action(type.name()) - .title(type.getTitle()) - .content(String.format(type.getContent(), userName)) - .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY) - .visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.CHAT_GROUP.name()) + .title(VisaLogTypeEnum.CHAT_GROUP.getTitle()) + .content(String.format(VisaLogTypeEnum.CHAT_GROUP.getContent(), userName)) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case EDIT_FORM: - builder = ChangeRecordLog.builder(); - builder.visaId(visaId) - .action(type.name()); // 编辑表单 userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(String.format(type.getTitle(), userName)) - .content(String.format(type.getContent(), userName)) - .orderBy(Constants.EDIT_FORM_ORDER_BY) - .visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.EDIT_FORM.name()) + .title(String.format(VisaLogTypeEnum.EDIT_FORM.getTitle(), userName)) + .content(String.format(VisaLogTypeEnum.EDIT_FORM.getContent(), userName)) + .orderBy(Constants.EDIT_FORM_ORDER_BY).build()); case EDIT_AMOUNT: if (Objects.nonNull(param) && Objects.nonNull(param.getOldAmountChange()) && Objects.nonNull(param.getNewAmountChange()) && !Objects.equals(param.getOldAmountChange().compareTo(param.getNewAmountChange()), 0)) { - builder = ChangeRecordLog.builder(); - builder.visaId(visaId) - .action(type.name()); // 编辑金额变化 userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(String.format(type.getTitle(),userName )) - .content(String.format(type.getContent(), param.getOldAmountChange().toPlainString(), param.getNewAmountChange().toPlainString())) - .orderBy(Constants.AMOUNT_CHANGE_ORDER_BY) - .visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.EDIT_AMOUNT.name()) + .title(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getTitle(),userName )) + .content(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getContent(), param.getOldAmountChange().toPlainString(), param.getNewAmountChange().toPlainString())) + .orderBy(Constants.AMOUNT_CHANGE_ORDER_BY).build()); } case UPLOAD_FILE: if (CollectionUtils.isNotEmpty(param.getUploadAttach())) { - builder = ChangeRecordLog.builder(); // 上传附件 userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(String.format(type.getTitle(), userName)) - .content(String.format(type.getContent(), userName, param.getUploadAttach().size(), this.buildAttach(param.getUploadAttach()))) - .orderBy(Constants.ADD_UPLOAD_FILE_ORDER_BY) - .visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.UPLOAD_FILE.name()) + .title(String.format(VisaLogTypeEnum.UPLOAD_FILE.getTitle(), userName)) + .content(String.format(VisaLogTypeEnum.UPLOAD_FILE.getContent(), userName, param.getUploadAttach().size(), this.buildAttach(param.getUploadAttach()))) + .orderBy(Constants.ADD_UPLOAD_FILE_ORDER_BY) + .build()); } case DELETE_UPLOAD_FILE: if (CollectionUtils.isNotEmpty(param.getDeleteAttach())) { - builder = ChangeRecordLog.builder(); // 删除附件 userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(String.format(type.getTitle(),userName)) - .content(String.format(type.getContent(),userName, param.getDeleteAttach().size(), this.buildAttach(param.getDeleteAttach()))) - .orderBy(Constants.DELETE_UPLOAD_FILE_ORDER_BY) - .visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.DELETE_UPLOAD_FILE.name()) + .title(String.format(VisaLogTypeEnum.DELETE_UPLOAD_FILE.getTitle(),userName)) + .content(String.format(VisaLogTypeEnum.DELETE_UPLOAD_FILE.getContent(),userName, param.getDeleteAttach().size(), this.buildAttach(param.getDeleteAttach()))) + .orderBy(Constants.DELETE_UPLOAD_FILE_ORDER_BY) + .build()); } break; case TO_EXECUTE: - builder = ChangeRecordLog.builder(); - userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); // 动作:执行 // 状态流转:[决策中|审核不通过的待提报]-->[执行中] - builder.action(type.name()); - builder.title(type.getTitle()); - builder.content(String.format(type.getContent(), userName)); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.TO_EXECUTE.name()) + .title(VisaLogTypeEnum.TO_EXECUTE.getTitle()) + .content(String.format(VisaLogTypeEnum.TO_EXECUTE.getContent(), userName)) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case TO_APPRROVE: ChangeRecord changeRecord = this.changeRecordService.getById(visaId); - builder = ChangeRecordLog.builder(); userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); // 动作:发起审批 // 状态流转:[待提报|审批不通过的待提报|决策中|审批不通过的决策中|执行中]-->[审批中] - builder.action(type.name()); - builder.title(String.format(type.getTitle(), changeRecord.getType().getDesc())); - builder.content(String.format(type.getContent(), userName, changeRecord.getType().getDesc())); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.TO_APPRROVE.name()) + .title(String.format(VisaLogTypeEnum.TO_APPRROVE.getTitle(), changeRecord.getType().getDesc())) + .content(String.format(VisaLogTypeEnum.TO_APPRROVE.getContent(), userName, changeRecord.getType().getDesc())) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case APPROVED_AGRESS: - builder = ChangeRecordLog.builder(); // 动作:审批流:某审批人审批通过 // 状态流转:仍然是审批中 [审批中] -> [审批中] userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - - builder.title(String.format(type.getTitle(), userName)); - builder.content(String.format(type.getContent(), userName)); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.APPROVED_AGRESS.name()) + .title(String.format(VisaLogTypeEnum.APPROVED_AGRESS.getTitle(), userName)) + .content(String.format(VisaLogTypeEnum.APPROVED_AGRESS.getContent(), userName)) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case REVERT_APPROVE: - builder = ChangeRecordLog.builder(); // 动作:审批流:撤回审批 // 状态流转:[审批中] -> [审批到待提报|审批到决策中] userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(type.getTitle()); - builder.content(String.format(type.getContent(), userName)); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.REVERT_APPROVE.name()) + .title(VisaLogTypeEnum.REVERT_APPROVE.getTitle()) + .content(String.format(VisaLogTypeEnum.REVERT_APPROVE.getContent(), userName)) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case REJECT_APPROVE: - builder = ChangeRecordLog.builder(); // 动作:审批流:撤回审批 // 状态流转:[审批中] -> [审批到待提报|审批到决策中] userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(String.format(type.getTitle(), userName)); - builder.content(String.format(type.getContent(), userName, param.getReason())); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.REJECT_APPROVE.name()) + .title(String.format(VisaLogTypeEnum.REJECT_APPROVE.getTitle(), userName)) + .content(String.format(VisaLogTypeEnum.REJECT_APPROVE.getContent(), userName, param.getReason())) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case TRANSMIT_APPROVE: - builder = ChangeRecordLog.builder(); // 动作:审批流:撤回审批 // 状态流转:[审批中] -> [审批到待提报|审批到决策中] userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); - builder.title(type.getTitle()); - builder.content(String.format(type.getContent(), userName, param.getTransmitTo(),param.getReason())); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.TRANSMIT_APPROVE.name()) + .title(VisaLogTypeEnum.TRANSMIT_APPROVE.getTitle()) + .content(String.format(VisaLogTypeEnum.TRANSMIT_APPROVE.getContent(), userName, param.getTransmitTo(),param.getReason())) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case FORBIDED: - builder = ChangeRecordLog.builder(); - userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); // 动作:作废 // 状态流转:[待提报|审核不通过的待提报|决策中|审核不通过的决策中|执行中|审批中]-->[审核不通过的决策中] - builder.action(type.name()); - builder.title(type.getTitle()); - builder.content(String.format(type.getContent(), userName)); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.FORBIDED.name()) + .title(VisaLogTypeEnum.FORBIDED.getTitle()) + .content(String.format(VisaLogTypeEnum.FORBIDED.getContent(), userName)) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; case APPROVE_COMPLETED: - builder = ChangeRecordLog.builder(); changeRecord = this.changeRecordService.getById(visaId); // 动作:整个审批通过 // 状态流转:[审批中]-->[已完成] - builder.action(type.name()); - builder.title(String.format(type.getTitle(), changeRecord.getType().getDesc())); - builder.content(String.format(type.getContent(), changeRecord.getType().getDesc())); - builder.orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY); - builder.visaId(visaId); - logList.add(builder.build()); + logList.add(ChangeRecordLog.builder().visaId(visaId) + .action(VisaLogTypeEnum.APPROVE_COMPLETED.name()) + .title(String.format(VisaLogTypeEnum.APPROVE_COMPLETED.getTitle(), changeRecord.getType().getDesc())) + .content(String.format(VisaLogTypeEnum.APPROVE_COMPLETED.getContent(), changeRecord.getType().getDesc())) + .orderBy(Constants.CHANGE_STATUS_FILE_ORDER_BY).build()); break; default: throw new ServiceException("变签日志类型不匹配"); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ad4b405b..beedf3c1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -277,6 +277,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildPreStatus(VisaStatusEnum updateStatus) { List preStatusList; switch (updateStatus) { + case TO_REPORT: + // 动作:暂存 + // 状态流转:[待提报|审批的待提报]-->[待提报|审批到待提报] + preStatusList = Lists.newArrayList(VisaStatusEnum.TO_REPORT, VisaStatusEnum.REPORT_FROM_APPROVE); + break; case DECIDING: // 动作:洽商 // 状态流转:[待提报|审核不通过的待提报]-->[决策中] From b7358e4081a71093a9af42bc381227ffce67cbe7 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 18:02:28 +0800 Subject: [PATCH 107/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20SuperBuilder=20=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/ImGroupOperationReq.java | 2 ++ .../im/ImGroupRemoveMembersEventHandler.java | 15 ++++++++------- .../service/impl/ChangeRecordServiceImpl.java | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java index 9b4141d9..8f39d8be 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotNull; @@ -18,6 +19,7 @@ import javax.validation.constraints.NotNull; @Data @AllArgsConstructor @NoArgsConstructor +@SuperBuilder public class ImGroupOperationReq { /** * 变洽签 ID diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java index 16e77ba2..c2ab3bf6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java @@ -57,13 +57,14 @@ public class ImGroupRemoveMembersEventHandler implements EventHandler, Initializ private void removeMemberVote(GroupInfo group, GroupMemberInfo member) { Long visaId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); - ImGroupOperationClearReq build = new ImGroupOperationClearReq(); - build.setClearAll(false); - build.setImGroupId(group.getTid()); - build.setVisaId(visaId); - build.setOperatorPersonId(member.getPersonId()); - build.setOperatorOuId(member.getPersonOuId()); - changeRecordRelationService.clearImOperationParticipate(build); + + changeRecordRelationService.clearImOperationParticipate(ImGroupOperationClearReq.builder() + .clearAll(false) + .imGroupId(group.getTid()) + .visaId(visaId) + .operatorPersonId(member.getPersonId()) + .operatorOuId(member.getPersonOuId()) + .build()); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 21a3b40a..a92cb018 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1179,6 +1179,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 18:15:08 +0800 Subject: [PATCH 108/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20SuperBuilder=20=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/ImGroupOperationClearReq.java | 4 ++-- .../axzo/nanopart/visa/api/request/ImGroupOperationReq.java | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java index 40133437..16c53bc0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java @@ -13,10 +13,10 @@ import lombok.experimental.SuperBuilder; * @since 2025-02-07 15:39 */ @EqualsAndHashCode(callSuper = true) -@SuperBuilder @Data -@AllArgsConstructor +@SuperBuilder @NoArgsConstructor +@AllArgsConstructor public class ImGroupOperationClearReq extends ImGroupOperationReq{ private Boolean clearAll; diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java index 8f39d8be..53075e8a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java @@ -2,7 +2,6 @@ package cn.axzo.nanopart.visa.api.request; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; @@ -15,11 +14,10 @@ import javax.validation.constraints.NotNull; * @author wangli * @since 2025-02-05 17:30 */ -@Builder @Data -@AllArgsConstructor -@NoArgsConstructor @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor public class ImGroupOperationReq { /** * 变洽签 ID From 15aa6efbb70cc8fc6064b5774770209f898ea7a7 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 7 Feb 2025 18:26:06 +0800 Subject: [PATCH 109/341] feat: (REQ-3300) fix-NPE --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 21a3b40a..a20c0f15 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -803,10 +803,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { - Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); +// Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); return lambdaQuery() - .in(ChangeRecord::getId, visaList) +// .in(ChangeRecord::getId, visaList) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) .eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword()) From cb54953be48e4a607ed9dde241b717060fcec687 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 19:01:22 +0800 Subject: [PATCH 110/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=8D=A1=E7=89=87=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/constant/VisaConstant.java | 2 +- .../im/ImGroupAddMembersEventHandler.java | 4 +- .../im/ImGroupsCreatedEventHandler.java | 50 +++++++++++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 4 +- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 044acc99..37ca9a19 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -29,7 +29,7 @@ public interface VisaConstant { /** * IM 群扩展信息:群主 workspaceId */ - String IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID = "ownerWorkspaceId"; + String IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID = "initiatorWorkspaceId"; // **************** 业务传入审批的表单项组件的唯一的 KEY ***************** // 单号 String FORM_FIELD_NO = "no"; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index 63bb5a0d..d27d18b1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -28,7 +28,7 @@ import java.util.Map; import java.util.Objects; import static cn.axzo.im.center.api.enums.MqEventType.GROUP_ADD_MEMBERS; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; @@ -68,7 +68,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing String visaId = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); String visaType = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, ""); - Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L); + Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L); PersonProfileDto memberProfile = profileMap.getOrDefault(member.getPersonId(), null); PersonProfileDto ownerProfile = profileMap.getOrDefault(group.getOwnerPersonId(), null); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index c00ef1cf..b7fcb97a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -14,7 +14,16 @@ import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.msg.center.service.dto.PeerPerson; import cn.axzo.msg.center.service.pending.request.CardSendRequest; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Sets; @@ -26,12 +35,14 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Objects; import static cn.axzo.im.center.api.enums.MqEventType.GROUP_CREATED; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE; /** @@ -47,6 +58,14 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe private EventConsumer eventConsumer; @Resource private MsgCenterGateway msgCenterGateway; + @Resource + private RefreshableConfiguration refreshableConfiguration; + @Resource + private VisaProfileGateway visaProfileGateway; + @Resource + private ChangeRecordService changeRecordService; + @Resource + private ChangeRecordConfirmService changeRecordConfirmService; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -69,17 +88,38 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe GroupGetOwnerResponse groupOwner = msgCenterGateway.getGroupOwner(ownerRequest); AssertUtil.isTrue(Objects.nonNull(groupOwner) && Objects.nonNull(groupOwner.getOwner()), "im group owner is null"); GroupMemberInfo owner = groupOwner.getOwner(); + + Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + String visaType = (String) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, ""); + Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L); + + ChangeRecord visa = changeRecordService.getById(visaId); + AssertUtil.notNull(visa, "visa record is null"); + + List creators = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() + .visaId(visaId) + .bizType(VisaConfirmBizTypeEnum.CREATE) + .build()); + AssertUtil.notEmpty(creators, "creators is empty"); + + // 发送卡片 CardSendRequest cardRequest = new CardSendRequest(); cardRequest.setAppCode(MSG_CENTER_APP_CODE); - cardRequest.setTemplateCode(""); - Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + cardRequest.setTemplateCode(refreshableConfiguration.getImGroupCardTemplateCode()); cardRequest.setBizCode(IM_GROUP_BIZ_INFO_VISA_ID + ":" + visaId); - Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L); cardRequest.setSender(PeerPerson.create(owner.getPersonId(), owner.getPersonOuId(), ownerWorkspaceId)); cardRequest.setImSenderAccountAppType(AppTypeEnum.CMP); cardRequest.setImReceiveAccounts(imReceiveAccounts); - cardRequest.setBizParam(new JSONObject(Maps.of("topic", ""))); + // TODO + cardRequest.setBizParam(new JSONObject(Maps.of( + "topic", group.getName(), + "reason", visa.getReason(), + "initiatorName", creators.get(0), + "initiatorUnitName", "", + "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), + "amountChange", "" + ))); msgCenterGateway.sendCardToCroup(cardRequest); // 普通群消息 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f6624183..58593a04 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -123,7 +123,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; @@ -587,7 +587,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 09:58:31 +0800 Subject: [PATCH 111/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/VisaChangePageSearchResp.java | 7 ++++++ .../impl/ChangeRecordConfirmServiceImpl.java | 1 - .../service/impl/ChangeRecordServiceImpl.java | 23 +++++++++++++------ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index 447b8a34..7154fdb0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -124,4 +124,11 @@ public class VisaChangePageSearchResp { return type.getDesc(); } + public String getStatusDesc() { + if (Objects.isNull(status)) { + return null; + } + return status.getDesc(); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 11fd1ad2..c3dadd49 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -41,7 +41,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.function.Function; import java.util.stream.Collectors; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 21a3b40a..332ef3d8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -804,8 +804,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); - - return lambdaQuery() + LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() .in(ChangeRecord::getId, visaList) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) @@ -814,11 +813,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl nodeUserResp = nodeUserGateway.listOrgNodeUsers(nodeUserReq); if (CollectionUtils.isEmpty(nodeUserResp)) { @@ -903,7 +912,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 10:29:48 +0800 Subject: [PATCH 112/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=A0=A1=E9=AA=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 89d434ad..6727c31b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -932,20 +932,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 10:54:23 +0800 Subject: [PATCH 113/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E4=BF=A1=E6=81=AF=E6=9E=84=E5=BB=BA=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6727c31b..64c5d3d6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -847,8 +847,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorMap, ChangeRecordConfirm i) { VisaChangeInitiatorResp.VisaChangeInitiatorRespBuilder initiatorBuilder = VisaChangeInitiatorResp.builder() .personId(i.getPersonId()) - .ouId(i.getOuId()) - .nodeId(i.getNodeId()); + .ouId(i.getOuId()); OrgNodeUserBriefInfoResp initiator = initiatorMap.get(i.getPersonId()); if (Objects.isNull(initiator)) { log.error("获取发起人: {} 信息失败", i.getPersonId()); @@ -860,6 +859,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorPersonIdList = records.stream().map(ChangeRecord::getCreateBy).collect(Collectors.toList()); + List initiatorPersonIdList = visaIdInitiatorMap.values().stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList()); // Map Map initiatorMap = getPersonBriefInfoMap(records.get(0).getRelationWorkspaceId(), initiatorPersonIdList); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); From 0d5b31c217499922b6c15d385dada3fb4d6fccb2 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 11:19:45 +0800 Subject: [PATCH 114/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E6=97=A5=E5=BF=97=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/ChangeRecordLogEventHandle.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java new file mode 100644 index 00000000..ede78fbd --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java @@ -0,0 +1,24 @@ +package cn.axzo.nanopart.visa.server.mq.listener.visa; + +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; +import cn.axzo.framework.rocketmq.EventHandler; +import org.springframework.beans.factory.InitializingBean; + +/** + * TODO + * + * @author wangli + * @since 2025-02-08 11:18 + */ +public class ChangeRecordLogEventHandle implements EventHandler, InitializingBean { + @Override + public void onEvent(Event event, EventConsumer.Context context) { + + } + + @Override + public void afterPropertiesSet() throws Exception { + + } +} From 9859e8d29a893da63196a093b67350b07f67f15a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 11:24:56 +0800 Subject: [PATCH 115/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E6=97=A5=E5=BF=97=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/visa/ChangeRecordLogEventHandle.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java index ede78fbd..5c1b4362 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java @@ -3,7 +3,11 @@ package cn.axzo.nanopart.visa.server.mq.listener.visa; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; +import cn.axzo.nanopart.visa.api.enums.MQEventEnum; +import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; +import lombok.AllArgsConstructor; import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; /** * TODO @@ -11,14 +15,17 @@ import org.springframework.beans.factory.InitializingBean; * @author wangli * @since 2025-02-08 11:18 */ +@Component +@AllArgsConstructor public class ChangeRecordLogEventHandle implements EventHandler, InitializingBean { + private final EventConsumer eventConsumer; @Override public void onEvent(Event event, EventConsumer.Context context) { - + VisaChangeLogPayload log = event.normalizedData(VisaChangeLogPayload.class); } @Override public void afterPropertiesSet() throws Exception { - + eventConsumer.registerHandler(MQEventEnum.VISA_CHANGE_LOG.getEventCode(), this); } } From 934c693db7bb93f8d59cc779ef70ec5cf64a2551 Mon Sep 17 00:00:00 2001 From: xudawei Date: Sat, 8 Feb 2025 11:38:04 +0800 Subject: [PATCH 116/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E5=AE=A1=E6=89=B9=E4=B8=8D=E9=80=9A=E8=BF=87/?= =?UTF-8?q?=E5=8D=95=E4=B8=AA=E5=AE=A1=E6=89=B9=E6=B5=81=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=AE=B0=E5=BD=95=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/enums/VisaLogTypeEnum.java | 2 +- .../listener/visa/ChangeRecordLogEventHandle.java | 3 +++ .../server/mq/producer/VisaChangeLogPayload.java | 13 +++++++++++++ .../service/impl/ChangeRecordLogServiceImpl.java | 2 +- .../axzo/nanopart/visa/server/utils/Constants.java | 5 +++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java index 78e226f8..2bc931f2 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaLogTypeEnum.java @@ -21,7 +21,7 @@ public enum VisaLogTypeEnum { EDIT_FORM("edit_form", "编辑表单","%s编辑表单","%s编辑表单"), EDIT_AMOUNT("edit_amount", "编辑金额变化","%s编辑金额变化","原值:金额变化:%s;
新值:金额变化:%s;"), UPLOAD_FILE("upload_file", "上传附件","%s上传附件","%s上传%d个附件:%s"), - DELETE_UPLOAD_FILE("delete_upload_file", "删除附件","%s删除附件","%s删除%d个附件:"), + DELETE_UPLOAD_FILE("delete_upload_file", "删除附件","%s删除附件","%s删除%d个附件:%s"), TO_EXECUTE("to_execute", "发起执行","发起执行", "%s发起执行"), TO_APPRROVE("to_apprrove", "发起审批","发起%s审批", "%s发起%s审批"), APPROVED_AGRESS("approved_agress", "审批流:某审批人审批通过","%s审批通过", "%s审批通过"), diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java index 5c1b4362..ccd4d839 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java @@ -5,6 +5,7 @@ import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.nanopart.visa.api.enums.MQEventEnum; import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; @@ -19,9 +20,11 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class ChangeRecordLogEventHandle implements EventHandler, InitializingBean { private final EventConsumer eventConsumer; + private final ChangeRecordLogService changeRecordLogService; @Override public void onEvent(Event event, EventConsumer.Context context) { VisaChangeLogPayload log = event.normalizedData(VisaChangeLogPayload.class); + changeRecordLogService.addLog(log.createRecordLogByPayload()); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java index 3ff07e3c..275f7327 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/producer/VisaChangeLogPayload.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.mq.producer; import cn.axzo.framework.rocketmq.Event; import cn.axzo.nanopart.visa.api.enums.MQEventEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; +import cn.axzo.nanopart.visa.server.utils.Constants; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -30,6 +31,7 @@ public class VisaChangeLogPayload implements Serializable { private String content; private Date operateTime; private Long personId; + private Integer orderBy; public static Event form(ChangeRecordLog log) { VisaChangeLogPayload payload = VisaChangeLogPayload.builder() @@ -38,6 +40,7 @@ public class VisaChangeLogPayload implements Serializable { .title(log.getTitle()) .content(log.getContent()) .personId(log.getCreateBy()) + .orderBy(Constants.APPROVE_ORDER_BY) .build(); return Event.builder() .eventCode(MQEventEnum.VISA_CHANGE_LOG.getEventCode()) @@ -47,4 +50,14 @@ public class VisaChangeLogPayload implements Serializable { .data(payload) .build(); } + + public ChangeRecordLog createRecordLogByPayload() { + return ChangeRecordLog.builder() + .visaId(this.getVisaId()) + .action(this.getAction()) + .title(this.getTitle()) + .content(this.getContent()) + .orderBy(this.getOrderBy()) + .build(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 172765f4..e12c72bc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -192,7 +192,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl [审批到待提报|审批到决策中] userName = this.buildUserName(param.getPersonId(), param.getOuId(), param.getWorkspaceId()); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java index dc8a16c9..ce18aba4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java @@ -31,4 +31,9 @@ public class Constants { */ public static final Integer CHANGE_STATUS_FILE_ORDER_BY = 5; + /** + * 审批相关-排序 + */ + public static final Integer APPROVE_ORDER_BY = 5; + } From b5a38c78c312d4a3c4b6a41001dc395daf3f8e6a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 13:47:17 +0800 Subject: [PATCH 117/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E4=BA=8B?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E9=87=8D=E5=A4=8D=E5=AE=A1=E6=89=B9=EF=BC=8C?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E8=AE=B0=E5=BD=95=E5=AE=A1=E6=89=B9=20ID=20?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 64c5d3d6..6ad6cea0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1195,7 +1195,19 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 13:48:29 +0800 Subject: [PATCH 118/341] feat(REQ-3300) - code format --- .../mq/listener/visa/ChangeRecordLogEventHandle.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java index ccd4d839..c2a90e2c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/visa/ChangeRecordLogEventHandle.java @@ -11,7 +11,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; /** - * TODO + * 添加处理变洽签日志的逻辑 * * @author wangli * @since 2025-02-08 11:18 @@ -21,6 +21,7 @@ import org.springframework.stereotype.Component; public class ChangeRecordLogEventHandle implements EventHandler, InitializingBean { private final EventConsumer eventConsumer; private final ChangeRecordLogService changeRecordLogService; + @Override public void onEvent(Event event, EventConsumer.Context context) { VisaChangeLogPayload log = event.normalizedData(VisaChangeLogPayload.class); @@ -28,7 +29,7 @@ public class ChangeRecordLogEventHandle implements EventHandler, InitializingBea } @Override - public void afterPropertiesSet() throws Exception { - eventConsumer.registerHandler(MQEventEnum.VISA_CHANGE_LOG.getEventCode(), this); + public void afterPropertiesSet() { + eventConsumer.registerHandler(MQEventEnum.VISA_CHANGE_LOG.getEventCode(), this); } } From e5e57973c9bf3be694865bde7bbb833fe0836f67 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Sat, 8 Feb 2025 14:08:00 +0800 Subject: [PATCH 119/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E4=BF=A1=E6=81=AF=E6=9E=84=E5=BB=BA=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 64c5d3d6..b9b63c7b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -835,13 +835,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl nodeUserResp = nodeUserGateway.listOrgNodeUsers(nodeUserReq); if (CollectionUtils.isEmpty(nodeUserResp)) { return Collections.emptyMap(); } // Map - return nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity())); + return nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity(), (v1, v2) -> v1)); } private static VisaChangeInitiatorResp buildInitiatorResp(Map initiatorMap, ChangeRecordConfirm i) { @@ -850,12 +853,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 14:59:26 +0800 Subject: [PATCH 120/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E8=BF=BD=E5=8A=A0=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 5 ++- .../changerecord/ChangeRecordRelationApi.java | 11 ++++- .../request/ChangeRecordAppendAttachReq.java | 39 +++++++++++++++++ .../ChangeRecordRelationController.java | 7 ++++ .../visa/server/rpc/WorkflowGateway.java | 6 ++- .../service/ChangeRecordRelationService.java | 10 +++++ .../impl/ChangeRecordRelationServiceImpl.java | 42 +++++++++++++++++++ 7 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 08c52b37..c845bd4f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -124,16 +124,19 @@ public interface ChangeRecordApi { /** * IM 变洽签群,“重新发起”按钮 + * * @return */ @PostMapping("/api/visa/change/reDecision") ApiResult reDecisionChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); /** - * IM 变洽签全,“发起执行”按钮 + * IM 变洽签群,“发起执行”按钮 + * * @param req * @return */ @PostMapping("/api/visa/change/execute") ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java index 33b2d56e..e6f09f10 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java @@ -1,10 +1,11 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaRelationReq; import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; -import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; @@ -30,4 +31,12 @@ public interface ChangeRecordRelationApi { @PostMapping("/api/visa/relation/im/tips") ApiResult queryImGroupTips(@Validated @RequestBody ImGroupTipsQueryReq req); + /** + * 变洽签追加附件 + * + * @param req + * @return + */ + @PostMapping("/api/visa/relation/attach/append") + ApiResult appendAttachment(@Validated @RequestBody ChangeRecordAppendAttachReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java new file mode 100644 index 00000000..5e82d694 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java @@ -0,0 +1,39 @@ +package cn.axzo.nanopart.visa.api.request; + +import cn.axzo.workflow.common.model.dto.UploadFieldDTO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 变洽签增加附件 + * + * @author wangli + * @since 2025-02-08 14:19 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ChangeRecordAppendAttachReq { + + /** + * 变洽签主键 ID + */ + @NotNull(message = "变洽签主键 ID") + private Long visaId; + + /** + * 新增的附件 + */ + private List attach; + + private Long operatorPersonId; + + private Long operatorOuId; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index 0e1bc9df..c298ba66 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaRelationReq; @@ -45,4 +46,10 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { public ApiResult queryImGroupTips(ImGroupTipsQueryReq req) { return ApiResult.ok(changeRecordRelationService.queryImGroupTips(req)); } + + @Override + public ApiResult appendAttachment(ChangeRecordAppendAttachReq req) { + changeRecordRelationService.appendAttachment(req); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index 587e4025..a97e148e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -1,9 +1,9 @@ package cn.axzo.nanopart.visa.server.rpc; -import cn.axzo.pokonyan.util.RpcUtil; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; +import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.starter.api.WorkflowCoreService; import cn.axzo.workflow.starter.api.WorkflowManageService; import cn.azxo.framework.common.logger.MethodAroundLog; @@ -48,4 +48,8 @@ public class WorkflowGateway { } + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "更新指定流程表单最后一次编辑的内容") + public Boolean updateInstanceFormData(FormVariablesUpdateDTO dto) { + return workflowCoreService.updateInstanceFormVariables(dto); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index bc2d79c3..25577540 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; @@ -33,6 +34,7 @@ public interface ChangeRecordRelationService extends IService findByVisaAndVarName(Long visaId, String varName); boolean deleteByVisaId(Long visaId, List relationTypes); + /** * IM 群聊中,保存 IM 用户操作横条的人 * @@ -43,6 +45,7 @@ public interface ChangeRecordRelationService extends IService existsAttach = findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.ATTACHMENT.name()) + .build()); + AssertUtil.isTrue(existsAttach.size() < 30, "已达到附件数量限制"); + AssertUtil.isTrue(existsAttach.size() + req.getAttach().size() <= 30, "新增的附件数量超过限制"); + + List attach = req.getAttach().stream() + .map(item -> { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(req.getVisaId()); + changeRecordRelation.setVarName(VisaRelationFieldEnum.ATTACHMENT.name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); + changeRecordRelation.setContent(JSON.toJSONString(item)); + changeRecordRelation.setCreateBy(req.getOperatorPersonId()); + changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); + return changeRecordRelation; + }) + .collect(Collectors.toList()); + saveBatch(attach); + + if (Objects.equals(PROCESSING.getStatus(), visa.getApprovalStatus())) { + FormVariablesUpdateDTO formUpdateDto = new FormVariablesUpdateDTO(); + formUpdateDto.setProcessInstanceId(visa.getApprovalId()); + formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, req.getAttach())); + workflowGateway.updateInstanceFormData(formUpdateDto); + } + + } } From d253c15437952c99ff7387b973f4f5f8b3e6b849 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 15:08:11 +0800 Subject: [PATCH 121/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E8=BF=BD=E5=8A=A0=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 5185cd1a..e2d445e7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -298,6 +298,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl existsAttach = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) From d7643685deb760fc477c9ac66687c8980d6d8d1b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Sat, 8 Feb 2025 15:35:56 +0800 Subject: [PATCH 122/341] =?UTF-8?q?feat(REQ-3300):=20nacos=E5=8F=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RefreshableConfiguration.java | 12 ++++++++ .../service/impl/ChangeRecordServiceImpl.java | 29 +++++++------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java index 14be872f..8b051a8a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java @@ -32,4 +32,16 @@ public class RefreshableConfiguration { */ @Value("${visa.im.event.addMember:visaNegotiation}") private String imGroupAddMemberNoticeEventCode; + + /** + * 相关单位确认人人数限制 + */ + @Value("${visa.verifyPersonLimit: 8}") + private Integer verifyPersonLimit; + + /** + * 关联变更单个数限制 + */ + @Value("${visa.verifyVisaLimit: 5}") + private Integer verifyVisaLimit; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 2ef7c126..4c2aaded 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -42,6 +42,7 @@ import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; @@ -92,8 +93,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.groovy.util.Maps; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -136,7 +135,6 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_ */ @Slf4j @Service -@RefreshScope public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { @Resource @@ -168,17 +166,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl nodeUserBriefInfoResps = nodeUserGateway.listOrgNodeUsers(infoListReq); AssertUtil.notEmpty(nodeUserBriefInfoResps, "所有单位确认人均已退场"); cooperateTypeMap.forEach((k, v) -> { - AssertUtil.isTrue(v.size() <= verifyPersonLimit, String.format(k.getDesc() + "确认人,最多支持%d个", verifyPersonLimit)); + AssertUtil.isTrue(v.size() <= refreshableConfiguration.getVerifyPersonLimit(), String.format(k.getDesc() + "确认人,最多支持%d个", refreshableConfiguration.getVerifyPersonLimit())); boolean noExit = v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) .anyMatch(p -> nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p))); AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); @@ -1029,18 +1019,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl relationVisa = listByIds(value); AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); From d656d68a7f4d40b9b96852a25c180c5bb3efd10d Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 15:37:49 +0800 Subject: [PATCH 123/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=8D=A1=E7=89=87=E6=97=B6=E7=9A=84=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/ImGroupsCreatedEventHandler.java | 28 +++++++++++++++---- .../server/rpc/OrganizationalUnitGateway.java | 8 ++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index b7fcb97a..61b178be 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.mq.listener.im; import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; @@ -12,6 +13,7 @@ import cn.axzo.im.center.api.vo.req.GroupGetOwnerRequest; import cn.axzo.im.center.api.vo.req.SendChatMessageRequest; import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse; import cn.axzo.im.center.common.enums.AppTypeEnum; +import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.msg.center.service.dto.PeerPerson; import cn.axzo.msg.center.service.pending.request.CardSendRequest; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; @@ -21,6 +23,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; +import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; @@ -34,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -61,11 +65,13 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe @Resource private RefreshableConfiguration refreshableConfiguration; @Resource - private VisaProfileGateway visaProfileGateway; + private OrganizationalUnitGateway organizationalUnitGateway; @Resource private ChangeRecordService changeRecordService; @Resource private ChangeRecordConfirmService changeRecordConfirmService; + @Resource + private VisaProfileGateway visaProfileGateway; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -100,7 +106,7 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe .visaId(visaId) .bizType(VisaConfirmBizTypeEnum.CREATE) .build()); - AssertUtil.notEmpty(creators, "creators is empty"); + AssertUtil.notEmpty(creators, "visa creator is null"); // 发送卡片 @@ -111,14 +117,24 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe cardRequest.setSender(PeerPerson.create(owner.getPersonId(), owner.getPersonOuId(), ownerWorkspaceId)); cardRequest.setImSenderAccountAppType(AppTypeEnum.CMP); cardRequest.setImReceiveAccounts(imReceiveAccounts); - // TODO + + ChangeRecordConfirm creator = creators.get(0); + OrganizationalUnitVO unitInfo = organizationalUnitGateway.getUnitInfo(creator.getOuId()); + PersonProfileDto profile = visaProfileGateway.getProfile(creator.getPersonId()); + String amountDesc = "不变"; + if (visa.getAmountChange().compareTo(BigDecimal.ZERO) > 0) { + amountDesc = "增加" + visa.getAmountChange().toPlainString() + "元"; + } else if (visa.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { + amountDesc = "减少" + visa.getAmountChange().toPlainString() + "元"; + } + cardRequest.setBizParam(new JSONObject(Maps.of( "topic", group.getName(), "reason", visa.getReason(), - "initiatorName", creators.get(0), - "initiatorUnitName", "", + "initiatorName", profile.getRealName(), + "initiatorUnitName", unitInfo.getName(), "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), - "amountChange", "" + "amountChange", amountDesc ))); msgCenterGateway.sendCardToCroup(cardRequest); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java index ec0cf0a4..37c4cf26 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java @@ -25,6 +25,14 @@ public class OrganizationalUnitGateway { private final OrganizationalUnitApi organizationalUnitApi; + @MethodAroundLog(target = "maokai", source = "nanopart", value = "获取单位信息") + public OrganizationalUnitVO getUnitInfo(Long unitId) { + ApiResult unitResponse = organizationalUnitApi.getById(unitId); + if (unitResponse.isSuccess() && Objects.nonNull(unitResponse.getData())) { + return unitResponse.getData(); + } + return null; + } /** * 获取单位集合 */ From 6087aa526627d9bfa4343200c08a114518bfa2ba Mon Sep 17 00:00:00 2001 From: xudawei Date: Sat, 8 Feb 2025 15:48:45 +0800 Subject: [PATCH 124/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/enums/VisaTypeEnum.java | 20 ++++++++ .../server/domain/ChangeRecordConfirm.java | 8 ++++ .../visa/server/dto/VisaConfirmDto.java | 14 +++++- .../service/ChangeRecordConfirmService.java | 3 +- .../impl/ChangeRecordConfirmServiceImpl.java | 7 ++- .../service/impl/ChangeRecordServiceImpl.java | 48 +++++++++++++++++-- .../nanopart/visa/server/utils/Constants.java | 9 ++++ 7 files changed, 100 insertions(+), 9 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java index 391e02f6..f39711c5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java @@ -1,10 +1,12 @@ package cn.axzo.nanopart.visa.api.enums; +import com.google.common.collect.Sets; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; +import java.util.Set; /** * 签证业务类型 @@ -24,7 +26,25 @@ public enum VisaTypeEnum { private final String code; private final String desc; + + private static final Set changeApprovedSet = Sets.newHashSet(DESIGN_CHANGE, TECHNOLOGY_APPROVED); + private static final Set projectVisaSet = Sets.newHashSet(PROJECT_VISA); + public static VisaTypeEnum valueOfCode(String code) { return Arrays.stream(VisaTypeEnum.values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null); } + + /** + * 设计变更/技术核定 + */ + public static Set fetchChangeApprovedSet() { + return changeApprovedSet; + } + + /** + * 工程签证 + */ + public static Set fetchProjectVisaSet() { + return projectVisaSet; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java index fcac7fb9..7de9642b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordConfirm.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.domain; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import com.alibaba.fastjson.JSONObject; @@ -46,6 +47,13 @@ public class ChangeRecordConfirm extends BaseEntity { @TableField(value = "biz_type") private VisaConfirmBizTypeEnum bizType; + + /** + * 业务类型,CONFIRM:确认;CREATE:创建 + */ + @TableField(value = "visa_type") + private VisaTypeEnum visaType; + /** * 确认人 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java index cea663ca..df73f25c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.dto; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -89,10 +90,20 @@ public class VisaConfirmDto { private Long operator; + /** + * 变更签证类型集合 + */ + private Set visaTypes; + + + /** + * 变更签证类型 + */ + private VisaTypeEnum visaType; /** * 根据DataItem创建Dto */ - public static VisaConfirmDto create(List dataItems) { + public static VisaConfirmDto create(List dataItems, Set visaTypes) { VisaConfirmDto dto = new VisaConfirmDto(); @@ -119,6 +130,7 @@ public class VisaConfirmDto { dto.setNodeIds(nodeIds); } } + dto.setVisaTypes(visaTypes); return dto; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index e2e662ff..3aede13c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; @@ -67,7 +68,7 @@ public interface ChangeRecordConfirmService { * @param currentOuId 当前登录人的单位Id * @return 变更签证visaId集合 */ - Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId); + Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId, Set visaTypes); /** * 获取指定的变洽签所有的确认人 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index c3dadd49..57e08f49 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -11,6 +11,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; @@ -80,6 +81,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl visaConfirmDtos = BeanMapper.copyList(dtoList, ChangeRecordConfirm.class, (s, t) -> { t.setCreateBy(s.getOperator()); t.setUpdateBy(s.getOperator()); + t.setVisaType(s.getVisaType()); }); return this.saveOrUpdateBatch(visaConfirmDtos); } @@ -303,6 +305,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId) { + public Set permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId, Set visaTypes) { MatchDataObjectReq req = new MatchDataObjectReq(); req.setDataObjectCode(dataObjectCode); req.setPersonId(currentPersonId); @@ -325,7 +328,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl dataItems = mergedDataObject.getDataItems(); - List confirmList = this.findByCondition(VisaConfirmDto.create(dataItems)); + List confirmList = this.findByCondition(VisaConfirmDto.create(dataItems, visaTypes)); Set visaIdList = confirmList.stream().map(ChangeRecordConfirm::getVisaId).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(visaIdList)) { return Sets.newHashSet(); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 64c5d3d6..7f51e996 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -67,6 +67,7 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.nanopart.visa.server.service.VisaHelper; +import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; @@ -88,6 +89,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; @@ -103,6 +105,7 @@ import java.math.BigDecimal; import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -752,8 +755,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl page(VisaChangePageSearchReq req) { /*筛查条件校验*/ validSearchCondition(req); + +// Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(req); +// if (CollectionUtils.isEmpty(permissionVisaIdSet)) { +// return PageData.builder() +// .page(Math.toIntExact(req.getPage())) +// .pageSize(Math.toIntExact(req.getPageSize())) +// .totalCount(0L) +// .list(Lists.newArrayList()) +// .build(); +// } /*数据查询*/ - Page page = getFilter(req).page(new Page<>(req.getPage(), req.getPageSize())); + Page page = getFilter(req, Sets.newHashSet()).page(new Page<>(req.getPage(), req.getPageSize())); return PageData.builder() .page(Math.toIntExact(page.getCurrent())) .pageSize(Math.toIntExact(page.getSize())) @@ -788,8 +801,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields = req.getFields(); + +// Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); + List changeRecordList = Lists.newArrayList(); +// if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) { +// /*获取数据*/ +// changeRecordList = getFilter(filter,permissionVisaIdSet).list(); +// } + /*获取数据*/ - List changeRecordList = getFilter(filter).list(); + changeRecordList = getFilter(filter,Sets.newHashSet()).list(); + AssertUtil.isTrue(CollUtil.isNotEmpty(changeRecordList), ""); /*数据转换*/ /*导出文excel并上传至云*/ @@ -801,11 +823,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { + private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter,Set permissionVisaIdSet) { -// Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() -// .in(ChangeRecord::getId, visaList) +// .in(ChangeRecord::getId, permissionVisaIdSet) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) .eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword()) @@ -827,6 +848,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl fetchPermissionVisaIdSet(VisaChangePageSearchReq filter) { + Set changeApproveVisaIdSet = changeRecordConfirmService.permissionVisaData(Constants.CHANGE_APPROVED_DATA_OBJECT, filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId(), VisaTypeEnum.fetchChangeApprovedSet()); + Set projectVisaIdSet = changeRecordConfirmService.permissionVisaData(Constants.PROJECT_VISA_DATA_OBJECT, filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId(), VisaTypeEnum.fetchProjectVisaSet()); + HashSet permissionIdSet = Sets.newHashSet(); + permissionIdSet.addAll(changeApproveVisaIdSet); + permissionIdSet.addAll(projectVisaIdSet); + if (CollectionUtils.isEmpty(permissionIdSet)) { + return Sets.newHashSet(); + } + return permissionIdSet; + } + private Map getPersonBriefInfoMap(Long workspaceId, List initiatorPersonIds) { OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder() @@ -952,6 +988,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 16:31:37 +0800 Subject: [PATCH 125/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20IM=20=E7=BE=A4=E4=B8=AD=20tips=20=E7=9A=84=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 37ca9a19..83d058e6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -60,6 +60,6 @@ public interface VisaConstant { // ***************** IM-Group-Tips ****************** String IM_GROUP_OWNER_TIPS = "群成员共计%d人,收到回复%d人,其中%d人同意,%d人拒绝。"; - String IM_GROUP_PARTICIPATE_TIPS = "由%s提交的,%s,需要你同意,是否同意?"; + String IM_GROUP_PARTICIPATE_TIPS = "由%s提交的,%s,需要你处理,是否同意?"; } From 2ada1a40319531012c965bd5ee13c24f6e706721 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 17:22:08 +0800 Subject: [PATCH 126/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=A8=AA=E6=9D=A1=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index e2d445e7..9ce2639c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -219,6 +219,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl buttons = new ArrayList<>(); if (Boolean.TRUE.equals(req.getIsGroupOwner())) { Map countMap = imGroupParticipate.stream() @@ -289,6 +290,10 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 17:23:43 +0800 Subject: [PATCH 127/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=20todo=20=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ec1e24f3..77913b25 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -662,7 +662,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); - // 传递表单数据 + // 传递表单数据 TODO 传递给流程的表单项数据,还需要调整内容 formVariables.put(FORM_FIELD_NO, req.getNo()); formVariables.put(FORM_FIELD_HAPPEN_TIME, req.getHappenTime()); formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); From a018e89e85de00345b5e29df25b14fd91ee2c22a Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Sat, 8 Feb 2025 17:28:37 +0800 Subject: [PATCH 128/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=88=9B=E5=BB=BA=E4=BA=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0e1097e8..6eba73a3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -18,7 +18,9 @@ import cn.axzo.im.center.api.vo.req.GroupDismissRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.GroupType; +import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; @@ -57,6 +59,7 @@ import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway; @@ -197,6 +200,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl shipRespList = visaCooperateShipGateway.genericQuery(shipQueryReq); + AssertUtil.notEmpty(shipRespList, "操作人所在单位信息不能为空"); + req.setOperatorOuType(shipRespList.get(0).getCooperateType()); + } ChangeRecord changeRecord; List confirmPerson = Lists.newArrayList(); VisaAddLogContext oldContext = null; @@ -499,9 +517,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildConfirmVisaConfirmDto(p, changeRecord, req.getOperatorPersonId())) - .collect(Collectors.toList()); + .collect(Collectors.toList())); } changeRecordConfirmService.addConfirm(confirmPerson); // 保存发生内容及说明 @@ -800,7 +818,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter,Set permissionVisaIdSet) { + private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter, Set permissionVisaIdSet) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() // .in(ChangeRecord::getId, permissionVisaIdSet) From 05580f6aa055f057ecaae05847f787aee9475f6a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 17:36:20 +0800 Subject: [PATCH 129/341] =?UTF-8?q?feat(REQ-3300)=20-=20PRD=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=8C=E6=9B=B4=E9=9A=8F=E8=B0=83=E6=95=B4=20IM=20?= =?UTF-8?q?=E7=BE=A4=E6=B5=AE=E6=9D=A1=E7=9A=84=E5=B1=95=E7=A4=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=B7=B2=E7=BB=8F=E6=96=B0=E5=A2=9E=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/constant/VisaConstant.java | 3 ++- .../impl/ChangeRecordRelationServiceImpl.java | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 83d058e6..b761e8b7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -60,6 +60,7 @@ public interface VisaConstant { // ***************** IM-Group-Tips ****************** String IM_GROUP_OWNER_TIPS = "群成员共计%d人,收到回复%d人,其中%d人同意,%d人拒绝。"; - String IM_GROUP_PARTICIPATE_TIPS = "由%s提交的,%s,需要你处理,是否同意?"; + String IM_GROUP_PARTICIPATE_TIPS = "由 %s 提交的【%s】,需要你处理,是否同意?"; + String IM_GROUP_PARTICIPATE_TIPS_OPERATED = "你已%s由 %s 提交的【%s】"; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 9ce2639c..8cda81ba 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -45,12 +45,14 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS_OPERATED; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING; /** @@ -161,7 +163,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl any = imGroupParticipate.stream() .filter(i -> Objects.equals(i.getCreateBy(), req.getPersonId())) - .anyMatch(i -> Objects.equals(i.getContentExt(), String.valueOf(req.getOuId()))); - if (!operated) { - PersonProfileDto profile = visaProfileGateway.getProfile(record.getCreateBy()); + .filter(i -> Objects.equals(i.getContentExt(), String.valueOf(req.getOuId()))) + .findAny(); + PersonProfileDto profile = visaProfileGateway.getProfile(record.getCreateBy()); + if (any.isPresent()) { + ChangeRecordRelation operation = any.get(); + VisaButtonTypeEnum buttonType = VisaButtonTypeEnum.valueOf(operation.getVarExt()); + resp.setTipsText(String.format(IM_GROUP_PARTICIPATE_TIPS_OPERATED, buttonType.getDesc(), profile.getRealName(), record.getTopic())); + } else { resp.setTipsText(String.format(IM_GROUP_PARTICIPATE_TIPS, profile.getRealName(), record.getTopic())); buttons.add(ImGroupButton.builder() .name(VisaButtonTypeEnum.AGREE.getDesc()) @@ -289,6 +296,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 17:59:14 +0800 Subject: [PATCH 130/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E4=B8=AD=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E9=9C=80=E8=A6=81=E9=87=8D=E6=96=B0=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8D=A1=E7=89=87=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index df170b5c..d90d8fd7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -22,7 +22,10 @@ import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; +import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; +import cn.axzo.msg.center.service.dto.PeerPerson; +import cn.axzo.msg.center.service.pending.request.CardSendRequest; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; @@ -98,6 +101,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.groovy.util.Maps; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -131,6 +135,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; @@ -202,6 +207,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { + amountDesc = "增加" + visa.getAmountChange().toPlainString() + "元"; + } else if (visa.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { + amountDesc = "减少" + visa.getAmountChange().toPlainString() + "元"; + } + + cardRequest.setBizParam(new JSONObject(Maps.of( + "topic", visa.getTopic(), + "reason", visa.getReason(), + "initiatorName", profile.getRealName(), + "initiatorUnitName", unitInfo.getName(), + "visaType", visa.getType().getDesc(), + "amountChange", amountDesc + ))); + msgCenterGateway.sendCardToCroup(cardRequest); } @Override From a7dfbc31cd1aa3a28e9756bbcac1f2df4e85d3d5 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 8 Feb 2025 18:00:44 +0800 Subject: [PATCH 131/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20IM=20=E7=BE=A4=E4=B8=AD=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E9=9C=80=E8=A6=81=E9=87=8D=E6=96=B0=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8D=A1=E7=89=87=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index d90d8fd7..62946086 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1284,6 +1284,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 18:44:07 +0800 Subject: [PATCH 132/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 83 +++++++++++++++---- 1 file changed, 68 insertions(+), 15 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index df170b5c..b5966a79 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; @@ -53,6 +54,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.server.dto.VisaExportDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; @@ -104,6 +106,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -165,8 +168,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields = req.getFields(); + // 默认导出全部字段 + if (CollectionUtils.isEmpty(fields)) { + fields = Arrays.asList(VisaChangeFieldEnum.values()); + } // Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); List changeRecordList = Lists.newArrayList(); @@ -819,16 +827,55 @@ public class ChangeRecordServiceImpl extends ServiceImpl projectInfoMapById; + Map initiatorMap; + if (fields.contains(VisaChangeFieldEnum.RELATION_PROJECT)) { + List projectIdList = changeRecordList.stream().map(ChangeRecord::getRelationProject).collect(Collectors.toList()); + projectInfoMapById = getProjectInfoMapById(projectIdList); + } else { + projectInfoMapById = Collections.emptyMap(); + } + // 发起人 + if (fields.contains(VisaChangeFieldEnum.CREATE_BY)) { + List initiatorPersonIdList = changeRecordList.stream().map(ChangeRecord::getCreateBy).distinct().collect(Collectors.toList()); + // Map + initiatorMap = getPersonBriefInfoMap(changeRecordList.get(0).getRelationWorkspaceId(), initiatorPersonIdList); + } else { + initiatorMap = Collections.emptyMap(); + } + + List data = changeRecordList.stream() + .map(item -> VisaExportDto.builder() + .no(item.getNo()) + .type(item.getType().getDesc()) + .status(item.getStatus().getDesc()) + .topic(item.getTopic()) + .relationProject(CollUtil.isNotEmpty(projectInfoMapById) ? projectInfoMapById.getOrDefault(item.getRelationProject(), "") : "") + .happenTime(item.getHappenTime()) + .amountChange(item.getAmountChange()) + .approvalCompleteTime(Objects.equals(VisaStatusEnum.COMPLETED, item.getStatus()) ? item.getApprovalCompleteTime() : null) + .initiator(CollUtil.isNotEmpty(initiatorMap) ? initiatorMap.getOrDefault(item.getCreateBy(), OrgNodeUserBriefInfoResp.builder().build()).getRealName() : "") + .build()) + .collect(Collectors.toList()); + /*导出文excel并上传至云*/ String scene = "visa"; String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss")); - SheetWrapper sheetWrapper = new SheetWrapper(); - sheetWrapper.setTitle("变更签证单"); -// sheetWrapper -// reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, ); + String sheetName = "变更签证表"; + String headerName = "变更签证单"; + SheetWrapper sheetWrapper = SheetWrapper.builder() + .title(headerName) + .sheetName(sheetName) + .includeColumnFieldNames(fields.stream() + .map(VisaChangeFieldEnum::getDesc) + .collect(Collectors.toList())) + .sourceData(data) + .build(); + reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, sheetWrapper); } private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter, Set permissionVisaIdSet) { @@ -918,10 +965,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl projectIdList = records.stream().map(ChangeRecord::getRelationProject).distinct().collect(Collectors.toList()); - List projectBriefByIds = visaProjectApiGateway.getProjectBriefByIds(projectIdList); - AssertUtil.notEmpty(projectBriefByIds, "工程信息获取失败"); - // Map - Map projectIdNameMap = projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + Map projectIdNameMap = getProjectInfoMapById(projectIdList); /*获取变更单发起人*/ List visaIdList = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); @@ -931,7 +975,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorPersonIdList = visaIdInitiatorMap.values().stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList()); - // Map + // Map Map initiatorMap = getPersonBriefInfoMap(records.get(0).getRelationWorkspaceId(), initiatorPersonIdList); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); @@ -966,6 +1010,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl getProjectInfoMapById(List projectIdList) { + List projectBriefByIds = visaProjectApiGateway.getProjectBriefByIds(projectIdList); + if (CollectionUtils.isEmpty(projectBriefByIds)) { + return Collections.emptyMap(); + } + // Map + return projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + } + private Map getInitiatorMapByVisaId(List visaIdList) { VisaConfirmDto visaConfirmDto = VisaConfirmDto.builder() .bizType(VisaConfirmBizTypeEnum.CREATE) @@ -980,17 +1033,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 10:30:53 +0800 Subject: [PATCH 133/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BAsdk?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E5=85=A5=E5=AE=B9=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/nanopart/NanopartApplication.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java index 2e36edb8..715514b3 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java @@ -1,14 +1,15 @@ package cn.axzo.nanopart; -import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.nanopart.config.RocketMQEventConfiguration; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.Import; +@ComponentScan(value = {"cn.axzo.nanopart","cn.axzo.basics"}) @MapperScan(value = {"cn.axzo.**.mapper"}) @SpringBootApplication @EnableFeignClients(basePackages = { From a44561b38b5571e5dbe664ea630a1d4d12ac61fb Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 10 Feb 2025 11:05:17 +0800 Subject: [PATCH 134/341] =?UTF-8?q?feat(REQ-3300):=20=E4=BD=9C=E5=BA=9F?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=EF=BC=8C=E5=8F=96=E6=B6=88=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E5=92=8C=E5=9B=BE=E7=BA=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChangeRecordButtonOperationReq.java | 1 - .../service/ChangeRecordRelationService.java | 2 ++ .../impl/ChangeRecordRelationServiceImpl.java | 7 +++++ .../service/impl/ChangeRecordServiceImpl.java | 27 +++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java index a590c33f..6e0e219b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordButtonOperationReq.java @@ -28,7 +28,6 @@ public class ChangeRecordButtonOperationReq { /** * IM 群 ID */ - @NotNull(message = "IM 群 ID 不能为空") private Long imGroupId; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index 25577540..b0cb25c9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -65,4 +65,6 @@ public interface ChangeRecordRelationService extends IService ids); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 8cda81ba..6c648864 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -344,4 +344,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl ids) { + return lambdaUpdate().in(ChangeRecordRelation::getId, ids) + .setSql("is_delete = id") + .update(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1705f4fc..f068286b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1279,6 +1279,33 @@ public class ChangeRecordServiceImpl extends ServiceImpl contentDescription = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.CONTENT_DESCRIPTION.name()); + if (CollectionUtils.isNotEmpty(contentDescription)) { + List annotation = contentDescription.stream() + .filter(item -> { + try { + VisaChangeTempCreateReq.ChangeContextAndDescription parseDescription = JSONObject.parseObject(item.getContent(), VisaChangeTempCreateReq.ChangeContextAndDescription.class); + return Objects.nonNull(parseDescription) && Objects.equals(parseDescription.getType(), 2); + } catch (Exception e) { + throw new ServiceException("发生内容说明解析失败"); + } + }) + .collect(Collectors.toList()); + return changeRecordRelationService.deleteByIds(annotation.stream().map(ChangeRecordRelation::getId).collect(Collectors.toList())); + } + return true; } private void validOperationPermission(Long visaId, Long personId, Long ouId, Long workspaceId) { From b40f421abbb3394d12d438a7e6df806a6e7b42aa Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 10 Feb 2025 11:35:13 +0800 Subject: [PATCH 135/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85-=E4=B8=93=E4=B8=9A=E4=B8=8E?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/response/VisaDetailByIdResponse.java | 72 +++++++++++++--- .../visa/server/dto/VisaConfirmDto.java | 25 +++++- .../rpc/ApolloConstructionAreaGateway.java | 21 +++++ .../visa/server/service/VisaHelper.java | 86 +++++++++++++++++++ .../impl/ChangeRecordConfirmServiceImpl.java | 1 + .../service/impl/ChangeRecordServiceImpl.java | 59 +------------ .../nanopart/visa/server/utils/Constants.java | 5 ++ 7 files changed, 200 insertions(+), 69 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 61a523bf..11fed6b8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -5,17 +5,22 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.Date; import java.util.List; +import java.util.Objects; import java.util.Set; +import java.util.stream.Collectors; /** * @author xudawei @@ -114,6 +119,11 @@ public class VisaDetailByIdResponse { */ private List relationAreaList; + /** + * 区域集合名称 + */ + private String relationAreaName; + /** * 提出时间 */ @@ -130,6 +140,11 @@ public class VisaDetailByIdResponse { */ private List relationProfessionalList; + /** + * 专业集合名称 + */ + private String relationProfessionalName; + /** * 相关单位及人员 */ @@ -291,21 +306,40 @@ public class VisaDetailByIdResponse { @NoArgsConstructor @AllArgsConstructor public static class RelationProfessionalDetail { - /** - * id - */ - private Long id; - /** * code */ private String code; /** - * 名称 + * 构建专业集合-对象集合 */ - private String name; + public static List buildProfessionWithObject(JSONArray relationProfessional) { + if (CollectionUtils.isEmpty(relationProfessional)) { + return Lists.newArrayList(); + } + List professionalList = relationProfessional.toJavaList(VisaDetailByIdResponse.RelationProfessionalDetail.class); + + if (CollectionUtils.isEmpty(professionalList)) { + return Lists.newArrayList(); + } + return professionalList; + } + + /** + * 构建专业集合-code集合 + */ + public static Set buildProfessionWithCode(JSONArray relationProfessional) { + List relationProfessionalDetails = RelationProfessionalDetail.buildProfessionWithObject(relationProfessional); + if (CollectionUtils.isEmpty(relationProfessionalDetails)) { + return Sets.newHashSet(); + } + + return relationProfessionalDetails.stream() + .filter(item -> Objects.nonNull(item) && StringUtils.isNotBlank(item.getCode())) + .map(RelationProfessionalDetail::getCode).collect(Collectors.toSet()); + } } @@ -331,10 +365,26 @@ public class VisaDetailByIdResponse { */ private Long id; - /** - * 名称 - */ - private String name; + + public static List buildAreaWithObject(JSONArray relationArea) { + if (CollectionUtils.isEmpty(relationArea)) { + return Lists.newArrayList(); + } + List relationAreaList = relationArea.toJavaList(VisaDetailByIdResponse.RelationAreaDetail.class); + if (CollectionUtils.isEmpty(relationAreaList)) { + return Lists.newArrayList(); + } + return relationAreaList; + } + + public static List buildAreaWithId(JSONArray relationArea) { + List areaDetailList = RelationAreaDetail.buildAreaWithObject(relationArea); + + if (CollectionUtils.isEmpty(areaDetailList)) { + return Lists.newArrayList(); + } + return areaDetailList.stream().map(VisaDetailByIdResponse.RelationAreaDetail::getId).collect(Collectors.toList()); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java index df73f25c..23edf2f1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaConfirmDto.java @@ -13,6 +13,7 @@ import org.apache.commons.collections.CollectionUtils; import java.util.Collection; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -79,6 +80,11 @@ public class VisaConfirmDto { */ private Long projectId; + /** + * 确认工程集合 + */ + private Collection projectIds; + /** * 确认节点 */ @@ -115,20 +121,33 @@ public class VisaConfirmDto { dto.setPersonIds(personIds); } - Collection ouIds = dataItems.stream().map(item -> item.getOuId()).collect(Collectors.toSet()); + Collection ouIds = dataItems.stream() + .filter(item -> Objects.nonNull(item.getOuId())) + .map(item -> item.getOuId()).collect(Collectors.toSet()); if (CollectionUtils.isNotEmpty(ouIds)) { dto.setOuIds(ouIds); } - Collection workspaceIds = dataItems.stream().map(item -> item.getWorkspaceId()).collect(Collectors.toSet()); + Collection workspaceIds = dataItems.stream() + .filter(item -> Objects.nonNull(item.getWorkspaceId())) + .map(item -> item.getWorkspaceId()).collect(Collectors.toSet()); if (CollectionUtils.isNotEmpty(workspaceIds)) { dto.setWorkspaceIds(workspaceIds); } - Set nodeIds = dataItems.stream().map(item -> item.getNodeId()).collect(Collectors.toSet()); + Set nodeIds = dataItems.stream() + .filter(item -> Objects.nonNull(item.getNodeId())) + .map(item -> item.getNodeId()).collect(Collectors.toSet()); if (CollectionUtils.isNotEmpty(nodeIds)) { dto.setNodeIds(nodeIds); } + + Collection projectIds = dataItems.stream() + .filter(item -> CollectionUtils.isNotEmpty(item.getProjectIds())) + .flatMap(item -> item.getProjectIds().stream()).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(projectIds)) { + dto.setProjectIds(projectIds); + } } dto.setVisaTypes(visaTypes); return dto; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java index c42f5d4d..d3fc01ba 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java @@ -6,6 +6,8 @@ import cn.axzo.apollo.core.web.Result; import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Service; import java.util.List; @@ -23,6 +25,9 @@ public class ApolloConstructionAreaGateway { public List getAllConstructionAreaByIds(List areaIds) { try { + if (CollectionUtils.isEmpty(areaIds)) { + return Lists.newArrayList(); + } log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,params:{}", JSON.toJSONString(areaIds)); Result> result = apolloConstructionAreaApi.getAllConstructionAreaByIds(areaIds); log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,result:{}", JSON.toJSONString(result)); @@ -34,4 +39,20 @@ public class ApolloConstructionAreaGateway { } + public String generateAreaFullNameByAreaIds(List areaIds) { + try { + if (CollectionUtils.isEmpty(areaIds)) { + return ""; + } + log.info("ApolloConstructionAreaGateway generateAreaFullNameByAreaIds,params:{}", JSON.toJSONString(areaIds)); + Result result = apolloConstructionAreaApi.generateAreaFullNameByAreaIds(areaIds); + log.info("ApolloConstructionAreaGateway generateAreaFullNameByAreaIds,result:{}", JSON.toJSONString(result)); + return result.getData(); + } catch (Exception e) { + log.warn("ApolloConstructionAreaGateway generateAreaFullNameByAreaIds exception", e); + throw e; + } + + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 56fa8151..42906bff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -2,14 +2,27 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; +import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; +import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.nanopart.visa.server.utils.Constants; +import cn.axzo.thor.client.model.DrawingMajorResp; import com.alibaba.fastjson.JSONArray; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * @author xudawei @@ -26,6 +39,12 @@ public class VisaHelper { @Resource private ChangeRecordService changeRecordService; + @Resource + private DrawingMajorGateway drawingMajorGateway; + + @Resource + private ApolloConstructionAreaGateway apolloConstructionAreaGateway; + /** * 状态更新与添加日志,此时新增记录时状态没有维护 */ @@ -58,4 +77,71 @@ public class VisaHelper { } + /** + * 构建详情的专业回显 + */ + public String buildProfessionalName(Long projectId, JSONArray professionals) { + if (Objects.isNull(projectId) || CollectionUtils.isEmpty(professionals)) { + return ""; + } + Set majorCodes = VisaDetailByIdResponse.RelationProfessionalDetail.buildProfessionWithCode(professionals); + if (CollectionUtils.isEmpty(majorCodes)) { + return ""; + } + List majorRespList = drawingMajorGateway.list(projectId, majorCodes, true); + + // 构建专业集合 key:叶子结点code,value:父节点+子节点的名字 + Map codeNameMap = this.buildProfessionalLeafName(majorRespList); + + if (CollectionUtils.isEmpty(majorCodes)) { + return ""; + } + + return codeNameMap.values().stream().filter(item -> StringUtils.hasText(item)).collect(Collectors.joining(",")); + } + + /** + * 构建区域名称 + */ + public String buildAreaName(JSONArray areas) { + if (CollectionUtils.isEmpty(areas)) { + return ""; + } + return apolloConstructionAreaGateway.generateAreaFullNameByAreaIds(VisaDetailByIdResponse.RelationAreaDetail.buildAreaWithId(areas)); + } + + /** + * @param list 专业集合 + * @return key:叶子结点code,value:父节点+子节点的名字 + */ + private Map buildProfessionalLeafName(List list) { + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + + Map codeNameMap = new HashMap<>(); + for (DrawingMajorResp resp : list) { + recursionProfessional(resp, resp.getName(), codeNameMap); + } + return codeNameMap; + } + + /** + * 递归专业 + * codeNameMap,key:叶子结点code,value:父节点+子节点的名字 + */ + private void recursionProfessional(DrawingMajorResp drawingMajorResp, String name, Map codeNameMap) { + if (Objects.isNull(drawingMajorResp) || CollectionUtils.isEmpty(drawingMajorResp.getChildren())) { + return; + } + for (DrawingMajorResp resp : drawingMajorResp.getChildren()) { + + if (CollectionUtils.isNotEmpty(resp.getChildren())) { + recursionProfessional(resp, name + Constants.SPLIT_TREE_NODE_CHAT + resp.getName(), codeNameMap); + } else { + codeNameMap.put(resp.getCode(), name + Constants.SPLIT_TREE_NODE_CHAT + resp.getName()); + } + } + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 57e08f49..2fc034b7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -303,6 +303,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildArea(JSONArray relationArea) { - if (CollectionUtils.isEmpty(relationArea)) { - return Lists.newArrayList(); - } - List relationAreaList = relationArea.toJavaList(VisaDetailByIdResponse.RelationArea.class); - if (CollectionUtils.isEmpty(relationAreaList)) { - return Lists.newArrayList(); - } - List areaIds = relationAreaList.stream() - .filter(item -> Objects.nonNull(item.getId())) - .map(VisaDetailByIdResponse.RelationArea::getId).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(areaIds)) { - return Lists.newArrayList(); - } - List list = apolloConstructionAreaGateway.getAllConstructionAreaByIds(areaIds); - if (CollectionUtils.isEmpty(list)) { - return Lists.newArrayList(); - } - return list.stream().map(item -> VisaDetailByIdResponse.RelationAreaDetail.builder() - .id(item.getId()) - .name(item.getName()).build()) - .collect(Collectors.toList()); - } - /** - * 构建专业集合 - */ - private List buildProfession(Long projectId, JSONArray relationProfessional) { - if (Objects.isNull(projectId) || CollectionUtils.isEmpty(relationProfessional)) { - return Lists.newArrayList(); - } - List professionalList = relationProfessional.toJavaList(VisaDetailByIdResponse.RelationProfessional.class); - if (CollectionUtils.isEmpty(professionalList)) { - return Lists.newArrayList(); - } - Set majorCodes = professionalList.stream() - .filter(item -> StringUtils.hasText(item.getCode())) - .map(VisaDetailByIdResponse.RelationProfessional::getCode).collect(Collectors.toSet()); - if (CollectionUtils.isEmpty(majorCodes)) { - return Lists.newArrayList(); - } - - List majorRespList = drawingMajorGateway.list(projectId, majorCodes, true); - if (CollectionUtils.isEmpty(majorCodes)) { - return Lists.newArrayList(); - } - return majorRespList.stream() - .map(item -> VisaDetailByIdResponse.RelationProfessionalDetail.builder().id(item.getId()).code(item.getCode()).name(item.getName()).build()) - .collect(Collectors.toList()); - } /** * 通过变更签证Id获取Entity diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java index 89862049..a77727a6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java @@ -45,4 +45,9 @@ public class Constants { * 工程签证数据权限的code */ public static final String PROJECT_VISA_DATA_OBJECT = "project_visa"; + + /** + * 工程签证数据权限的code + */ + public static final String SPLIT_TREE_NODE_CHAT = "-"; } From cdc830ec960bcbf90ac715acb62fcdb46ca89d40 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 10 Feb 2025 14:30:27 +0800 Subject: [PATCH 136/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E5=AE=A1=E6=89=B9=E4=BF=A1=E6=81=AF=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/response/VisaRelationResp.java | 2 +- .../ChangeRecordRelationController.java | 28 ++++++++++++++----- .../impl/ChangeRecordRelationServiceImpl.java | 6 ++-- .../service/impl/ChangeRecordServiceImpl.java | 10 +++++-- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java index 93d1d2ef..4a03db07 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaRelationResp.java @@ -48,7 +48,7 @@ public class VisaRelationResp { /** * 数据值的一些额外描述 */ - private String content_ext; + private String contentExt; /** * 创建时间 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index c298ba66..a9cdd415 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -2,20 +2,23 @@ package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaRelationReq; import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; import cn.axzo.nanopart.visa.api.response.VisaRelationResp; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; -import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * @author xudawei @@ -27,14 +30,25 @@ import java.util.List; @RequiredArgsConstructor public class ChangeRecordRelationController implements ChangeRecordRelationApi { - @Autowired - private ChangeRecordService changeRecordService; - @Autowired - private ChangeRecordRelationService changeRecordRelationService; + private final ChangeRecordRelationService changeRecordRelationService; @Override public ApiResult> listByVisaId(VisaRelationReq req) { - return null; + return ApiResult.ok(changeRecordRelationService.findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.PROCESS_INSTANCE.name()) + .build()) + .stream().sorted(Comparator.comparing(ChangeRecordRelation::getCreateAt)) + .map(i -> VisaRelationResp.builder() + .id(i.getId()) + .visaId(String.valueOf(i.getVisaId())) + .varName(i.getVarName()) + .varExt(i.getVarExt()) + .varType(i.getVarType()) + .content(i.getContent()) + .contentExt(i.getContentExt()) + .createAt(i.getCreateAt()) + .build()).collect(Collectors.toList())); } @Override diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 6c648864..78718618 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -162,7 +162,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl byCondition = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) - .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode()) + .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.name()) .content(String.valueOf(req.getOperatorOuId())) .contentExt(NumberUtil.isPositiveNumber(req.getOperatorWorkspaceId()) ? String.valueOf(req.getOperatorWorkspaceId()) : null) .createBy(req.getOperatorPersonId()) @@ -219,7 +219,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl imGroupParticipate = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) - .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode()) + .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.name()) .build()); List buttons = new ArrayList<>(); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0940df41..b4ab6192 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -702,17 +702,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.TASK_ORDER.getCode(), null); + List taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.TASK.name(), null); if (CollectionUtils.isNotEmpty(taskOrderIds)) { formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrderIds); } - List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.RECTIFICATION_ORDER.getCode(), null); + List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.RECTIFY.name(), null); if (CollectionUtils.isNotEmpty(rectificationOrderIds)) { formVariables.put(FORM_FIELD_RELATION_RECTIFICATION_ORDER, rectificationOrderIds); } - List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaRelationFieldEnum.VISA_ORDER.getCode(), null); + List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); if (CollectionUtils.isNotEmpty(visaOrderIds)) { formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderIds); } @@ -1331,8 +1331,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 14:31:57 +0800 Subject: [PATCH 137/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index b4ab6192..875d9b55 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1203,7 +1203,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl VisaDetailByIdResponse.RelationAreaDetail.builder() .id(item.getId()) - .name(item.getName()).build()) + .build()) .collect(Collectors.toList()); } @@ -1232,7 +1232,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl VisaDetailByIdResponse.RelationProfessionalDetail.builder().id(item.getId()).code(item.getCode()).name(item.getName()).build()) + .map(item -> VisaDetailByIdResponse.RelationProfessionalDetail.builder().code(item.getCode()).build()) .collect(Collectors.toList()); } From f85ea2e40461dc3b650ce2bc71d5c4fab0b564b2 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 10 Feb 2025 14:37:04 +0800 Subject: [PATCH 138/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E7=BE=A4=E8=81=8A=E5=93=8D=E5=BA=94=E5=AF=B9=E8=B1=A1=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 3 +- .../response/VisaChangeDiscussCreateResp.java | 33 +++++++++++++++++++ .../controller/ChangeRecordController.java | 4 +-- .../server/service/ChangeRecordService.java | 3 +- .../service/impl/ChangeRecordServiceImpl.java | 9 +++-- 5 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeDiscussCreateResp.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index c845bd4f..d1ed0932 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -13,6 +13,7 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -48,7 +49,7 @@ public interface ChangeRecordApi { * @return 签证变更记录id */ @PostMapping("/api/visa/change/discussCreate") - ApiResult discussCreateVisaChangeRecord(@RequestBody VisaChangeDiscussCreateReq req); + ApiResult discussCreateVisaChangeRecord(@RequestBody VisaChangeDiscussCreateReq req); /** * 发起变更签证审批 diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeDiscussCreateResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeDiscussCreateResp.java new file mode 100644 index 00000000..bb0f3633 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangeDiscussCreateResp.java @@ -0,0 +1,33 @@ +package cn.axzo.nanopart.visa.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/10 14:17 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaChangeDiscussCreateResp { + + /** + * 变洽签单据id + */ + private Long visaId; + + /** + * 群聊id + */ + private Long imGroupId; + + /** + * 群聊名称 + */ + private String imGroupName; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 9f9940a1..25517b1a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -16,12 +16,12 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; -import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -53,7 +53,7 @@ public class ChangeRecordController implements ChangeRecordApi { } @Override - public ApiResult discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { + public ApiResult discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { return ApiResult.ok(changeRecordService.discussCreateVisaChangeRecord(req)); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index 0587735c..122994b3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -11,6 +11,7 @@ import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -66,7 +67,7 @@ public interface ChangeRecordService extends IService { * @param req 表单数据 * @return 变更签证Id */ - Long discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req); + VisaChangeDiscussCreateResp discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req); /** * 创建审批变更签证 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 875d9b55..c570a998 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -45,6 +45,7 @@ import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -580,7 +581,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 14:47:54 +0800 Subject: [PATCH 139/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85-=E5=8A=A0=E4=B8=8A=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B:=E5=8C=BA=E5=9F=9F/=E4=B8=93=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 35 ++-------- .../api/response/VisaDetailByIdResponse.java | 10 +++ .../visa/server/domain/ChangeRecord.java | 33 ++-------- .../visa/server/rpc/DataObjectApiGateway.java | 37 +++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 64 ++----------------- 5 files changed, 55 insertions(+), 124 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 210ae2d3..6d62f980 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -73,26 +73,10 @@ public class VisaChangeTempCreateReq { /** * 区域集合 * 示例: - *
+     *  
      * [
-     *     {
-     *         "areaId": 249556,
-     *         "childrenAreaList": [
-     *             {
-     *                 "areaId": 249739,
-     *                 "childrenAreaList": []
-     *             }
-     *         ]
-     *     },
-     *     {
-     *         "areaId": 249556,
-     *         "childrenAreaList": [
-     *             {
-     *                 "areaId": 249739,
-     *                 "childrenAreaList": []
-     *             }
-     *         ]
-     *     }
+     *     {"areaId": 249556},
+     *     {"areaId": 249555}
      * ]
      *  
*/ @@ -109,17 +93,8 @@ public class VisaChangeTempCreateReq { * 示例: *
      * [
-     *     {
-     *         "id": 9658,
-     *         "code": "JIANZHU_CUOSHIBIAO",
-     *         "children": [
-     *             {
-     *                 "id": 9659,
-     *                 "code": "JIANZHU_CUOSHIBIAOSHINEIWAIZHUANGXIUGOUZAOZUOFABIAO",
-     *                 "children": []
-     *             }
-     *         ]
-     *     }
+     *     {"code":"code1"},
+     *     {"code":"code2"},
      * ]
      * 
*/ diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 11fed6b8..bbed8c2d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -191,6 +191,16 @@ public class VisaDetailByIdResponse { */ private VisaStatusEnum status; + /** + * 最终审批ID + */ + private String approvalId; + + /** + * 最终审批状态 + */ + private String approvalStatus; + @Data @Builder @NoArgsConstructor diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 7628c57f..4004977d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -61,24 +61,8 @@ public class ChangeRecord extends BaseEntity { * 示例: *
      * [
-     *     {
-     *         "areaId": 249556,
-     *         "childrenAreaList": [
-     *             {
-     *                 "areaId": 249739,
-     *                 "childrenAreaList": []
-     *             }
-     *         ]
-     *     },
-     *     {
-     *         "areaId": 249556,
-     *         "childrenAreaList": [
-     *             {
-     *                 "areaId": 249739,
-     *                 "childrenAreaList": []
-     *             }
-     *         ]
-     *     }
+     *     {"areaId": 249556},
+     *     {"areaId": 249555}
      * ]
      *  
*/ @@ -90,17 +74,8 @@ public class ChangeRecord extends BaseEntity { * 示例: *
      * [
-     *     {
-     *         "id": 9658,
-     *         "code": "JIANZHU_CUOSHIBIAO",
-     *         "children": [
-     *             {
-     *                 "id": 9659,
-     *                 "code": "JIANZHU_CUOSHIBIAOSHINEIWAIZHUANGXIUGOUZAOZUOFABIAO",
-     *                 "children": []
-     *             }
-     *         ]
-     *     }
+     *     {"code":"code1"},
+     *     {"code":"code2"},
      * ]
      * 
*/ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java index 3e9ff8ed..6b183872 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java @@ -1,10 +1,10 @@ package cn.axzo.nanopart.visa.server.rpc; -import cn.axzo.foundation.result.ApiResult; import cn.axzo.karma.client.feign.tyr.DataObjectApi; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; -import com.alibaba.fastjson.JSON; +import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -27,14 +27,39 @@ public class DataObjectApiGateway { return MatchDataObjectResp.builder().build(); } try { - log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req)); - ApiResult match = dataObjectApi.match(req); - log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); - return match.getData(); +// log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req)); +// ApiResult match = dataObjectApi.match(req); +// log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); +// return match.getData(); + return mockDataObject(); } catch (Exception e) { log.warn("DataObjectApiGateway match exception", e); throw e; } } + /** + * mock数据 + */ + private MatchDataObjectResp mockDataObject() { + MergeMatchDataResp.DataItem dt1 = MergeMatchDataResp.DataItem.builder() + .personIds(Lists.newArrayList(9000398292L,89511L)) + .ouId(6122L) + .workspaceId(399L) + .nodeId(10345L) + .projectIds(Lists.newArrayList(424L)) + .build(); + + MergeMatchDataResp.DataItem dt2 = MergeMatchDataResp.DataItem.builder() + .personIds(Lists.newArrayList(9000506L,89636L)) + .ouId(6158L) + .workspaceId(399L) + .nodeId(10345L) + .projectIds(Lists.newArrayList(763L)) + .build(); + + MergeMatchDataResp matchDataResp = MergeMatchDataResp.builder().dataItems(Lists.newArrayList(dt1, dt2)).build(); + return MatchDataObjectResp.builder().mergedDataObject(matchDataResp).build(); + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0940df41..2e2b80a3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,6 +1,5 @@ package cn.axzo.nanopart.visa.server.service.impl; -import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; @@ -80,7 +79,6 @@ import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; -import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; @@ -91,7 +89,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -385,10 +382,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildArea(JSONArray relationArea) { - if (CollectionUtils.isEmpty(relationArea)) { - return Lists.newArrayList(); - } - List relationAreaList = relationArea.toJavaList(VisaDetailByIdResponse.RelationArea.class); - if (CollectionUtils.isEmpty(relationAreaList)) { - return Lists.newArrayList(); - } - List areaIds = relationAreaList.stream() - .filter(item -> Objects.nonNull(item.getId())) - .map(VisaDetailByIdResponse.RelationArea::getId).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(areaIds)) { - return Lists.newArrayList(); - } - List list = apolloConstructionAreaGateway.getAllConstructionAreaByIds(areaIds); - if (CollectionUtils.isEmpty(list)) { - return Lists.newArrayList(); - } - return list.stream().map(item -> VisaDetailByIdResponse.RelationAreaDetail.builder() - .id(item.getId()) - .name(item.getName()).build()) - .collect(Collectors.toList()); - } - - /** - * 构建专业集合 - */ - private List buildProfession(Long projectId, JSONArray relationProfessional) { - - if (Objects.isNull(projectId) || CollectionUtils.isEmpty(relationProfessional)) { - return Lists.newArrayList(); - } - List professionalList = relationProfessional.toJavaList(VisaDetailByIdResponse.RelationProfessional.class); - - if (CollectionUtils.isEmpty(professionalList)) { - return Lists.newArrayList(); - } - Set majorCodes = professionalList.stream() - .filter(item -> StringUtils.hasText(item.getCode())) - .map(VisaDetailByIdResponse.RelationProfessional::getCode).collect(Collectors.toSet()); - if (CollectionUtils.isEmpty(majorCodes)) { - return Lists.newArrayList(); - } - - List majorRespList = drawingMajorGateway.list(projectId, majorCodes, true); - if (CollectionUtils.isEmpty(majorCodes)) { - return Lists.newArrayList(); - } - return majorRespList.stream() - .map(item -> VisaDetailByIdResponse.RelationProfessionalDetail.builder().id(item.getId()).code(item.getCode()).name(item.getName()).build()) - .collect(Collectors.toList()); - } - /** * 通过变更签证Id获取Entity * From f1f77e2d2493b908eed54de620160ebb34db9da7 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 10 Feb 2025 15:00:47 +0800 Subject: [PATCH 140/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f303df27..bc81456f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,6 +1,5 @@ package cn.axzo.nanopart.visa.server.service.impl; -import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; @@ -81,7 +80,6 @@ import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; -import cn.axzo.thor.client.model.DrawingMajorResp; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; @@ -92,7 +90,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -111,6 +108,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -690,14 +688,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); - // 传递表单数据 TODO 传递给流程的表单项数据,还需要调整内容 + // 传递表单数据 formVariables.put(FORM_FIELD_NO, req.getNo()); - formVariables.put(FORM_FIELD_HAPPEN_TIME, req.getHappenTime()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + formVariables.put(FORM_FIELD_HAPPEN_TIME, sdf.format(req.getHappenTime())); formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject()); - formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, req.getRelationProfessional()); + formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, visaHelper.buildProfessionalName(req.getRelationProject(), req.getRelationProfessional())); formVariables.put(FORM_FIELD_REASON, req.getReason()); - formVariables.put(FORM_FIELD_RELATION_AREA, req.getRelationArea()); + formVariables.put(FORM_FIELD_RELATION_AREA, visaHelper.buildAreaName(req.getRelationArea())); formVariables.put(FORM_FIELD_CONTEXT_DESCRIPTION, req.getChangeContextAndDescriptionList()); String amountDesc = "不变"; if (req.getAmountChange().compareTo(BigDecimal.ZERO) > 0) { From 8fb3e221e5d19b01c967bbebc2862aa67c6cb57b Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 10 Feb 2025 16:24:36 +0800 Subject: [PATCH 141/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85-=E5=8A=A0=E4=B8=8A=E4=B8=BB?= =?UTF-8?q?=E9=A2=98topic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/rpc/DataObjectApiGateway.java | 16 ++++++++-------- .../service/impl/ChangeRecordServiceImpl.java | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java index 6b183872..73d4681f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java @@ -44,18 +44,18 @@ public class DataObjectApiGateway { private MatchDataObjectResp mockDataObject() { MergeMatchDataResp.DataItem dt1 = MergeMatchDataResp.DataItem.builder() .personIds(Lists.newArrayList(9000398292L,89511L)) - .ouId(6122L) - .workspaceId(399L) - .nodeId(10345L) - .projectIds(Lists.newArrayList(424L)) +// .ouId(6122L) +// .workspaceId(399L) +// .nodeId(10345L) +// .projectIds(Lists.newArrayList(424L)) .build(); MergeMatchDataResp.DataItem dt2 = MergeMatchDataResp.DataItem.builder() .personIds(Lists.newArrayList(9000506L,89636L)) - .ouId(6158L) - .workspaceId(399L) - .nodeId(10345L) - .projectIds(Lists.newArrayList(763L)) +// .ouId(6158L) +// .workspaceId(399L) +// .nodeId(10345L) +// .projectIds(Lists.newArrayList(763L)) .build(); MergeMatchDataResp matchDataResp = MergeMatchDataResp.builder().dataItems(Lists.newArrayList(dt1, dt2)).build(); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f303df27..b19d6a1e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -392,6 +392,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 16:43:12 +0800 Subject: [PATCH 142/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 8 +++++ .../api/request/ChangeRecordDeleteReq.java | 32 +++++++++++++++++++ .../api/response/VisaDetailByIdResponse.java | 5 +++ .../controller/ChangeRecordController.java | 7 ++++ .../server/service/ChangeRecordService.java | 4 +++ .../service/impl/ChangeRecordServiceImpl.java | 24 ++++++++++++++ 6 files changed, 80 insertions(+) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index d1ed0932..1f34445b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -140,4 +141,11 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/execute") ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + /** + * 变洽签,“删除”按钮 + * + * @return void + */ + @PostMapping("/api/visa/change/delete") + ApiResult delete(@Validated @RequestBody ChangeRecordDeleteReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java new file mode 100644 index 00000000..edeae4e4 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java @@ -0,0 +1,32 @@ +package cn.axzo.nanopart.visa.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/10 16:21 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ChangeRecordDeleteReq { + + /** + * 变洽签证id + */ + @NotNull(message = "变洽签id 不能为空") + private Long visaId; + + /** + * 操作人 personId + */ + @NotNull(message = "操作人 personId 不能为空") + private Long operatorPersonId; +} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index bbed8c2d..f650d6f1 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -191,6 +191,11 @@ public class VisaDetailByIdResponse { */ private VisaStatusEnum status; + /** + * 群组ID + */ + private Long imGroupId; + /** * 最终审批ID */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 25517b1a..4b23f8f2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -6,6 +6,7 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -126,4 +127,10 @@ public class ChangeRecordController implements ChangeRecordApi { changeRecordService.doExecute(req); return ApiResult.ok(); } + + @Override + public ApiResult delete(ChangeRecordDeleteReq req) { + changeRecordService.delete(req); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index 122994b3..54a070b4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -118,4 +119,7 @@ public interface ChangeRecordService extends IService { void reDecision(ChangeRecordButtonOperationReq req); void doExecute(ChangeRecordButtonOperationReq req); + + void delete(ChangeRecordDeleteReq req); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index bc81456f..ed5ca1e4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -35,6 +35,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; +import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -388,6 +389,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 17:15:30 +0800 Subject: [PATCH 143/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=8C=89=E9=92=AE-=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 3 +- .../api/request/ChangeRecordDeleteReq.java | 32 ------------------- .../controller/ChangeRecordController.java | 3 +- .../server/service/ChangeRecordService.java | 3 +- .../service/impl/ChangeRecordServiceImpl.java | 3 +- 5 files changed, 4 insertions(+), 40 deletions(-) delete mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 1f34445b..1ef9c73f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -3,7 +3,6 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; -import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -147,5 +146,5 @@ public interface ChangeRecordApi { * @return void */ @PostMapping("/api/visa/change/delete") - ApiResult delete(@Validated @RequestBody ChangeRecordDeleteReq req); + ApiResult deleteChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java deleted file mode 100644 index edeae4e4..00000000 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordDeleteReq.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.axzo.nanopart.visa.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import javax.validation.constraints.NotNull; - -/** - * @author chenwenjian - * @version 1.0 - * @date 2025/2/10 16:21 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ChangeRecordDeleteReq { - - /** - * 变洽签证id - */ - @NotNull(message = "变洽签id 不能为空") - private Long visaId; - - /** - * 操作人 personId - */ - @NotNull(message = "操作人 personId 不能为空") - private Long operatorPersonId; -} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 4b23f8f2..8594af72 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -6,7 +6,6 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; -import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -129,7 +128,7 @@ public class ChangeRecordController implements ChangeRecordApi { } @Override - public ApiResult delete(ChangeRecordDeleteReq req) { + public ApiResult deleteChangeRecord(ChangeRecordButtonOperationReq req) { changeRecordService.delete(req); return ApiResult.ok(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index 54a070b4..d85ab8d7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -3,7 +3,6 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; -import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -120,6 +119,6 @@ public interface ChangeRecordService extends IService { void doExecute(ChangeRecordButtonOperationReq req); - void delete(ChangeRecordDeleteReq req); + void delete(ChangeRecordButtonOperationReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 30b57a15..cb8a125f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -35,7 +35,6 @@ import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; -import cn.axzo.nanopart.visa.api.request.ChangeRecordDeleteReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; @@ -1370,7 +1369,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 18:27:06 +0800 Subject: [PATCH 144/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeExportReq.java | 8 ++++++++ .../service/impl/ChangeRecordServiceImpl.java | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java index 44058d44..2460db94 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeExportReq.java @@ -28,4 +28,12 @@ public class VisaChangeExportReq { * 导出字段 */ private List fields; + + /*操作人信息*/ + private Long personId; + private Long identityId; + private Integer identityType; + private Long workspaceId; + private Long ouId; + private String terminal; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index cb8a125f..e487a535 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,6 +8,8 @@ import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.basics.report.api.ReportServiceSDK; +import cn.axzo.basics.report.api.ReportUserContext; +import cn.axzo.basics.report.api.req.ReportFileReq; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; @@ -880,6 +882,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields, List data) { String scene = "visa"; String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss")); String sheetName = "变更签证表"; @@ -892,7 +898,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter, Set permissionVisaIdSet) { From 2cb42d034f06b8f0a311519d9608245adc416916 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 10 Feb 2025 20:46:30 +0800 Subject: [PATCH 145/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java | 2 +- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java index 1211b46c..683877ee 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaChangeFieldEnum.java @@ -15,7 +15,7 @@ public enum VisaChangeFieldEnum { STATUS("status", "单据状态"), TOPIC("topic", "主题"), AMOUNT_CHANGE("amountChange", "金额变化"), - CREATE_BY("createBy", "发起人"), + INITIATOR("initiator", "发起人"), CREATE_AT("happenTime", "提出时间"), APPROVAL_COMPLETE_TIME("approvalCompleteTime", "审批通过时间"), RELATION_PROJECT("relationProject", "所属工程"), diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e487a535..06fcd24a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -859,7 +859,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorPersonIdList = changeRecordList.stream().map(ChangeRecord::getCreateBy).distinct().collect(Collectors.toList()); // Map initiatorMap = getPersonBriefInfoMap(changeRecordList.get(0).getRelationWorkspaceId(), initiatorPersonIdList); @@ -886,19 +886,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields, List data) { - String scene = "visa"; + String scene = "变更签证表"; String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss")); String sheetName = "变更签证表"; String headerName = "变更签证单"; SheetWrapper sheetWrapper = SheetWrapper.builder() + .headClass(VisaExportDto.class) .title(headerName) .sheetName(sheetName) .includeColumnFieldNames(fields.stream() - .map(VisaChangeFieldEnum::getDesc) + .map(VisaChangeFieldEnum::getValue) .collect(Collectors.toList())) .sourceData(data) .build(); ReportFileReq reportFileReq = ReportFileReq.builder() + .convertData(false) .bizScene(scene) .fileName(fileName) .reportPassword(null) From efe1dc22224be53da319482c0487cefae6f00b04 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 11 Feb 2025 13:36:36 +0800 Subject: [PATCH 146/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E6=B5=81=E7=A8=8B=E5=B9=BF=E6=92=AD=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E6=9E=9A=E4=B8=BE=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessInstanceAllEventHandler.java | 23 +++++++++++-------- .../service/impl/ChangeRecordServiceImpl.java | 4 ++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index b244d771..8f9aa11b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; @@ -16,6 +17,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.util.Date; import java.util.Objects; @@ -60,27 +62,30 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onStarted(ProcessInstanceDTO dto) { BpmnTaskDelegateAssigner initiator = dto.getInitiator(); - String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); + String visaTypeDesc = parseVisaType(dto); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) - .title(String.format(TO_APPRROVE.getTitle(), visaType)) - .content(String.format(TO_APPRROVE.getContent(), buildLogUserInfo(initiator), visaType)) + .title(String.format(TO_APPRROVE.getTitle(), visaTypeDesc)) + .content(String.format(TO_APPRROVE.getContent(), buildLogUserInfo(initiator), visaTypeDesc)) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); } - + private String parseVisaType(ProcessInstanceDTO dto) { + String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); + return StringUtils.hasText(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : ""; + } @Override public void onCompleted(ProcessInstanceDTO dto) { - String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); + String visaTypeDesc = parseVisaType(dto); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) - .title(String.format(APPROVE_COMPLETED.getTitle(), visaType)) - .content(String.format(APPROVE_COMPLETED.getContent(), visaType)) + .title(String.format(APPROVE_COMPLETED.getTitle(), visaTypeDesc)) + .content(String.format(APPROVE_COMPLETED.getContent(), visaTypeDesc)) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); @@ -95,12 +100,12 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onCancelled(ProcessInstanceDTO dto) { BpmnTaskDelegateAssigner initiator = dto.getInitiator(); - String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); + String visaTypeDesc = parseVisaType(dto); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) - .title(String.format(REVERT_APPROVE.getTitle(), visaType)) + .title(String.format(REVERT_APPROVE.getTitle(), visaTypeDesc)) .content(String.format(REVERT_APPROVE.getContent(), buildLogUserInfo(initiator))) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 06fcd24a..2340ab75 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -617,7 +617,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl variables = new HashMap<>(); - variables.put(WORKFLOW_VAR_VISA_TYPE_KEY, req.getType().getCode()); + variables.put(WORKFLOW_VAR_VISA_TYPE_KEY, req.getType().name()); processDto.setVariables(variables); processDto.setInitiator(BpmnTaskDelegateAssigner.builder() .tenantId(String.valueOf(req.getRelationWorkspaceId())) From cdbc22518f5018d489d75967a59dd091c5c1162d Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 11 Feb 2025 14:20:40 +0800 Subject: [PATCH 147/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E4=B8=8E=E5=86=B3=E7=AD=96=E4=BA=BA,=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index d94be06f..d4e8c5b6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -48,23 +48,23 @@ public enum VisaButtonTypeEnum { // 发起人不同状态按钮权限 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD, APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); // 决策人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); //审核人不同状态按钮权限 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD,PRINT)); //其他不同状态按钮权限 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); From e25d227d1fbf16065622cd66b4fe41741d4fd232 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 11 Feb 2025 14:28:32 +0800 Subject: [PATCH 148/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E9=87=91=E9=A2=9D=E7=9A=84=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 1 - .../service/impl/ChangeRecordServiceImpl.java | 16 ++++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 6d62f980..fcc9cee0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -127,7 +127,6 @@ public class VisaChangeTempCreateReq { /** * 有符号的变更金额 */ - @NotNull(message = "变更金额不能为空") private BigDecimal amountChange; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 2340ab75..aee7360b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -702,13 +702,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { - amountDesc = "增加" + req.getAmountChange().toPlainString() + "元"; - } else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { - amountDesc = "减少" + req.getAmountChange().toPlainString() + "元"; + + // 非必填项 + if (Objects.nonNull(req.getAmountChange())) { + String amountDesc = "不变"; + if (req.getAmountChange().compareTo(BigDecimal.ZERO) > 0) { + amountDesc = "增加" + req.getAmountChange().toPlainString() + "元"; + } else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { + amountDesc = "减少" + req.getAmountChange().toPlainString() + "元"; + } + formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc); } - formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc); // 三种单据 if (MapUtils.isNotEmpty(req.getRelationOrderMap())) { From 66f4bb59d4ecb219ef13654aafbcc64685b78739 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 11 Feb 2025 14:58:42 +0800 Subject: [PATCH 149/341] =?UTF-8?q?feat(REQ-3300):=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=A0=A1=E9=AA=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index aee7360b..47512cef 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1080,7 +1080,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl= 0, "金额变化超出范围"); + if (Objects.equals(req.getType(), VisaTypeEnum.PROJECT_VISA) && Objects.isNull(req.getAmountChange())) { + throw new ServiceException("请选择金额变化"); + } + if (Objects.nonNull(req.getAmountChange())) { + AssertUtil.isTrue(req.getAmountChange().compareTo(maxAmount) <= 0 && req.getAmountChange().compareTo(minAmount) >= 0, "金额变化超出范围"); + } // 关联单据合法性 if (CollUtil.isNotEmpty(req.getRelationOrderMap())) { req.getRelationOrderMap().forEach((key, value) -> { @@ -1195,6 +1199,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl value, VisaTypeEnum visaType) { AssertUtil.notNull(billType, "关联单据类型不能为空"); AssertUtil.notEmpty(value, "关联单据Id不能为空"); From f97e855cd937925a49fac5c629ac7f1837e28661 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 11 Feb 2025 15:25:25 +0800 Subject: [PATCH 150/341] =?UTF-8?q?feat(REQ-3300):=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 47512cef..19e0dce0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -83,6 +83,7 @@ import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; +import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; @@ -737,6 +738,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl pendingVariables = new HashMap<>(); pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic()); processDto.setPendingVariables(pendingVariables); + processDto.setCooperationOrg(new CooperationOrgDTO()); return workflowGateway.processInstanceCreate(processDto); } @@ -1117,7 +1119,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 11 Feb 2025 16:16:56 +0800 Subject: [PATCH 151/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=A1=B5-personId/ouId/workspaceId=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/VisaHelper.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 42906bff..2ec8da54 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -1,21 +1,26 @@ package cn.axzo.nanopart.visa.server.service; +import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; +import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.thor.client.model.DrawingMajorResp; import com.alibaba.fastjson.JSONArray; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -45,6 +50,9 @@ public class VisaHelper { @Resource private ApolloConstructionAreaGateway apolloConstructionAreaGateway; + @Resource + private ChangeRecordConfirmService changeRecordConfirmService; + /** * 状态更新与添加日志,此时新增记录时状态没有维护 */ @@ -144,4 +152,24 @@ public class VisaHelper { } } + /** + * 查询单据与当前人的角色:[发起人|确认人|其他用户] + */ + public Map> fetchConfirmBizTypes(Collection visaIds, Long personId, Long ouId, Long workspaceId) { + List confirmList = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() + .visaIds(visaIds) + .personId(personId) + .ouId(ouId) + .workspaceId(workspaceId).build()); + if (CollectionUtils.isEmpty(confirmList)) { + return visaIds.stream().collect(Collectors.toMap(visaId -> visaId, visaId -> Sets.newHashSet(VisaConfirmBizTypeEnum.OTHER))); + } + Map> visaBizTypeMap = confirmList.stream().collect(Collectors.groupingBy(ChangeRecordConfirm::getVisaId + , Collectors.mapping(ChangeRecordConfirm::getBizType, Collectors.toSet()))); + visaIds.stream().forEach(item -> { + visaBizTypeMap.put(item, visaBizTypeMap.getOrDefault(item, Sets.newHashSet(VisaConfirmBizTypeEnum.OTHER))); + }); + return visaBizTypeMap; + } + } From 5ed8b6775e2af4c70f5b77085b5a91249554873f Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 11 Feb 2025 16:29:27 +0800 Subject: [PATCH 152/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E9=87=8D=E6=96=B0=E5=A4=8D=E5=88=B6=E5=B1=9E=E6=80=A7?= =?UTF-8?q?,=E5=BE=85=E6=8F=90=E6=8A=A5:TO=5FREPORT/REPORT=5FFROM=5FAPPROV?= =?UTF-8?q?E,=E5=86=B3=E7=AD=96=E4=B8=AD:DECIDING/DECIDING=5FFROM=5FAPPROV?= =?UTF-8?q?E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ChangeRecordController.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 8594af72..3808cf92 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -5,6 +5,7 @@ import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; @@ -24,12 +25,14 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** * @author xudawei @@ -84,10 +87,27 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiPageResult pageSearchVisaChangeRecord(VisaChangePageSearchReq req) { + //重新赋值属性,待提报:TO_REPORT/REPORT_FROM_APPROVE,决策中:DECIDING/DECIDING_FROM_APPROVE + this.rechangeAttr(req); PageData pageData = changeRecordService.page(req); return ApiPageResult.ok(pageData.getList(), pageData.getTotalCount(), pageData.getPage(), pageData.getPageSize()); } + /** + * 重新赋值属性 + * 待提报:TO_REPORT/REPORT_FROM_APPROVE + * 决策中:DECIDING/DECIDING_FROM_APPROVE + */ + private void rechangeAttr(VisaChangePageSearchReq req) { + if (Objects.nonNull(req) && CollectionUtils.isNotEmpty(req.getStatuses()) && req.getStatuses().contains(VisaStatusEnum.TO_REPORT)) { + req.getStatuses().add(VisaStatusEnum.REPORT_FROM_APPROVE); + } + + if (Objects.nonNull(req) && CollectionUtils.isNotEmpty(req.getStatuses()) && req.getStatuses().contains(VisaStatusEnum.DECIDING)) { + req.getStatuses().add(VisaStatusEnum.DECIDING_FROM_APPROVE); + } + } + @Override public ApiResult exportVisaChangeRecord(VisaChangeExportReq req) { changeRecordService.export(req); From a791c7180c5486449d2cf90292661c6f92974be5 Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 11 Feb 2025 17:41:25 +0800 Subject: [PATCH 153/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E9=87=8D=E6=96=B0=E5=A4=8D=E5=88=B6=E5=B1=9E=E6=80=A7?= =?UTF-8?q?,=E5=BE=85=E6=8F=90=E6=8A=A5:TO=5FREPORT/REPORT=5FFROM=5FAPPROV?= =?UTF-8?q?E,=E5=86=B3=E7=AD=96=E4=B8=AD:DECIDING/DECIDING=5FFROM=5FAPPROV?= =?UTF-8?q?E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 74 ++++++++++++++++++- .../visa/server/service/VisaHelper.java | 45 ++++++++++- 2 files changed, 114 insertions(+), 5 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index d4e8c5b6..72167f85 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -35,6 +35,7 @@ public enum VisaButtonTypeEnum { APPROVAL_RECORD("approval_record", "查看审批记录"), TO_HANDLE("to_handle", "去处理"), PRINT("print", "打印"), + DETAIL("detail", "详情"), ; @@ -42,10 +43,11 @@ public enum VisaButtonTypeEnum { private String desc; + //分页列表页Map,key:角色+单据状态,value:功能权限的按钮列表 private static Map> bizTypeBtnMap = Maps.newHashMap(); static { - // 发起人不同状态按钮权限 + // 发起人不同状态按钮权限-详情页 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, FORBID)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); @@ -55,7 +57,7 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); - // 决策人不同状态按钮权限 + // 决策人不同状态按钮权限-详情页 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); @@ -63,10 +65,10 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); - //审核人不同状态按钮权限 + //审核人不同状态按钮权限-详情页 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD,PRINT)); - //其他不同状态按钮权限 + //其他不同状态按钮权限-详情页 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); @@ -75,6 +77,44 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); //[打印]按钮是通过OMS统一配置,故此处不处理 + + + } + + //分页列表页Map,key:角色+单据状态,value:功能权限的按钮列表 + private static Map> bizTypeBtnMapWhenPage = Maps.newHashMap(); + + static { + // 发起人不同状态按钮权限-分页列表页 + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL)); + + + // 确认人不同状态按钮权限-分页列表页 + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL, UPDATE)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL)); + + // 其他人不同状态按钮权限-分页列表页 + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL, APPROVAL_RECORD)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL)); } /** @@ -117,6 +157,32 @@ public enum VisaButtonTypeEnum { } } + /** + * 根据角色与单据状态获取按钮权限 + */ + public static Set fetchBtnsByBizTypeAndStatusWhenPage(Set bizTypeSet, VisaStatusEnum status) { + if (Objects.isNull(bizTypeSet) || Objects.isNull(status)) { + return Sets.newHashSet(); + } + + Set returnBtnSet = Sets.newHashSet(); + + bizTypeSet.stream().filter(Objects::nonNull).forEach(item -> { + switch (item) { + case CREATE: + case CONFIRM: + case OTHER: + case APPROVE: + Set buttonTypeEnumSet = bizTypeBtnMapWhenPage.get(item.name() + status.name()); + returnBtnSet.addAll(CollectionUtils.isNotEmpty(buttonTypeEnumSet) ? buttonTypeEnumSet : Sets.newHashSet()); + break; + default: + throw new ServiceException("单据确认业务类型不匹配"); + } + }); + return returnBtnSet; + } + public static Set all() { return Sets.newHashSet(VisaButtonTypeEnum.values()); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 2ec8da54..d0338ae3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -1,9 +1,11 @@ package cn.axzo.nanopart.visa.server.service; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; @@ -13,6 +15,7 @@ import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.thor.client.model.DrawingMajorResp; import com.alibaba.fastjson.JSONArray; +import com.google.common.collect.Maps; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -27,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -155,7 +159,17 @@ public class VisaHelper { /** * 查询单据与当前人的角色:[发起人|确认人|其他用户] */ - public Map> fetchConfirmBizTypes(Collection visaIds, Long personId, Long ouId, Long workspaceId) { + public Map> fetchConfirmBizTypes(Collection visaList, Long personId, Long ouId, Long workspaceId) { + + if (CollectionUtils.isEmpty(visaList)) { + return Collections.emptyMap(); + } + List visaIds = visaList.stream().filter(item -> Objects.nonNull(item.getId())) + .map(ChangeRecord::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(visaIds)) { + return Collections.emptyMap(); + } + List confirmList = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() .visaIds(visaIds) .personId(personId) @@ -172,4 +186,33 @@ public class VisaHelper { return visaBizTypeMap; } + + /** + * 获取按钮集合 + * 确认人与发起人的不同的单据状态,按钮列表不相同 + */ + public Map> fetchBtnsByCondition(Collection visaList, Long personId, Long ouId, Long workspaceId) { + if (CollectionUtils.isEmpty(visaList)) { + return Collections.emptyMap(); + } + Map visaIdMap = visaList.stream() + .filter(item -> Objects.nonNull(item.getId())) + .collect(Collectors.toMap(ChangeRecord::getId, Function.identity(), (x, y) -> x)); + Map> visaIdBizTypeMap = fetchConfirmBizTypes(visaList, personId, ouId, workspaceId); + if (Objects.isNull(visaIdBizTypeMap) || visaIdBizTypeMap.isEmpty()) { + return Collections.emptyMap(); + } + Map> returnMap = Maps.newHashMap(); + + visaIdBizTypeMap.entrySet().stream().forEach(entry -> { + Long key = entry.getKey(); + Set value = entry.getValue(); + + ChangeRecord changeRecord = visaIdMap.get(key); + if (Objects.nonNull(changeRecord) && Objects.nonNull(changeRecord.getStatus())) { + returnMap.put(key, VisaButtonTypeEnum.fetchBtnsByBizTypeAndStatusWhenPage(value, changeRecord.getStatus())); + } + }); + return returnMap; + } } From 10f24a4258a5d33311a4a5907c0b702c774d68fb Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 11 Feb 2025 17:43:12 +0800 Subject: [PATCH 154/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E9=87=8D=E6=96=B0=E5=A4=8D=E5=88=B6=E5=B1=9E=E6=80=A7?= =?UTF-8?q?,=E5=BE=85=E6=8F=90=E6=8A=A5:TO=5FREPORT/REPORT=5FFROM=5FAPPROV?= =?UTF-8?q?E,=E5=86=B3=E7=AD=96=E4=B8=AD:DECIDING/DECIDING=5FFROM=5FAPPROV?= =?UTF-8?q?E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/server/service/VisaHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index d0338ae3..33011562 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -191,7 +191,7 @@ public class VisaHelper { * 获取按钮集合 * 确认人与发起人的不同的单据状态,按钮列表不相同 */ - public Map> fetchBtnsByCondition(Collection visaList, Long personId, Long ouId, Long workspaceId) { + public Map> fetchBtnsByBizTypeAndStatus(Collection visaList, Long personId, Long ouId, Long workspaceId) { if (CollectionUtils.isEmpty(visaList)) { return Collections.emptyMap(); } From b268bfd727d2213ea4f67805392233ad34053741 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 11 Feb 2025 18:00:05 +0800 Subject: [PATCH 155/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=88=97=E8=A1=A8-=E6=93=8D=E4=BD=9C=E5=88=97=E5=8F=8A?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/response/VisaChangePageSearchResp.java | 13 +++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index 7154fdb0..7c88a21d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.api.response; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; @@ -10,6 +11,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.Date; import java.util.Objects; +import java.util.Set; /** * @author chenwenjian @@ -117,6 +119,11 @@ public class VisaChangePageSearchResp { */ private Boolean isRelated; + /** + * 操作按钮 + */ + private Set operateBtnSet; + public String getTypeDesc() { if (Objects.isNull(type)) { return null; @@ -128,6 +135,12 @@ public class VisaChangePageSearchResp { if (Objects.isNull(status)) { return null; } + if (VisaStatusEnum.REPORT_FROM_APPROVE.equals(status)) { + return VisaStatusEnum.TO_REPORT.getDesc(); + } + if (VisaStatusEnum.DECIDING_FROM_APPROVE.equals(status)) { + return VisaStatusEnum.DECIDING.getDesc(); + } return status.getDesc(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 19e0dce0..9c28340f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -29,6 +29,7 @@ import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.msg.center.service.dto.PeerPerson; import cn.axzo.msg.center.service.pending.request.CardSendRequest; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaChangeFieldEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; @@ -1033,6 +1034,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl> operateBtnMap = visaHelper.fetchBtnsByBizTypeAndStatus(records, req.getCurrentPersonId(), req.getCurrentOuId(), req.getCurrentWorkspaceId()); /*组装信息*/ return records.stream() @@ -1043,7 +1046,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 12 Feb 2025 10:10:49 +0800 Subject: [PATCH 156/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E4=B8=BB=E5=8D=95=E6=8D=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index fcc9cee0..02ea0f1b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -138,7 +138,7 @@ public class VisaChangeTempCreateReq { * * @see VisaBillTypeEnum */ - private Map> relationOrderMap; + private Map> relationOrderMap; /** * 附件,json列表 @@ -162,6 +162,26 @@ public class VisaChangeTempCreateReq { */ private Long operatorPersonId; + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class OrderSimpleModel { + /** + * 单据主键 ID + */ + private Long id; + + /** + * 单据编号 + */ + private String no; + + /** + * 单据名称 + */ + private String name; + } @Data @Builder From 1a918ecadeb49c87a578f32999c1d70fd2739c56 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 12 Feb 2025 10:21:04 +0800 Subject: [PATCH 157/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=8D=95=E6=8D=AE=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=9A=84=E5=85=A5=E5=8F=82=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 9c28340f..10e1784b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -718,19 +718,19 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.TASK.name(), null); - if (CollectionUtils.isNotEmpty(taskOrderIds)) { - formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrderIds); + List taskOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.TASK.name(), null); + if (CollectionUtils.isNotEmpty(taskOrders)) { + formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrders); } - List rectificationOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.RECTIFY.name(), null); - if (CollectionUtils.isNotEmpty(rectificationOrderIds)) { - formVariables.put(FORM_FIELD_RELATION_RECTIFICATION_ORDER, rectificationOrderIds); + List rectificationOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.RECTIFY.name(), null); + if (CollectionUtils.isNotEmpty(rectificationOrders)) { + formVariables.put(FORM_FIELD_RELATION_RECTIFICATION_ORDER, rectificationOrders); } - List visaOrderIds = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); - if (CollectionUtils.isNotEmpty(visaOrderIds)) { - formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderIds); + List visaOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); + if (CollectionUtils.isNotEmpty(visaOrders)) { + formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrders); } } formVariables.put(FORM_FIELD_ATTACH, req.getAttach()); From f0579f5e17a13881564fb8eba0eed9d8232bcfd5 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 12 Feb 2025 11:15:04 +0800 Subject: [PATCH 158/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E5=8D=95=EF=BC=8C=E8=B0=83?= =?UTF-8?q?=E7=94=A8log-api=E4=BF=9D=E5=AD=98=E5=8F=98=E7=AD=BE=E5=BF=AB?= =?UTF-8?q?=E7=85=A7=E8=87=B3=E6=97=A5=E5=BF=97=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-server/pom.xml | 8 +++ .../visa/server/rpc/LogApiGateway.java | 50 +++++++++++++++++++ .../visa/server/service/VisaHelper.java | 17 +++++++ .../nanopart/visa/server/utils/Constants.java | 15 ++++++ 4 files changed, 90 insertions(+) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 83ddc68f..47e16e9b 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -114,5 +114,13 @@ karma-api 2.0.0-SNAPSHOT + + + cn.axzo.platform + axzo-log-api + 1.0.0-SNAPSHOT + + + diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java new file mode 100644 index 00000000..3352f965 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java @@ -0,0 +1,50 @@ +package cn.axzo.nanopart.visa.server.rpc; + +/** + * @author xudawei@axzo.cn + * @date 2025/2/12 + * @description 日志RPC + */ + +import cn.axzo.log.platform.client.feign.LogApi; +import cn.axzo.log.platform.client.model.req.LogAddReq; +import cn.azxo.framework.common.model.CommonResponse; +import cn.hutool.json.JSONUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 日志RPC + * @author xudawei@axzo.cn + * @since 2025-02-05 15:08 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class LogApiGateway { + + private final LogApi logApi; + + public void addLog(LogAddReq req) { + try { + log.info("LogApiGateway-addLog, req: {}", JSONUtil.toJsonStr(req)); + CommonResponse stringCommonResponse = logApi.addLog(req); + log.info("LogApiGateway-addLog, result: {}", JSONUtil.toJsonStr(stringCommonResponse)); + } catch (Exception e) { + log.warn("LogApiGateway-addLog Exception", e); + } + } + + public void addLog(String scene, String level, List tags, String msg) { + logApi.addLog(LogAddReq.builder() + .scene(scene) + .level(level) + .tags(tags) + .message(msg) + .build()); + } + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 33011562..9ab05daf 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -12,9 +12,13 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; +import cn.axzo.nanopart.visa.server.rpc.LogApiGateway; import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.thor.client.model.DrawingMajorResp; +import cn.hutool.core.lang.Pair; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; @@ -57,6 +61,9 @@ public class VisaHelper { @Resource private ChangeRecordConfirmService changeRecordConfirmService; + @Resource + private LogApiGateway logApiGateway; + /** * 状态更新与添加日志,此时新增记录时状态没有维护 */ @@ -74,6 +81,16 @@ public class VisaHelper { //编辑时 if (Objects.nonNull(oldContext) && Objects.nonNull(newContext)) { + + // 由[决策中|执行中] -> [审批中] 执行变更签证属性变更 + if (Objects.nonNull(oldContext.getStatus()) && Objects.nonNull(newContext.getStatus()) + && VisaStatusEnum.isEditForm(oldContext.getStatus()) + && newContext.getStatus().equals(VisaStatusEnum.APPROVING)) { + logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE + , Constants.VISA_LOG_SNAPSHOT_LEVEL + , Lists.newArrayList(Constants.VISA_LOG_SNAPSHOT_TAG_SNAPSHOT) + , JSONUtil.toJsonStr(Pair.of(oldContext, newContext))); + } changeRecordService.changeStatus(ChangeStatusRequest.builder() .visaId(newContext.getChangeRecord().getId()) .updateStatus(newContext.getStatus()) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java index a77727a6..eebc1edb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java @@ -50,4 +50,19 @@ public class Constants { * 工程签证数据权限的code */ public static final String SPLIT_TREE_NODE_CHAT = "-"; + + /** + * 变更签证日志 + */ + public static final String VISA_LOG_SNAPSHOT_SCENE = "visa_log"; + + /** + * 变更签证日志-快照 + */ + public static final String VISA_LOG_SNAPSHOT_TAG_SNAPSHOT = "visa_log_snapshot"; + + /** + * 变更签证日志-快照 + */ + public static final String VISA_LOG_SNAPSHOT_LEVEL = "INFO"; } From 92a2f7c9e6915f8ca9f26fae79816f904dc82469 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 12 Feb 2025 11:26:11 +0800 Subject: [PATCH 159/341] =?UTF-8?q?feat(REQ-3300):=20=E6=9A=82=E5=AD=98-?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=8D=95=E6=8D=AE=E6=A8=A1=E5=9E=8B=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/VisaChangePageSearchResp.java | 8 ++++++ .../server/rpc/ApolloTaskOrderApiGateway.java | 19 ++++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 26 ++++++++++++------- 3 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index 7c88a21d..ba8eabdb 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -121,6 +121,14 @@ public class VisaChangePageSearchResp { /** * 操作按钮 + *

+ * UPDATE: 编辑 + * DETAIL: 详情 + * UPLOAD_FILE: 上传附件 + * APPROVE_RECORD: 查看审批记录 + *

+ * + * @see VisaButtonTypeEnum */ private Set operateBtnSet; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java new file mode 100644 index 00000000..f54ca1eb --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java @@ -0,0 +1,19 @@ +package cn.axzo.nanopart.visa.server.rpc; + +import cn.axzo.apollo.api.ApolloTaskOrderApi; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/12 11:18 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ApolloTaskOrderApiGateway { + + private final ApolloTaskOrderApi apolloTaskOrderApi; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 10e1784b..fb63ce5f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -571,7 +571,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl VisaBillDto.builder() .visaId(changeRecord.getId()) .visaType(changeRecord.getType()) - .billId(o) + .billId(o.getId()) + .billNo(o.getNo()) .billType(VisaBillTypeEnum.valueOf(os.getKey())) .createBy(req.getOperatorPersonId()) .updateBy(req.getOperatorPersonId()) @@ -1178,13 +1179,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); + validBillIfRelated(VisaBillTypeEnum.TASK, billIds, req.getType()); } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { /*整改单*/ // 关联单据数量限制 AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), String.format("最多可关联%d个变更单,请重新选择", refreshableConfiguration.getVerifyVisaLimit())); - validBillIfRelated(VisaBillTypeEnum.RECTIFY, value, req.getType()); + List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); + validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { /*变更单*/ AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); @@ -1192,13 +1195,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl relationVisa = listByIds(value); + List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); + List relationVisa = listByIds(billIds); AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); relationVisa.forEach(r -> { AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc())); }); - validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, value, req.getType()); + validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); } else { throw new ServiceException("不支持的关联单据类型"); } @@ -1471,11 +1475,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl bills = changeRecordBillService.listById(changeRecord.getId()); - if (CollectionUtils.isNotEmpty(bills)) { - req.setRelationOrderMap(bills.stream().collect(Collectors.groupingBy(b -> b.getBillType().name(), - Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))) - ); - } +// // 实时构建单据名称 +// if (CollectionUtils.isNotEmpty(bills)) { +// Map> orderMap = bills.stream().collect(Collectors.groupingBy(b -> b.getBillType().name(), +// Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); +// req.setRelationOrderMap() +// ); +// } // 附件 List attach = changeRecordRelationService.findByVisaAndVarName(changeRecord.getId(), VisaRelationFieldEnum.ATTACHMENT.name()); if (CollectionUtils.isNotEmpty(attach)) { From ec5eb6628e4fbaa56ffc260b3b975ecbac934a89 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 12 Feb 2025 14:24:33 +0800 Subject: [PATCH 160/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4=E9=80=82?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- visa/visa-server/pom.xml | 6 ++ .../server/rpc/ApolloTaskOrderApiGateway.java | 9 +++ .../visa/server/rpc/RectifyApiGateway.java | 29 +++++++ .../service/impl/ChangeRecordServiceImpl.java | 80 +++++++++++++++++-- 4 files changed, 117 insertions(+), 7 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/RectifyApiGateway.java diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml index 47e16e9b..b27ba208 100644 --- a/visa/visa-server/pom.xml +++ b/visa/visa-server/pom.xml @@ -121,6 +121,12 @@ 1.0.0-SNAPSHOT + + cn.axzo.digital + digital-api + 1.0.0-SNAPSHOT + + diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java index f54ca1eb..29916873 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloTaskOrderApiGateway.java @@ -1,6 +1,10 @@ package cn.axzo.nanopart.visa.server.rpc; import cn.axzo.apollo.api.ApolloTaskOrderApi; +import cn.axzo.apollo.api.req.QueryOrderToBasicReq; +import cn.axzo.apollo.api.res.TaskOrderToBasicRes; +import cn.axzo.apollo.core.domain.PageResult; +import cn.axzo.nanopart.visa.server.utils.RpcUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -16,4 +20,9 @@ import org.springframework.stereotype.Service; public class ApolloTaskOrderApiGateway { private final ApolloTaskOrderApi apolloTaskOrderApi; + + public PageResult pageOrderByForBasic(QueryOrderToBasicReq req) { + return RpcUtil.rpcResultProcessor(() -> apolloTaskOrderApi.pageOrderByForBasic(req), + "Page query task orders", req); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/RectifyApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/RectifyApiGateway.java new file mode 100644 index 00000000..e2753bb3 --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/RectifyApiGateway.java @@ -0,0 +1,29 @@ +package cn.axzo.nanopart.visa.server.rpc; + +import cn.axzo.digital.RectifyApi; +import cn.axzo.digital.req.ListRectifyOrderReq; +import cn.axzo.digital.resp.RectifyOrderResp; +import cn.axzo.nanopart.visa.server.utils.RpcUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/12 11:37 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class RectifyApiGateway { + + private final RectifyApi rectifyApi; + + public List listRectifyOrders(ListRectifyOrderReq req) { + return RpcUtil.rpcApiResultProcessor(() -> rectifyApi.listRectifyOrders(req), + "Get rectify orders by ids", req); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fb63ce5f..fc1e8437 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,5 +1,7 @@ package cn.axzo.nanopart.visa.server.service.impl; +import cn.axzo.apollo.api.req.QueryOrderToBasicReq; +import cn.axzo.apollo.api.res.TaskOrderToBasicRes; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; @@ -11,6 +13,8 @@ import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.ReportUserContext; import cn.axzo.basics.report.api.req.ReportFileReq; import cn.axzo.basics.report.api.sheet.SheetWrapper; +import cn.axzo.digital.req.ListRectifyOrderReq; +import cn.axzo.digital.resp.RectifyOrderResp; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.PageData; @@ -64,9 +68,11 @@ import cn.axzo.nanopart.visa.server.dto.VisaExportDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; +import cn.axzo.nanopart.visa.server.rpc.ApolloTaskOrderApiGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; +import cn.axzo.nanopart.visa.server.rpc.RectifyApiGateway; import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; @@ -121,6 +127,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -216,6 +223,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl bills = changeRecordBillService.listById(changeRecord.getId()); -// // 实时构建单据名称 -// if (CollectionUtils.isNotEmpty(bills)) { -// Map> orderMap = bills.stream().collect(Collectors.groupingBy(b -> b.getBillType().name(), -// Collectors.mapping(ChangeRecordBill::getBillId, Collectors.toList()))); -// req.setRelationOrderMap() -// ); -// } + // 实时构建单据名称 TODO 此处应该可以使用异步进行优化 + if (CollectionUtils.isNotEmpty(bills)) { + Map> relationOrderMap = com.google.common.collect.Maps.newHashMap(); + bills.stream().collect(Collectors.groupingBy(b -> b.getBillType().name(), + Collectors.mapping(Function.identity(), Collectors.toList()))) + .forEach((k, v) -> { + if (VisaBillTypeEnum.TASK.name().equals(k)) { + // 获取任务单数据 + QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq(); + queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId()); + queryOrderToBasicReq.setTaskNos(v.stream().map(ChangeRecordBill::getBillNo).collect(Collectors.toList())); + Map taskOrderMap = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData() + .stream() + .collect(Collectors.toMap(TaskOrderToBasicRes::getTaskNo, Function.identity())); + // 构建关联任务单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(taskOrderMap.get(item.getBillNo())) + .map(TaskOrderToBasicRes::getTaskName) + .orElse("")) + .build()) + .collect(Collectors.toList())); + } else if (VisaBillTypeEnum.RECTIFY.name().equals(k)) { + // 获取整改单数据 + ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder() + .ids(v.stream().map(ChangeRecordBill::getBillId).collect(Collectors.toSet())) + .build(); + Map rectifyOrderMap = rectifyApiGateway.listRectifyOrders(rectifyOrderReq) + .stream() + .collect(Collectors.toMap(RectifyOrderResp::getId, Function.identity(), (v1, v2) -> v1)); + // 构建关联整改单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(rectifyOrderMap.get(item.getBillId())) + .map(RectifyOrderResp::getBizName) + .orElse("")) + .build()) + .collect(Collectors.toList())); + } else if (VisaBillTypeEnum.DESIGN_VISA.name().equals(k)) { + // 获取设计单数据 + Map changeRecordMap = listByIds(v.stream().map(ChangeRecordBill::getBillId).collect(Collectors.toSet())) + .stream() + .collect(Collectors.toMap(ChangeRecord::getId, Function.identity(), (v1, v2) -> v1)); + // 构建关联设计单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(changeRecordMap.get(item.getBillId())) + .map(ChangeRecord::getTopic) + .orElse("")) + .build()) + .collect(Collectors.toList()) + ); + } + }); + req.setRelationOrderMap(relationOrderMap); + } // 附件 List attach = changeRecordRelationService.findByVisaAndVarName(changeRecord.getId(), VisaRelationFieldEnum.ATTACHMENT.name()); if (CollectionUtils.isNotEmpty(attach)) { From 6b27021b5b169b5654209f1af1365363863bfd8e Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 12 Feb 2025 14:51:11 +0800 Subject: [PATCH 161/341] =?UTF-8?q?feat(REQ-3300):=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8D=95=E4=BD=BF=E7=94=A8=E5=8D=95=E5=8F=B7=E4=BD=9C=E4=B8=BA?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ChangeRecordBillService.java | 8 +++++ .../impl/ChangeRecordBillServiceImpl.java | 17 +++++++--- .../service/impl/ChangeRecordServiceImpl.java | 31 ++++++++++++------- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index 6cbb647f..7c97018a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -48,4 +48,12 @@ public interface ChangeRecordBillService { */ List findMainBill(VisaBillTypeEnum billType, List billIds); + /** + * 获取任务单的主单据 + * + * @param taskNos 任务单单号 + * @return 主单据信息 + */ + List findTaskMainBill(List taskNos); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 25a79e72..0d82d487 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,6 +1,5 @@ package cn.axzo.nanopart.visa.server.service.impl; -import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; @@ -11,10 +10,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -79,12 +80,20 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl findMainBill(VisaBillTypeEnum billType, List billIds) { - AssertUtil.notNull(billType, "单据类型不能为空"); - AssertUtil.notEmpty(billIds, "单据Id不能为空"); + if (Objects.isNull(billIds) || CollectionUtils.isEmpty(billIds)) { + return Collections.emptyList(); + } return lambdaQuery().in(ChangeRecordBill::getBillId, billIds) .eq(ChangeRecordBill::getBillType, billType) .eq(ChangeRecordBill::getIsDelete, 0) - .orderByDesc(ChangeRecordBill::getUpdateAt) + .list(); + } + + @Override + public List findTaskMainBill(List taskNos) { + return lambdaQuery().in(ChangeRecordBill::getBillNo, taskNos) + .eq(ChangeRecordBill::getBillType, VisaBillTypeEnum.TASK) + .eq(ChangeRecordBill::getIsDelete, 0) .list(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fc1e8437..509ad110 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1185,26 +1185,20 @@ public class ChangeRecordServiceImpl extends ServiceImpl { + // 关联单据数量限制 + AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), + String.format("最多可关联%d个%s单,请重新选择", refreshableConfiguration.getVerifyVisaLimit(), VisaBillTypeEnum.valueOf(key).getDesc())); if (Objects.equals(VisaRelationFieldEnum.TASK_ORDER.name(), key)) { /*任务单*/ - // 关联单据数量限制 - AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), - String.format("最多可关联%d个变更单,请重新选择", refreshableConfiguration.getVerifyVisaLimit())); - List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); - validBillIfRelated(VisaBillTypeEnum.TASK, billIds, req.getType()); + List taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); + validTaskBillIfRelated(taskNos, req.getType()); } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { /*整改单*/ - // 关联单据数量限制 - AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), - String.format("最多可关联%d个变更单,请重新选择", refreshableConfiguration.getVerifyVisaLimit())); List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { /*变更单*/ AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); - // 关联单据数量限制 - AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), - String.format("最多可关联%d个变更单,请重新选择", refreshableConfiguration.getVerifyVisaLimit())); // 关联单据合法性,是否存在,状态是否合法 List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); List relationVisa = listByIds(billIds); @@ -1245,6 +1239,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskNos, VisaTypeEnum visaType) { + AssertUtil.notEmpty(taskNos, "关联单据Id不能为空"); + AssertUtil.notNull(visaType, "单据类型不能为空"); + List mainBill = changeRecordBillService.findTaskMainBill(taskNos); + mainBill.stream() + .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) + .forEach((k, v) -> v.stream() + .filter(m -> Objects.equals(m.getVisaType(), visaType)) + .findAny() + .ifPresent(m -> { + log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); + throw new ServiceException(String.format("单据%s已被其他单据关联,请重新选择", m.getBillNo())); + })); + } + /** * 通过变更签证Id获取Entity * From 102d9f521fa2620265e26cfe22fe20b47c67687b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 12 Feb 2025 14:52:38 +0800 Subject: [PATCH 162/341] =?UTF-8?q?feat(REQ-3300):=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8D=95=E4=BD=BF=E7=94=A8=E5=8D=95=E5=8F=B7=E4=BD=9C=E4=B8=BA?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 509ad110..3dda0ce9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1506,6 +1506,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrderMap = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData() .stream() .collect(Collectors.toMap(TaskOrderToBasicRes::getTaskNo, Function.identity())); From ed9b79da3b21dca68ed873825609dac2db7e4271 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 12 Feb 2025 18:49:27 +0800 Subject: [PATCH 163/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=88=97=E8=A1=A8-=E5=8A=A0=E4=B8=8A=E5=BE=85=E6=8F=90?= =?UTF-8?q?=E6=8A=A5=E5=8F=AA=E6=9C=89=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E7=9C=8B=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 10e1784b..6d58cba9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -940,6 +940,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 12 Feb 2025 18:50:55 +0800 Subject: [PATCH 164/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=88=97=E8=A1=A8-=E6=8C=89=E9=92=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index 72167f85..361de18b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -112,7 +112,7 @@ public enum VisaButtonTypeEnum { bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL)); bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL)); bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL)); - bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL, APPROVAL_RECORD)); + bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL)); bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL)); bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL)); } From 56f3d76495a8802357c18bbd98d493170c1ad89f Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 12 Feb 2025 19:04:01 +0800 Subject: [PATCH 165/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=8D=95=E6=8D=AE=E5=9C=A8=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E9=A9=B3=E5=9B=9E=E6=97=B6=EF=BC=8C=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E8=A2=AB=E9=80=80=E5=9B=9E=E5=88=B0=E5=BE=85=E6=8F=90=E6=8A=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E8=A6=81=E8=A7=A3=E9=99=A4=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessInstanceAllEventHandler.java | 16 +++++++++++++++- .../server/service/ChangeRecordBillService.java | 5 ++++- .../impl/ChangeRecordBillServiceImpl.java | 11 +++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 8f9aa11b..2f4cc3ed 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,26 +1,32 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; +import com.google.common.collect.Lists; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.Date; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; @@ -39,14 +45,17 @@ import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INST public class ProcessInstanceAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler { protected final ChangeRecordService changeRecordService; protected final ChangeRecordRelationService changeRecordRelationService; + protected final ChangeRecordBillService changeRecordBillService; public ProcessInstanceAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway, ChangeRecordService changeRecordService, - ChangeRecordRelationService changeRecordRelationService) { + ChangeRecordRelationService changeRecordRelationService, + ChangeRecordBillService changeRecordBillService) { super(eventProducer, visaOrganizationalNodeUserGateway); this.changeRecordService = changeRecordService; this.changeRecordRelationService = changeRecordRelationService; + this.changeRecordBillService = changeRecordBillService; } @Override @@ -173,5 +182,10 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .visaId(visaId) .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) .build()); + + if (Objects.isNull(visa.getImGroupId())) { + List bills = changeRecordBillService.findMainBill(VisaBillTypeEnum.DESIGN_VISA, Lists.newArrayList(visaId)); + changeRecordBillService.deleteByCondition(bills.stream().map(ChangeRecordBill::getId).collect(Collectors.toList()), VisaBillTypeEnum.DESIGN_VISA); + } } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index 7c97018a..97c342df 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -11,7 +12,7 @@ import java.util.List; * @date 2025/01/15 * @desc 变更签证记录内容关系表 */ -public interface ChangeRecordBillService { +public interface ChangeRecordBillService extends IService { /** @@ -29,6 +30,8 @@ public interface ChangeRecordBillService { */ Boolean deleteByVisaId(Long visaId); + Boolean deleteByCondition(List billIds, VisaBillTypeEnum billType); + /** * 查询记录 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 0d82d487..0aeeba8f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -60,6 +60,17 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl billIds, VisaBillTypeEnum billType) { + if (CollectionUtils.isEmpty(billIds)) { + return false; + } + return this.lambdaUpdate().in(ChangeRecordBill::getBillId, billIds) + .eq(ChangeRecordBill::getBillType, billType) + .eq(ChangeRecordBill::getIsDelete, 0) + .setSql("is_delete = id").update(); + + } + /** * 查询记录 */ From 9eb16e95954c7449a1f1ba213f5fa1efc7df39ac Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 13 Feb 2025 11:21:03 +0800 Subject: [PATCH 166/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E5=B1=95=E7=A4=BA=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 19ebab99..2e711fde 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -708,7 +708,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); // 传递表单数据 formVariables.put(FORM_FIELD_NO, req.getNo()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); formVariables.put(FORM_FIELD_HAPPEN_TIME, sdf.format(req.getHappenTime())); formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject()); From 35e126307fee1b72e52ce7fb05a4ec53a0f8f5f6 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 13 Feb 2025 11:26:10 +0800 Subject: [PATCH 167/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=B8=8E=E6=90=9C=E7=B4=A2=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangePageSearchReq.java | 7 +++- .../service/impl/ChangeRecordServiceImpl.java | 41 +++++++++++++------ 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index 22b419b7..b66c49da 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -68,8 +68,11 @@ public class VisaChangePageSearchReq { /** * 变更金额区间 - * 0:最小值 1:最大值 - * 当最小最大值均为正值表示增加,均为负值表示减少 + *

+ * 0:最小值 1:最大值 + * 当最小最大值均为正值表示增加,均为负值表示减少 + * 元素均为0表示金额不变 + *

*/ private List amountChange; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 19ebab99..47edd0fc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -119,6 +119,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -194,12 +195,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl page(VisaChangePageSearchReq req) { - /*筛查条件校验*/ - validSearchCondition(req); + /*筛查条件校验与修正*/ + validAndAmendSearchCondition(req); // Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(req); // if (CollectionUtils.isEmpty(permissionVisaIdSet)) { @@ -842,9 +843,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorMap = getPersonBriefInfoMap(req.getWorkspaceId(), initiatorPersonIds); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); /*组装数据*/ - return initiators.stream() + return new ArrayList<>(initiators.stream() .map(i -> buildInitiatorResp(initiatorMap, i)) - .collect(Collectors.toList()); + .collect(Collectors.toMap(i -> i.getPersonId() + ":" + i.getJobId(), Function.identity(), (v1, v2) -> v1)) + .values()); } @Override @@ -1089,20 +1091,35 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 13 Feb 2025 11:48:39 +0800 Subject: [PATCH 168/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=8F=8A=E8=AF=B4=E6=98=8E=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/config/RefreshableConfiguration.java | 6 ++++++ .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 + 2 files changed, 7 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java index 8b051a8a..e4bf9023 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/config/RefreshableConfiguration.java @@ -44,4 +44,10 @@ public class RefreshableConfiguration { */ @Value("${visa.verifyVisaLimit: 5}") private Integer verifyVisaLimit; + + /** + * 发生内容及说明数量限制 + */ + @Value("${visa.verifyChangeContextLimit: 50}") + private Integer verifyChangeContextLimit; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index af3b9fb8..1119ed86 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1165,6 +1165,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.isTrue(1 == c.getType() || 2 == c.getType(), "请选择发生内容类型"); AssertUtil.isFalse(!StringUtils.hasText(c.getText()) && !StringUtils.hasText(c.getFileUrl()), "存在为空的发生内容及说明,请填写"); From ec0585233ef3f08581a29bc3b19950b9569a457e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 13 Feb 2025 14:06:05 +0800 Subject: [PATCH 169/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=AE=A1=E6=89=B9=E7=9A=84=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1119ed86..4e20e6fc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -742,8 +742,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); + List> visaOrderMaps = new ArrayList<>(); + visaOrders.forEach(i -> { + Map visaOrderMap = new HashMap<>(); + visaOrderMap.put("id", i.getNo()); + visaOrderMap.put("name", i.getName()); + visaOrderMaps.add(visaOrderMap); + }); if (CollectionUtils.isNotEmpty(visaOrders)) { - formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrders); + formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderMaps); } } formVariables.put(FORM_FIELD_ATTACH, req.getAttach()); From 2afb9b17151d97cd604a7b2243b580b2f743d7e8 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 13 Feb 2025 14:33:57 +0800 Subject: [PATCH 170/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=97=B6=EF=BC=8C=E5=8D=95=E7=8B=AC=E5=8A=A0?= =?UTF-8?q?=E4=B8=8A=E6=A0=A1=E9=AA=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 7 +++ .../visa/api/enums/VisaButtonTypeEnum.java | 1 + .../api/request/CheckVisaWithVisaIdReq.java | 50 +++++++++++++++++++ .../api/response/VisaDetailByIdResponse.java | 4 ++ .../controller/ChangeRecordController.java | 7 +++ .../server/service/ChangeRecordService.java | 6 +++ .../impl/ChangeRecordConfirmServiceImpl.java | 18 ++++++- .../service/impl/ChangeRecordServiceImpl.java | 15 +++++- .../nanopart/visa/server/utils/Constants.java | 10 ++++ 9 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 1ef9c73f..94111ba5 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -147,4 +148,10 @@ public interface ChangeRecordApi { */ @PostMapping("/api/visa/change/delete") ApiResult deleteChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + + /** + * 校验 + */ + @PostMapping("/api/visa/change/checkVisaWithVisaId") + ApiResult checkVisaWithVisaId(@Validated @RequestBody CheckVisaWithVisaIdReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index 361de18b..11a69ae0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -28,6 +28,7 @@ public enum VisaButtonTypeEnum { EXECUTE("execute", "发起执行"), REDECISION("redecision", "重新发起"), TO_APPROVE("to_approve", "提交审批"), + AGAIN_TO_APPROVE("again_to_approve", "重新提交审批"), AGREE("agree", "同意"), REJECT("reject", "拒绝"), UPLOAD_FILE("upload_file", "上传附件"), diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java new file mode 100644 index 00000000..093946af --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java @@ -0,0 +1,50 @@ +package cn.axzo.nanopart.visa.api.request; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.collections4.CollectionUtils; + +import javax.validation.constraints.NotNull; + +/** + * @author xudawei@axzo.cn + * @version 1.0 + * @date 2025/1/16 11:53 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class CheckVisaWithVisaIdReq { + + /** + * 变更单号Id + */ + @NotNull(message = "变更签证单据Id不能为空") + private Long visaId; + + /** + * 校验 + */ + public void check(VisaDetailByIdResponse response) { + AssertUtil.notNull(response.getRelationWorkspaceId(), "关联项目不能为空"); + AssertUtil.notNull(response.getType(), "单据类型不能为空"); + AssertUtil.notEmpty(response.getNo(), "单号不能为空"); + AssertUtil.notEmpty(response.getTopic(), "主题不能为空"); + AssertUtil.notNull(response.getRelationProject(), "关联工程不能为空"); + AssertUtil.notEmpty(response.getHappenTime(), "提出时间不能为空"); + AssertUtil.notEmpty(response.getReason(), "发生原因不能为空"); + AssertUtil.notEmpty(response.getRelationProfessionalList(), "专业不能为空"); + if (CollectionUtils.isNotEmpty(response.getRelationOuAndPersonList())) { + response.getRelationOuAndPersonList().forEach(item -> { + AssertUtil.notEmpty(item.getRelationPersonList(), "专业不能为空"); + }); + } + + + } +} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index f650d6f1..e84c2bff 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -241,6 +241,10 @@ public class VisaDetailByIdResponse { * 单位名称 */ private String ouName; + /** + * 节点Id + */ + private Long nodeId; } @Data diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 3808cf92..73a78bfe 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -8,6 +8,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -55,6 +56,12 @@ public class ChangeRecordController implements ChangeRecordApi { return ApiResult.ok(changeRecordService.tempCreateVisaChangeRecord(req)); } + @Override + public ApiResult checkVisaWithVisaId(CheckVisaWithVisaIdReq req) { + changeRecordService.checkVisaWithVisaId(req); + return ApiResult.ok(); + } + @Override public ApiResult discussCreateVisaChangeRecord(VisaChangeDiscussCreateReq req) { return ApiResult.ok(changeRecordService.discussCreateVisaChangeRecord(req)); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index d85ab8d7..e3062734 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -121,4 +122,9 @@ public interface ChangeRecordService extends IService { void delete(ChangeRecordButtonOperationReq req); + /** + * 校验 + */ + void checkVisaWithVisaId(CheckVisaWithVisaIdReq req); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 2fc034b7..4735f018 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -127,6 +127,16 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl orgIdAndNameMap = this.buildOrgIdAndNameMap(ouIdSet); // 3 构建关联单位与人员,最终处理成一个类型与单位下,对应多个确认人 - Map> listMap = list.stream().collect(Collectors.groupingBy(e -> e.getType() + "#" + e.getOuId())); + Map> listMap = list.stream().collect(Collectors.groupingBy(e -> { + if (Objects.isNull(e.getNodeId())) { + return e.getType() + "#" + e.getOuId() + "#0"; + } + return e.getType() + "#" + e.getOuId() + "#" + e.getNodeId(); + })); return this.buildRelationOuAndPerson(listMap, personMap, orgIdAndNameMap); } @@ -245,6 +260,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl 2 ? Long.valueOf(keySplit[2]) : 0L) .ouName(StringUtils.hasText(orgIdAndNameMap.get(ouId)) ? orgIdAndNameMap.get(ouId) : "").build(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 19ebab99..ed833e37 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -43,6 +43,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; +import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -385,8 +386,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 13 Feb 2025 15:03:31 +0800 Subject: [PATCH 171/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E5=B1=95=E7=A4=BA=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 4e6b5e84..04b98798 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -153,6 +153,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; +import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT; /** * @author xudawei @@ -387,7 +388,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl formVariables = new HashMap<>(); // 传递表单数据 formVariables.put(FORM_FIELD_NO, req.getNo()); - final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); + final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); formVariables.put(FORM_FIELD_HAPPEN_TIME, sdf.format(req.getHappenTime())); formVariables.put(FORM_FIELD_TOPIC, req.getTopic()); formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject()); From 9fce1e56980ebac2697e44c1f553cf4fb32d3803 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 13 Feb 2025 16:09:33 +0800 Subject: [PATCH 172/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BB=85=E5=8F=91=E8=B5=B7=E5=AE=A1=E6=89=B9=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8D=95=E5=8F=B7=E5=94=AF=E4=B8=80=E6=80=A7?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangeApproveCreateReq.java | 3 +++ .../server/service/impl/ChangeRecordServiceImpl.java | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index f683c28a..cfe71c0c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -33,6 +33,9 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { */ private List approvePersonInfoList; + // 是否调整单号唯一性校验 + private transient boolean skipNoOnlyOnce = false; + @Data @Builder @NoArgsConstructor diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 04b98798..8aa5bb17 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1162,9 +1162,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 13 Feb 2025 16:19:03 +0800 Subject: [PATCH 173/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BB=85=E5=8F=91=E8=B5=B7=E5=AE=A1=E6=89=B9=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8D=95=E5=8F=B7=E5=94=AF=E4=B8=80=E6=80=A7?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 8aa5bb17..812a438a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1162,7 +1162,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 13 Feb 2025 17:22:58 +0800 Subject: [PATCH 174/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=8D=95=E6=8D=AE=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=89=8D=E7=9A=84=E6=A0=A1=E9=AA=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 812a438a..2487a5ff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1219,15 +1219,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); validTaskBillIfRelated(taskNos, req.getType()); - } else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) { + } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { /*整改单*/ List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); - } else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) { + } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { /*变更单*/ AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); // 关联单据合法性,是否存在,状态是否合法 From a98d601068b53f47bd5d2b2657afc70eb7472e84 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 13 Feb 2025 17:37:44 +0800 Subject: [PATCH 175/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E5=8A=A0=E4=B8=8A=E7=9B=B8=E5=85=B3=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E4=BA=BA=E7=9A=84=E5=A4=B4=E5=83=8F=E4=B8=8E=E5=B2=97=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/response/VisaDetailByIdResponse.java | 14 +++ .../service/ChangeRecordConfirmService.java | 2 +- .../impl/ChangeRecordConfirmServiceImpl.java | 99 ++++++++++++++----- .../impl/ChangeRecordLogServiceImpl.java | 10 +- .../service/impl/ChangeRecordServiceImpl.java | 2 +- .../nanopart/visa/server/utils/Constants.java | 26 +++++ 6 files changed, 123 insertions(+), 30 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index e84c2bff..92cf4173 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -267,6 +267,11 @@ public class VisaDetailByIdResponse { */ private String realName; + /** + * 头像 + */ + private String avatarUrl; + /** * 确认人personId */ @@ -281,6 +286,15 @@ public class VisaDetailByIdResponse { * 工程Id */ private Long projectId; + + /** + * 岗位Id + */ + private Long jobId; + /** + * 岗位名称 + */ + private String jobName; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index 3aede13c..9356d95a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -45,7 +45,7 @@ public interface ChangeRecordConfirmService { /** * 变更签证Id获取map */ - List listRelationByVisaId(List list); + List listRelationByVisaId(List list, Long workspaceId); /** * 根据条件查询 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 4735f018..c3ebc998 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.foundation.page.PageResp; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; @@ -20,11 +21,16 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.nanopart.visa.server.rpc.DataObjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.server.utils.Constants; +import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; +import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -71,6 +77,10 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl listRelationByVisaId(List list) { + public List listRelationByVisaId(List list, Long workspaceId) { if (CollectionUtils.isEmpty(list)) { return Lists.newArrayList(); } - // 2-1 构建人员的集合,key:personId,value:realName - Set personSet = list.stream().map(ChangeRecordConfirm::getPersonId).collect(Collectors.toSet()); - Map personMap = this.buildPersonMap(personSet); - // 2-2 构建公司的Map,orgIdAndNameMap,key:ouId,value:ouName - Set ouIdSet = list.stream().map(ChangeRecordConfirm::getOuId).collect(Collectors.toSet()); - Map orgIdAndNameMap = this.buildOrgIdAndNameMap(ouIdSet); - // 3 构建关联单位与人员,最终处理成一个类型与单位下,对应多个确认人 Map> listMap = list.stream().collect(Collectors.groupingBy(e -> { if (Objects.isNull(e.getNodeId())) { @@ -211,7 +214,22 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchOrgNodeUserDTOList(List personIds, Long ouId, Long workspaceId) { + PageResp pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() + .personIds(personIds) + .organizationalUnitId(ouId) + .workspaceId(workspaceId) + .needs(ListNodeUserReq.Needs.builder().job(true).unit(true).personProfile(true).build()).build()); + if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) { + return Lists.newArrayList(); + } + return pageResp.getData(); } /** @@ -233,16 +251,30 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildRelationOuAndPerson(Map> listMap, Map personMap, Map orgIdAndNameMap) { + private List buildRelationOuAndPerson(Map> listMap, Long workspaceId) { List returnList = Lists.newArrayList(); for (Map.Entry> entry : listMap.entrySet()) { String key = entry.getKey(); List confirmList = entry.getValue(); + if (CollectionUtils.isEmpty(confirmList)) { + continue; + } + + List orgNodeUserDTOS = this.fetchOrgNodeUserDTOList(confirmList.stream().map(ChangeRecordConfirm::getPersonId).collect(Collectors.toList()), Long.valueOf(key.split("#")[1]), workspaceId); + + Map unitNodeUserMap = orgNodeUserDTOS.stream() + .filter(item -> Objects.nonNull(item.getUnit()) && Objects.nonNull(item.getUnit().getId())) + .collect(Collectors.toMap(k -> k.getUnit().getId(), v -> StringUtils.hasText(v.getUnit().getName()) ? v.getUnit().getName() : "", (x, y) -> x)); + + Map> personNodeUserMap = orgNodeUserDTOS.stream() + .filter(item -> Objects.nonNull(item.getPersonId())) + .collect(Collectors.groupingBy(OrgNodeUserDTO::getPersonId)); + //构建单位 - VisaDetailByIdResponse.RelationUnit relationUnit = this.buildRelationUnit(key, orgIdAndNameMap); + VisaDetailByIdResponse.RelationUnit relationUnit = this.buildRelationUnit(key, unitNodeUserMap); //构建确认人 - List relationPersonList = this.buildRelationPersonList(confirmList, personMap); + List relationPersonList = this.buildRelationPersonList(confirmList, personNodeUserMap); returnList.add(VisaDetailByIdResponse.RelationOuAndPerson.builder() .relationOu(relationUnit) @@ -254,31 +286,52 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl orgIdAndNameMap) { + private VisaDetailByIdResponse.RelationUnit buildRelationUnit(String key, Map unitNodeUserMap) { String[] keySplit = key.split("#"); Long ouId = Long.valueOf(keySplit[1]); return VisaDetailByIdResponse.RelationUnit.builder() .ouId(ouId) .type(keySplit[0]) .nodeId(keySplit.length > 2 ? Long.valueOf(keySplit[2]) : 0L) - .ouName(StringUtils.hasText(orgIdAndNameMap.get(ouId)) ? orgIdAndNameMap.get(ouId) : "").build(); + .ouName(StringUtils.hasText(unitNodeUserMap.get(ouId)) ? unitNodeUserMap.get(ouId) : "").build(); } /** * 构建确认人 */ - private List buildRelationPersonList(List confirmList, Map personMap) { - return confirmList.stream().map(item -> VisaDetailByIdResponse.RelationPerson.builder() - .ouId(item.getOuId()) - .workspaceId(item.getWorkspaceId()) - .personId(item.getPersonId()) - .projectId(item.getProjectId()) - .type(item.getType()) - .realName(personMap.get(item.getPersonId())) - .build() + private List buildRelationPersonList(List confirmList,Map> personNodeUserMap) { + return confirmList.stream().map(item -> { + + List orgNodeUserDTOS = personNodeUserMap.get(item.getPersonId()); + //有班组时,优先取班组岗位 + OrgNodeUserDTO nodeUserDTO = Constants.nodeUserDTOByList(orgNodeUserDTOS); + + VisaDetailByIdResponse.RelationPerson relationPerson = VisaDetailByIdResponse.RelationPerson.builder() + .ouId(item.getOuId()) + .workspaceId(item.getWorkspaceId()) + .personId(item.getPersonId()) + .projectId(item.getProjectId()) + .type(item.getType()) + .build(); + if (Objects.nonNull(nodeUserDTO)) { + relationPerson.setRealName(nodeUserDTO.getRealName()); + + if (Objects.nonNull(nodeUserDTO.getPersonProfile())) { + relationPerson.setAvatarUrl(nodeUserDTO.getPersonProfile().getAvatarUrl()); + } + + if (Objects.nonNull(nodeUserDTO.getJob())) { + relationPerson.setJobId(nodeUserDTO.getJob().getId()); + relationPerson.setJobName(nodeUserDTO.getJob().getName()); + } + } + return relationPerson; + } ).collect(Collectors.toList()); } + + /** * 构建人员的集合,key:personId,value:realName */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index e12c72bc..f21b0fe0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -2,20 +2,20 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; +import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.dto.VisaLogDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordLogDao; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; +import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; -import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; -import cn.axzo.nanopart.visa.api.response.FetchVisaLogByVisaIdResponse; -import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; -import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -255,7 +255,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl orgNodeUserDTOS) { + OrgNodeUserDTO nodeUserDTO = CollectionUtils.isEmpty(orgNodeUserDTOS) ? OrgNodeUserDTO.builder().build() : orgNodeUserDTOS.get(0); + if (CollectionUtils.isNotEmpty(orgNodeUserDTOS)) { + for (OrgNodeUserDTO orgNodeUserDTO : orgNodeUserDTOS) { + if (orgNodeUserDTO.getJob().getCode().equals(Constants.PROJECT_TEAM_LEADER_JOB_CODE)) { + nodeUserDTO = orgNodeUserDTO; + } + } + } + return nodeUserDTO; + } } From 4b0a4f5669a209759e1c10d9c57b37c852cc0bbc Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 13 Feb 2025 18:50:38 +0800 Subject: [PATCH 176/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E5=8A=A0=E4=B8=8A=E7=9B=B8=E5=85=B3=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E4=BA=BA=E7=9A=84=E5=A4=B4=E5=83=8F=E4=B8=8E=E5=B2=97=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/response/VisaDetailByIdResponse.java | 4 ++-- .../nanopart/visa/server/service/VisaHelper.java | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 92cf4173..3dec4078 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -396,7 +396,7 @@ public class VisaDetailByIdResponse { /** * id */ - private Long id; + private Long areaId; public static List buildAreaWithObject(JSONArray relationArea) { @@ -416,7 +416,7 @@ public class VisaDetailByIdResponse { if (CollectionUtils.isEmpty(areaDetailList)) { return Lists.newArrayList(); } - return areaDetailList.stream().map(VisaDetailByIdResponse.RelationAreaDetail::getId).collect(Collectors.toList()); + return areaDetailList.stream().map(VisaDetailByIdResponse.RelationAreaDetail::getAreaId).collect(Collectors.toList()); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 9ab05daf..c2041a66 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -159,17 +159,14 @@ public class VisaHelper { * 递归专业 * codeNameMap,key:叶子结点code,value:父节点+子节点的名字 */ - private void recursionProfessional(DrawingMajorResp drawingMajorResp, String name, Map codeNameMap) { - if (Objects.isNull(drawingMajorResp) || CollectionUtils.isEmpty(drawingMajorResp.getChildren())) { + private void recursionProfessional(DrawingMajorResp drawingMajorResp, String currentName, Map codeNameMap) { + + if (CollectionUtils.isEmpty(drawingMajorResp.getChildren())) { + codeNameMap.put(drawingMajorResp.getCode(), currentName); return; } for (DrawingMajorResp resp : drawingMajorResp.getChildren()) { - - if (CollectionUtils.isNotEmpty(resp.getChildren())) { - recursionProfessional(resp, name + Constants.SPLIT_TREE_NODE_CHAT + resp.getName(), codeNameMap); - } else { - codeNameMap.put(resp.getCode(), name + Constants.SPLIT_TREE_NODE_CHAT + resp.getName()); - } + recursionProfessional(resp, currentName + Constants.SPLIT_TREE_NODE_CHAT + resp.getName(), codeNameMap); } } From 701c8ff24cd547a21ffb4710813022abf82c6f9d Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 14 Feb 2025 14:42:59 +0800 Subject: [PATCH 177/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=8F=8A=E8=AF=B4=E6=98=8E=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=BE=E6=A1=86id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/VisaChangeTempCreateReq.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 02ea0f1b..088ffe2e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -242,6 +242,11 @@ public class VisaChangeTempCreateReq { */ private Long annotationId; + /** + * 图纸图框id,{@code type}为2时使用 + */ + private Long borderId; + /** * 内容说明 */ From 21d0a466d82c3260c33d756961cfa659f8f66e6a Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 14 Feb 2025 14:46:46 +0800 Subject: [PATCH 178/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8D=95=E5=8F=B7=E4=B8=8E=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 60f98832..c4acf596 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -947,8 +947,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl wrapper.like(ChangeRecord::getTopic, filter.getKeyword())) + .and(StringUtils.hasText(filter.getKeyword()), + wrapper -> wrapper.like(ChangeRecord::getTopic, filter.getKeyword()) + .or() + .eq(ChangeRecord::getNo, filter.getKeyword())) .eq(NumberUtil.isPositiveNumber(filter.getProjectId()), ChangeRecord::getRelationProject, filter.getProjectId()) .in(CollectionUtils.isNotEmpty(filter.getInitiators()), ChangeRecord::getCreateBy, filter.getInitiators()) .in(CollectionUtils.isNotEmpty(filter.getStatuses()), ChangeRecord::getStatus, filter.getStatuses()) From 317051298639d9a764818173696d68b7ab8a3dc7 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 14 Feb 2025 15:54:02 +0800 Subject: [PATCH 179/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E4=BA=BA=E5=B2=97=E4=BD=8D=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/server/utils/Constants.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java index a6ebf48c..4fdcf262 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java @@ -2,8 +2,10 @@ package cn.axzo.nanopart.visa.server.utils; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import org.apache.commons.collections.CollectionUtils; +import org.springframework.util.StringUtils; import java.util.List; +import java.util.Objects; /** * @author xudawei@axzo.cn @@ -94,7 +96,9 @@ public class Constants { OrgNodeUserDTO nodeUserDTO = CollectionUtils.isEmpty(orgNodeUserDTOS) ? OrgNodeUserDTO.builder().build() : orgNodeUserDTOS.get(0); if (CollectionUtils.isNotEmpty(orgNodeUserDTOS)) { for (OrgNodeUserDTO orgNodeUserDTO : orgNodeUserDTOS) { - if (orgNodeUserDTO.getJob().getCode().equals(Constants.PROJECT_TEAM_LEADER_JOB_CODE)) { + if (Objects.nonNull(orgNodeUserDTO.getJob()) + && StringUtils.hasText(orgNodeUserDTO.getJob().getCode()) + && orgNodeUserDTO.getJob().getCode().equals(Constants.PROJECT_TEAM_LEADER_JOB_CODE)) { nodeUserDTO = orgNodeUserDTO; } } From f26f5fcad475af433781b3f8ed06c9f50df79afd Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 14 Feb 2025 16:52:16 +0800 Subject: [PATCH 180/341] =?UTF-8?q?feat(REQ-3300):=20=E8=AF=A6=E6=83=85-?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index c4acf596..bd6b941e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -402,7 +402,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 14 Feb 2025 16:53:01 +0800 Subject: [PATCH 181/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?IM=E6=A8=AA=E6=9D=A1=E7=9A=84=E5=93=8D=E5=BA=94=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java | 5 +++++ .../server/service/impl/ChangeRecordRelationServiceImpl.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java index 4128475e..3dfb0181 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/ImGroupTipsResp.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.api.response; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -28,4 +29,8 @@ public class ImGroupTipsResp { private List buttonList; + private VisaTypeEnum visaType; + + private String visaTypeText; + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 78718618..37b39440 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -217,6 +217,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl imGroupParticipate = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.name()) From f3d49d7ec4c902ecdc5a73d04604b1d3ae7d1570 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 14 Feb 2025 17:43:31 +0800 Subject: [PATCH 182/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=A1=E6=89=B9=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index c4acf596..12d7e01f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1389,6 +1389,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 14 Feb 2025 18:06:28 +0800 Subject: [PATCH 183/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=BE=85=E6=8F=90=E6=8A=A5=E6=95=B0=E6=8D=AE=E4=BB=85=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E4=BA=BA=E5=8F=AF=E8=A7=81=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index bd6b941e..10d596ac 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -867,6 +867,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); List changeRecordList = Lists.newArrayList(); // if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) { From 9faf2a277fed27b40bbd523385c51cb8bd59c92b Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 14 Feb 2025 18:23:11 +0800 Subject: [PATCH 184/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E6=8C=89=E9=92=AE=E6=94=BE=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/response/VisaDetailByIdResponse.java | 13 +++++++++++-- .../server/controller/ChangeRecordController.java | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 3dec4078..6ad2d56f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -357,7 +357,12 @@ public class VisaDetailByIdResponse { if (CollectionUtils.isEmpty(professionalList)) { return Lists.newArrayList(); } - return professionalList; + + List filter = professionalList.stream().filter(item -> Objects.nonNull(item) && StringUtils.isNotBlank(item.getCode())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filter)) { + return Lists.newArrayList(); + } + return filter; } /** @@ -407,7 +412,11 @@ public class VisaDetailByIdResponse { if (CollectionUtils.isEmpty(relationAreaList)) { return Lists.newArrayList(); } - return relationAreaList; + List filter = relationAreaList.stream().filter(item -> Objects.nonNull(item) && Objects.nonNull(item.getAreaId())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filter)) { + return Lists.newArrayList(); + } + return filter; } public static List buildAreaWithId(JSONArray relationArea) { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 73a78bfe..11e5c782 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -87,8 +87,8 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) { VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId()); - resp.setBtnList(VisaButtonTypeEnum.all()); -// resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); +// resp.setBtnList(VisaButtonTypeEnum.all()); + resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); return ApiResult.ok(resp); } From ff35b74ef00d70df4eb0a770f232bc799a3c39f6 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 14 Feb 2025 18:36:51 +0800 Subject: [PATCH 185/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=A1=E6=89=B9=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?,=E4=BB=A5=E5=8F=8A=E5=AE=A1=E6=89=B9=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E4=B8=80=E4=BA=9B=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/workflow/BasicLogSupport.java | 7 ++++++- .../ProcessInstanceAllEventHandler.java | 6 +++++- .../task/ProcessTaskAllEventHandler.java | 6 ++++-- .../service/impl/ChangeRecordServiceImpl.java | 18 +++++++++++------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java index 7221f10f..16af4be1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/BasicLogSupport.java @@ -29,7 +29,7 @@ public abstract class BasicLogSupport { return buildLogUserInfo(oneUserInfo); } protected String buildLogUserInfo(OrgNodeUserBriefInfoResp user) { - String userInfo = ""; + String userInfo = ""; if (Objects.nonNull(user)) { userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")"; } @@ -37,10 +37,15 @@ public abstract class BasicLogSupport { } protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) { + if (Objects.isNull(assigner)) { + return null; + } List users = visaOrganizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder() .workspaceId(Long.valueOf(assigner.getTenantId())) .ouId(Long.valueOf(assigner.getOuId())) .personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId()))) + .needUnit(true) + .needJob(true) .build()); return CollectionUtils.isEmpty(users) ? null : users.get(0); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 2f4cc3ed..987f5057 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -173,11 +173,15 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P changeRecordRelationService.updateById(changeRecordRelation); }); + ChangeRecord visa = changeRecordService.getById(visaId); if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) { + changeRecordService.changeStatus(ChangeStatusRequest.builder() + .visaId(visaId) + .updateStatus(VisaStatusEnum.COMPLETED) + .build()); return; } // 回退到待提报或决策中 - ChangeRecord visa = changeRecordService.getById(visaId); changeRecordService.changeStatus(ChangeStatusRequest.builder() .visaId(visaId) .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index f97d7118..ed02988b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -10,6 +10,8 @@ import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO; import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler; import org.springframework.stereotype.Component; +import java.util.Objects; + import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; @@ -53,8 +55,8 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) .action(dto.getType().getTag()) - .title(String.format(APPROVED_AGRESS.getTitle(), user.getRealName())) - .content(String.format(APPROVED_AGRESS.getContent(), buildLogUserInfo(user))) + .title(String.format(APPROVED_AGRESS.getTitle(), Objects.isNull(user) ? "" : user.getRealName())) + .content(String.format(APPROVED_AGRESS.getContent(), Objects.isNull(user) ? "系统自动通过" : buildLogUserInfo(user))) .build(); eventProducer.send(VisaChangeLogPayload.form(log)); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 75bfb1a3..6d8046b7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -90,7 +90,6 @@ import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; -import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; @@ -154,6 +153,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_COD import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT; +import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING; /** * @author xudawei @@ -776,7 +776,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 15 Feb 2025 00:38:21 +0800 Subject: [PATCH 186/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E7=BB=86=E5=8C=96?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E5=88=9B=E5=BB=BA=E6=B5=81=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/constant/VisaConstant.java | 8 +- .../service/impl/ChangeRecordServiceImpl.java | 84 ++++++++++++++++++- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index b761e8b7..481e9d7f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -45,8 +45,14 @@ public interface VisaConstant { String FORM_FIELD_REASON = "reason"; // 发生区域 String FORM_FIELD_RELATION_AREA = "relationArea"; - // 发生内容 + // 发生内容及说明 String FORM_FIELD_CONTEXT_DESCRIPTION = "contextDescription"; + String FORM_FIELD_CONTEXT = "context"; + String FORM_FIELD_DESCRIPTION = "description"; + // 相关单位和人员 + String FORM_FIELD_UNIT_PERSON = "unitPerson"; + String FORM_FIELD_UNIT = "unit"; + String FORM_FIELD_PERSON = "person"; // 变更金额 String FORM_FIELD_AMOUNT_CHANGE = "amountChange"; // 关联的任务单单据 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6d8046b7..26f21fb2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -6,6 +6,7 @@ import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes; import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; +import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; @@ -26,6 +27,7 @@ import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.GroupType; import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; +import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; @@ -135,9 +137,12 @@ import java.util.stream.Collectors; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_DESCRIPTION; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_NO; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_PERSON; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_REASON; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL; @@ -146,6 +151,8 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT_PERSON; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; @@ -714,11 +721,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl> buildUnitPerson(List list, Long workspaceId) { + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + List ouIds = list.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuId).distinct().collect(Collectors.toList()); + Map unitMap = organizationalUnitGateway.list(OrganizationalUnitQuery.builder().unitIds(ouIds).build()) + .stream().collect(Collectors.toMap(OrganizationalUnitVO::getId, Function.identity(), (s, t) -> s)); + + Map> unitGroupBy = list.stream().collect(Collectors.groupingBy(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuId, Collectors.toList())); + List> unitPersons = new ArrayList<>(); + + unitGroupBy.forEach((unitId, persons) -> { + Map unitPerson = new HashMap<>(); + OrganizationalUnitVO unitVo = unitMap.get(unitId); + unitPerson.put(FORM_FIELD_UNIT, Objects.isNull(unitVo) ? "" : unitVo.getName() + "(" + OrganizationalUnitTypeEnum.getByType(unitVo.getType()).getDesc() + ")"); + List personInfos = getPersonInfos(workspaceId, unitId, persons); + unitPerson.put(FORM_FIELD_PERSON, buildPersonInfosStr(personInfos)); + unitPersons.add(unitPerson); + }); + + return unitPersons; + } + + private String buildPersonInfosStr(List personInfos) { + StringBuilder personInfosStr = new StringBuilder(); + if (CollectionUtils.isEmpty(personInfos)) { + return personInfosStr.toString(); + } + + for (OrgNodeUserDTO info : personInfos) { + if (personInfosStr.length() > 0) { + personInfosStr.append(","); + } + personInfosStr.append(info.getPersonProfile().getRealName()) + .append("-") + .append(info.getJob().getName()); + } + return personInfosStr.toString(); + } + + private List getPersonInfos(Long workspaceId, Long unitId, List persons) { + PageResp pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() + .personIds(persons.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId).collect(Collectors.toList())) + .organizationalUnitId(unitId) + .workspaceId(workspaceId) + .needs(ListNodeUserReq.Needs.builder().job(true).personProfile(true).build()).build()); + if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) { + return Collections.emptyList(); + } + return pageResp.getData(); + } + + private List> buildContextDescription(List list) { + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + List> contextDescriptions = new ArrayList<>(); + list.forEach(i -> { + Map contextDescription = new HashMap<>(); + UploadFieldDTO uploadFieldDTO = new UploadFieldDTO(); + uploadFieldDTO.setFileKey(i.getFileKey()); + uploadFieldDTO.setFileName(i.getFileName()); + uploadFieldDTO.setFileUrl(i.getFileUrl()); + contextDescription.put(FORM_FIELD_CONTEXT, uploadFieldDTO); + contextDescription.put(FORM_FIELD_DESCRIPTION, i.getText()); + contextDescriptions.add(contextDescription); + }); + return contextDescriptions; + } + /** * 更新 * @@ -1381,6 +1460,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 15 Feb 2025 12:51:31 +0800 Subject: [PATCH 187/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E7=BB=93=E6=9E=9C=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessInstanceAllEventHandler.java | 13 ++++++++++--- .../service/impl/ChangeRecordServiceImpl.java | 6 +++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 987f5057..2ed8dbff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -86,6 +86,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); return StringUtils.hasText(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : ""; } + @Override public void onCompleted(ProcessInstanceDTO dto) { String visaTypeDesc = parseVisaType(dto); @@ -157,15 +158,21 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .eq(ChangeRecord::getIsDelete, 0) .oneOpt() .ifPresent(changeRecord -> { - changeRecord.setApprovalStatus(resultEnum.getStatus()); - changeRecord.setApprovalCompleteTime(new Date()); + if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) { + changeRecord.setApprovalStatus(resultEnum.getStatus()); + changeRecord.setApprovalCompleteTime(new Date()); + } else { + changeRecord.setApprovalId(""); + changeRecord.setApprovalStatus(""); + changeRecord.setApprovalCompleteTime(null); + } changeRecordService.updateById(changeRecord); }); // 更新关联表审批信息 changeRecordRelationService.lambdaQuery() .eq(ChangeRecordRelation::getVisaId, visaId) - .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.getCode()) + .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.name()) .eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId()) .oneOpt() .ifPresent(changeRecordRelation -> { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 26f21fb2..3bf809ed 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -733,9 +733,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { - amountDesc = "增加" + req.getAmountChange().toPlainString() + "元"; + amountDesc = "增加" + req.getAmountChange().abs().toPlainString() + "元"; } else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { - amountDesc = "减少" + req.getAmountChange().toPlainString() + "元"; + amountDesc = "减少" + req.getAmountChange().abs().toPlainString() + "元"; } formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc); } @@ -861,7 +861,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Sat, 15 Feb 2025 18:11:47 +0800 Subject: [PATCH 188/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E5=B1=9E=E6=80=A7=E7=9A=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java index 4004977d..61ae9886 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecord.java @@ -5,6 +5,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; @@ -127,7 +128,7 @@ public class ChangeRecord extends BaseEntity { /** * 最终审批时间 */ - @TableField(value = "approval_complete_time") + @TableField(value = "approval_complete_time", updateStrategy = FieldStrategy.IGNORED) private Date approvalCompleteTime; /** From fde489fb476201da5bed3a5ebcdba7b3bf659fbd Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 17 Feb 2025 09:35:15 +0800 Subject: [PATCH 189/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E8=BF=87=E6=BB=A4=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E7=8A=B6=E6=80=81=E5=8D=95=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangePageSearchReq.java | 32 ++++++++++++++++--- .../service/impl/ChangeRecordServiceImpl.java | 12 ++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index b66c49da..f0d56ed9 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -1,7 +1,7 @@ package cn.axzo.nanopart.visa.api.request; -import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -69,9 +69,9 @@ public class VisaChangePageSearchReq { /** * 变更金额区间 *

- * 0:最小值 1:最大值 - * 当最小最大值均为正值表示增加,均为负值表示减少 - * 元素均为0表示金额不变 + * 0:最小值 1:最大值 + * 当最小最大值均为正值表示增加,均为负值表示减少 + * 元素均为0表示金额不变 *

*/ private List amountChange; @@ -114,4 +114,28 @@ public class VisaChangePageSearchReq { */ private Boolean needRelatedBill = false; + /** + * 调用场景 + *

+ * PAGE: 分页列表页面调用 + * SELECT: 选择器页面调用 + *

+ */ + private FromEnum from; + + public static enum FromEnum { + PAGE("分页列表页面调用"), + SELECT("选择器页面调用"); + + private final String desc; + + FromEnum(String desc) { + this.desc = desc; + } + + public String getDesc() { + return desc; + } + } + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 75bfb1a3..c1c9a131 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1069,7 +1069,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl> operateBtnMap = visaHelper.fetchBtnsByBizTypeAndStatus(records, req.getCurrentPersonId(), req.getCurrentOuId(), req.getCurrentWorkspaceId()); /*组装信息*/ - return records.stream() + List respList = records.stream() .map(r -> { VisaChangePageSearchResp resp = BeanUtil.copyProperties(r, VisaChangePageSearchResp.class); // 工程 @@ -1083,6 +1083,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl !VisaStatusEnum.TO_REPORT.equals(r.getStatus()) + && VisaStatusEnum.FORBIDED.equals(r.getStatus())) + .collect(Collectors.toList()); + } + return respList; } private Map getProjectInfoMapById(List projectIdList) { From 29793894097d80f73d14033e16312f56a0236009 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 17 Feb 2025 09:56:54 +0800 Subject: [PATCH 190/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=83=A8=E5=88=86=20gateway=20=E7=9A=84=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java | 4 ++-- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index a97e148e..fca9c69a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -30,8 +30,8 @@ public class WorkflowGateway { } @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "中止流程实例") - public void processInstanceAbort(BpmnProcessInstanceAbortDTO dto) { - workflowCoreService.abortProcessInstance(dto); + public Boolean processInstanceAbort(BpmnProcessInstanceAbortDTO dto) { + return workflowCoreService.abortProcessInstance(dto); } @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "查询某个人是否是指定流程的审批人") diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fadd71da..99e1b066 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1423,7 +1423,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 10:15:01 +0800 Subject: [PATCH 191/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=9A=84=E7=8A=B6=E6=80=81=E6=98=AF=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=8A=B6=E6=80=81=E5=88=99=E8=BF=94=E5=9B=9Efalse?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=86=8D=E6=8A=9B=E5=87=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 75bfb1a3..8cdebbe7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -241,7 +241,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl preStatusList = this.buildPreStatus(request.getUpdateStatus()); // 2 更新状态 - this.updateVisaStatus(request.getVisaId(), preStatusList, request.getUpdateStatus()); + if (!this.updateVisaStatus(request.getVisaId(), preStatusList, request.getUpdateStatus())) { + return false; + } // 3 新增日志 this.addLogWhenChangeStatus(request, VisaLogParam.builder() .personId(request.getPersonId()) @@ -274,6 +276,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 10:25:39 +0800 Subject: [PATCH 192/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E6=9C=AA=E6=9F=A5=E8=AF=A2=E5=88=B0=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 00883d8d..0d35c7f0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -375,6 +375,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl changeRecordBills = changeRecordBillService.listById(visaId); @@ -1398,7 +1401,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 10:34:47 +0800 Subject: [PATCH 193/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?IM=E5=88=9B=E5=BB=BA=E7=BE=A4=E5=90=8E=EF=BC=8C=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8D=A1=E7=89=87=E5=92=8C=E9=A6=96=E6=9D=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/ImGroupsCreatedEventHandler.java | 17 ++++++----------- .../visa/server/service/VisaHelper.java | 11 +++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 16 ++-------------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index 61b178be..f6f42c09 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -27,6 +27,7 @@ import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.server.service.VisaHelper; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Sets; @@ -37,7 +38,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -91,13 +91,14 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe Map bizGroupInfo = group.getBizGroupInfo(); HashSet imReceiveAccounts = Sets.newHashSet(String.valueOf(group.getTid())); GroupGetOwnerRequest ownerRequest = new GroupGetOwnerRequest(); + ownerRequest.setTid(group.getTid()); GroupGetOwnerResponse groupOwner = msgCenterGateway.getGroupOwner(ownerRequest); AssertUtil.isTrue(Objects.nonNull(groupOwner) && Objects.nonNull(groupOwner.getOwner()), "im group owner is null"); GroupMemberInfo owner = groupOwner.getOwner(); - Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + Long visaId = Long.valueOf(bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, 0).toString()); String visaType = (String) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, ""); - Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L); + Long ownerWorkspaceId = Long.valueOf(bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0).toString()); ChangeRecord visa = changeRecordService.getById(visaId); AssertUtil.notNull(visa, "visa record is null"); @@ -121,20 +122,14 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe ChangeRecordConfirm creator = creators.get(0); OrganizationalUnitVO unitInfo = organizationalUnitGateway.getUnitInfo(creator.getOuId()); PersonProfileDto profile = visaProfileGateway.getProfile(creator.getPersonId()); - String amountDesc = "不变"; - if (visa.getAmountChange().compareTo(BigDecimal.ZERO) > 0) { - amountDesc = "增加" + visa.getAmountChange().toPlainString() + "元"; - } else if (visa.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { - amountDesc = "减少" + visa.getAmountChange().toPlainString() + "元"; - } cardRequest.setBizParam(new JSONObject(Maps.of( "topic", group.getName(), "reason", visa.getReason(), "initiatorName", profile.getRealName(), "initiatorUnitName", unitInfo.getName(), - "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), - "amountChange", amountDesc + "visaType", VisaTypeEnum.valueOf(visaType).getDesc(), + "amountChange", VisaHelper.buildChangeAmount(visa.getAmountChange()) ))); msgCenterGateway.sendCardToCroup(cardRequest); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index c2041a66..f1540924 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -27,6 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -229,4 +230,14 @@ public class VisaHelper { }); return returnMap; } + + public static String buildChangeAmount(BigDecimal changeAmount) { + String amountDesc = "不变"; + if (changeAmount.compareTo(BigDecimal.ZERO) > 0) { + amountDesc = "增加" + changeAmount.abs().toPlainString() + "元"; + } else if (changeAmount.compareTo(BigDecimal.ZERO) < 0) { + amountDesc = "减少" + changeAmount.abs().toPlainString() + "元"; + } + return amountDesc; + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0d35c7f0..e8e53987 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -741,13 +741,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { - amountDesc = "增加" + req.getAmountChange().abs().toPlainString() + "元"; - } else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { - amountDesc = "减少" + req.getAmountChange().abs().toPlainString() + "元"; - } - formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc); + formVariables.put(FORM_FIELD_AMOUNT_CHANGE, VisaHelper.buildChangeAmount(req.getAmountChange())); } // 三种单据 @@ -1547,12 +1541,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl 0) { - amountDesc = "增加" + visa.getAmountChange().toPlainString() + "元"; - } else if (visa.getAmountChange().compareTo(BigDecimal.ZERO) < 0) { - amountDesc = "减少" + visa.getAmountChange().toPlainString() + "元"; - } cardRequest.setBizParam(new JSONObject(Maps.of( "topic", visa.getTopic(), @@ -1560,7 +1548,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 10:45:36 +0800 Subject: [PATCH 194/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BB=8E=20IM=20=E7=BE=A4=E4=B8=AD=E8=8E=B7=E5=8F=96=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/im/ImGroupAddMembersEventHandler.java | 7 ++++--- .../mq/listener/im/ImGroupRemoveMembersEventHandler.java | 3 +-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index d27d18b1..a43b1d31 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -66,9 +66,10 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing Map profileMap = visaProfileGateway.getProfileMap(Lists.newArrayList(group.getOwnerPersonId(), member.getPersonId())); - String visaId = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); + + Long visaId = Long.valueOf(group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, 0).toString()); String visaType = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, ""); - Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L); + Long workspaceId = Long.valueOf(group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0).toString()); PersonProfileDto memberProfile = profileMap.getOrDefault(member.getPersonId(), null); PersonProfileDto ownerProfile = profileMap.getOrDefault(group.getOwnerPersonId(), null); @@ -83,7 +84,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing .imReceiveModel(new PersonV3DTO.ReceiveModel(member.getPersonOuId(), workspaceId)) .build())); notice.setBizEventMappingCode(refreshableConfiguration.getImGroupAddMemberNoticeEventCode()); - notice.setBizCode(visaId); + notice.setBizCode(String.valueOf(visaId)); notice.setBizExtParams(new JSONObject(Maps.of( "initiatorName", ownerProfile.getRealName(), "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java index c2ab3bf6..047969d9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java @@ -55,8 +55,7 @@ public class ImGroupRemoveMembersEventHandler implements EventHandler, Initializ } private void removeMemberVote(GroupInfo group, GroupMemberInfo member) { - Long visaId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, ""); - + Long visaId = Long.valueOf(group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, 0).toString()); changeRecordRelationService.clearImOperationParticipate(ImGroupOperationClearReq.builder() .clearAll(false) From c085dfa68941178816e2f7701e8639cd8b106775 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 17 Feb 2025 11:20:03 +0800 Subject: [PATCH 195/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E5=8F=98=E9=87=8F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 481e9d7f..95bfe821 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -16,7 +16,7 @@ public interface VisaConstant { /** * 用于发送待办的变量名 */ - String WORKFLOW_PENDING_TOPIC = "theme"; + String WORKFLOW_PENDING_TOPIC = "topic"; String MSG_CENTER_APP_CODE = "nanopart-visa"; /** * IM 群的扩展信息:变洽签 ID From df7303568f88c7b1d00fe51859aeb89c476c69cb Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 17 Feb 2025 11:21:31 +0800 Subject: [PATCH 196/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E8=BF=87=E6=BB=A4=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E7=8A=B6=E6=80=81=E5=8D=95=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 数据过滤方案可能会导致分页存在每页不足数量的问题 --- .../service/impl/ChangeRecordServiceImpl.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 99e1b066..8d5085b8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1050,6 +1050,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl> operateBtnMap = visaHelper.fetchBtnsByBizTypeAndStatus(records, req.getCurrentPersonId(), req.getCurrentOuId(), req.getCurrentWorkspaceId()); /*组装信息*/ - List respList = records.stream() + return records.stream() .map(r -> { VisaChangePageSearchResp resp = BeanUtil.copyProperties(r, VisaChangePageSearchResp.class); // 工程 @@ -1162,16 +1171,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl !VisaStatusEnum.TO_REPORT.equals(r.getStatus()) - && VisaStatusEnum.FORBIDED.equals(r.getStatus())) - .collect(Collectors.toList()); - } - return respList; } private Map getProjectInfoMapById(List projectIdList) { From 20135c3a9bf1e10a70aadfd832dd5926e3104859 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 17 Feb 2025 11:29:03 +0800 Subject: [PATCH 197/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E5=8F=98=E9=87=8F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java | 1 + .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 +++ 2 files changed, 4 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 95bfe821..09554c0b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -17,6 +17,7 @@ public interface VisaConstant { * 用于发送待办的变量名 */ String WORKFLOW_PENDING_TOPIC = "topic"; + String WORKFLOW_PENDING_INITIATOR_NAME = "initiatorName"; String MSG_CENTER_APP_CODE = "nanopart-visa"; /** * IM 群的扩展信息:变洽签 ID diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 7b9d9255..e635671f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -157,6 +157,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_INITIATOR_NAME; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT; @@ -772,6 +773,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl pendingVariables = new HashMap<>(); + PersonProfileDto profile = visaProfileGateway.getProfile(req.getOperatorPersonId()); + pendingVariables.put(WORKFLOW_PENDING_INITIATOR_NAME, profile.getRealName()); pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic()); processDto.setPendingVariables(pendingVariables); processDto.setCooperationOrg(new CooperationOrgDTO()); From 86e8f065bf59539526c47aa3e4090cd159739534 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 17 Feb 2025 13:44:12 +0800 Subject: [PATCH 198/341] =?UTF-8?q?feat(REQ-3300):=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=AD=BE=E8=AF=81=E8=AE=B0=E5=BD=95=E5=8F=91=E8=B5=B7=E4=BA=BA?= =?UTF-8?q?nodeId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeTempCreateReq.java | 2 ++ .../service/impl/ChangeRecordServiceImpl.java | 19 ++++++------------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 088ffe2e..70b79257 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -157,6 +157,8 @@ public class VisaChangeTempCreateReq { private Integer operatorOuType; + private Long operatorNodeId; + /** * 操作人peronId */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 7b9d9255..ae38cf5e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -25,10 +25,8 @@ import cn.axzo.im.center.api.vo.req.GroupDismissRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.GroupType; -import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; -import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; @@ -512,18 +510,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl shipRespList = visaCooperateShipGateway.genericQuery(shipQueryReq); - AssertUtil.notEmpty(shipRespList, "操作人所在单位信息不能为空"); - req.setOperatorOuType(shipRespList.get(0).getCooperateType()); - } + ChangeRecord changeRecord; List confirmPerson = Lists.newArrayList(); VisaAddLogContext oldContext = null; @@ -1240,6 +1232,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 14:32:40 +0800 Subject: [PATCH 199/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=9B=B8=E5=85=B3=E7=9A=84=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordRelationServiceImpl.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 37b39440..c5459329 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -228,8 +228,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl countMap = imGroupParticipate.stream() .collect(Collectors.groupingBy(ChangeRecordRelation::getVarExt, Collectors.counting())); - Long agreeCount = countMap.getOrDefault(VisaButtonTypeEnum.AGREE.getCode(), 0L); - Long rejectCount = countMap.getOrDefault(VisaButtonTypeEnum.REJECT.getCode(), 0L); + Long agreeCount = countMap.getOrDefault(VisaButtonTypeEnum.AGREE.name(), 0L); + Long rejectCount = countMap.getOrDefault(VisaButtonTypeEnum.REJECT.name(), 0L); resp.setTipsText(String.format(IM_GROUP_OWNER_TIPS, req.getGroupTotalPersonCount() - 1, imGroupParticipate.size(), agreeCount, rejectCount)); switch (record.getStatus()) { @@ -238,20 +238,20 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 14:51:59 +0800 Subject: [PATCH 200/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=85=B3=E8=81=94=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java | 3 ++- .../server/controller/ChangeRecordRelationController.java | 2 +- .../workflow/process/ProcessInstanceAllEventHandler.java | 4 ++-- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java index 4388bb53..c05d9322 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaRelationFieldEnum.java @@ -20,7 +20,8 @@ public enum VisaRelationFieldEnum { RECTIFICATION_ORDER("rectification_order", "整改单"), VISA_ORDER("visa_order", "变洽签变更单"), ATTACHMENT("attachment", "附件"), - PROCESS_INSTANCE("process_instance", "审批实例"), + PROCESS_INSTANCE_OF_VISA("process_instance_of_visa", "变洽签审批实例"), + PROCESS_INSTANCE_OF_ESS("process_instance_of_ess", "用印审批实例"), ORDER("order", "单据"), IM_GROUP_PARTICIPATE("im_group_participate", "im群聊参与人"), ; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index a9cdd415..c799cef3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -36,7 +36,7 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { public ApiResult> listByVisaId(VisaRelationReq req) { return ApiResult.ok(changeRecordRelationService.findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) - .varName(VisaRelationFieldEnum.PROCESS_INSTANCE.name()) + .varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA.name()) .build()) .stream().sorted(Comparator.comparing(ChangeRecordRelation::getCreateAt)) .map(i -> VisaRelationResp.builder() diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 2ed8dbff..c615c563 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -33,7 +33,7 @@ import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; -import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE; +import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA; /** * 工作流广播的实例维度的所有事件类型 @@ -172,7 +172,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P // 更新关联表审批信息 changeRecordRelationService.lambdaQuery() .eq(ChangeRecordRelation::getVisaId, visaId) - .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.name()) + .eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE_OF_VISA.name()) .eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId()) .oneOpt() .ifPresent(changeRecordRelation -> { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 8bfad4e8..e4cdc4d3 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -860,7 +860,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 16:59:22 +0800 Subject: [PATCH 201/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BA=9F=E7=BA=B8=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 3 +++ .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 + 2 files changed, 4 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index c5459329..a0cdd637 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -349,6 +349,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl ids) { + if (CollectionUtils.isEmpty(ids)) { + return false; + } return lambdaUpdate().in(ChangeRecordRelation::getId, ids) .setSql("is_delete = id") .update(); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e4cdc4d3..85d8b0de 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1395,6 +1395,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 17:17:47 +0800 Subject: [PATCH 202/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?IM=E7=BE=A4=E4=B8=AD=E6=9F=A5=E8=AF=A2=E5=8F=82=E4=B8=8E?= =?UTF-8?q?=E4=BA=BA=E7=9A=84=20tips=20=E6=93=8D=E4=BD=9C=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 10 +++++----- .../server/service/impl/ChangeRecordServiceImpl.java | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index a0cdd637..7f377c1c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -281,7 +281,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl any = imGroupParticipate.stream() .filter(i -> Objects.equals(i.getCreateBy(), req.getPersonId())) - .filter(i -> Objects.equals(i.getContentExt(), String.valueOf(req.getOuId()))) + .filter(i -> Objects.equals(i.getContent(), String.valueOf(req.getOuId()))) .findAny(); PersonProfileDto profile = visaProfileGateway.getProfile(record.getCreateBy()); if (any.isPresent()) { @@ -290,14 +290,14 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 17:26:54 +0800 Subject: [PATCH 203/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=BE=A4=E8=A7=A3=E6=95=A3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java | 5 ----- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java index 037c71d6..81f7f07b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/MQEventEnum.java @@ -3,8 +3,6 @@ package cn.axzo.nanopart.visa.api.enums; import cn.axzo.framework.rocketmq.Event; import lombok.Getter; -import java.util.Arrays; - /** * @Author zr * @Date 2024/3/19 18:01 @@ -30,7 +28,4 @@ public enum MQEventEnum { this.desc = desc; } - public static MQEventEnum getByName(String name){ - return Arrays.stream(MQEventEnum.values()).filter(item -> item.name().equals(name)).findFirst().orElse(null); - } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index d4fa3835..2a9f29b4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1411,7 +1411,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 17:47:54 +0800 Subject: [PATCH 204/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=BE=A4=E8=A7=A3=E6=95=A3=E5=8A=9F=E8=83=BD=E5=92=8C=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 2a9f29b4..19a05058 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -646,6 +646,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 17:54:45 +0800 Subject: [PATCH 205/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e4cdc4d3..894aa0e0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -646,6 +646,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 17 Feb 2025 19:50:21 +0800 Subject: [PATCH 206/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E5=8F=98=E6=9B=B4=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/server/service/VisaHelper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index f1540924..65bfb014 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -232,6 +232,9 @@ public class VisaHelper { } public static String buildChangeAmount(BigDecimal changeAmount) { + if (Objects.isNull(changeAmount)) { + return ""; + } String amountDesc = "不变"; if (changeAmount.compareTo(BigDecimal.ZERO) > 0) { amountDesc = "增加" + changeAmount.abs().toPlainString() + "元"; From de2f0d5128796566a8001b2359f470a08a61b5c3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 17 Feb 2025 20:18:22 +0800 Subject: [PATCH 207/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8D=95=E7=BA=AF=E5=88=9B=E5=BB=BA=E6=B5=81=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 19a05058..ace669c8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -808,8 +808,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 18 Feb 2025 11:06:25 +0800 Subject: [PATCH 208/341] =?UTF-8?q?feat(REQ-3300)=20-=20bill=20=E8=A1=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=B3=E8=81=94=E7=8A=B6=E6=80=81=E6=A0=87?= =?UTF-8?q?=E8=AF=86=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/server/domain/ChangeRecordBill.java | 9 ++++++++- .../visa/server/service/ChangeRecordBillService.java | 8 ++++++++ .../server/service/impl/ChangeRecordBillServiceImpl.java | 8 +++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java index c0fb9c38..c9c3cba8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java @@ -1,8 +1,8 @@ package cn.axzo.nanopart.visa.server.domain; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; -import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -57,6 +57,13 @@ public class ChangeRecordBill extends BaseEntity { */ @TableField(value = "bill_type") private VisaBillTypeEnum billType; + + /** + * 单据被关联状态 + */ + @TableField(value = "relation_status") + private Boolean relationStatus; + /** * 额外信息 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index 97c342df..1e695315 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -25,6 +25,14 @@ public interface ChangeRecordBillService extends IService { */ Boolean updateBill(Long visaId, List dtoList); + /** + * 更新关联单据的被关联状态 + * + * @param visaId + * @param related + * @return + */ + Boolean billRelationStatus(Long visaId, Boolean related); /** * 删除 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 0aeeba8f..875de23d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -41,13 +41,19 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl dtoList) { - List billList = BeanUtil.copyToList(dtoList, ChangeRecordBill.class); // 删除 this.deleteByVisaId(visaId); // 插入 return this.addBill(dtoList); } + public Boolean billRelationStatus(Long visaId, Boolean related) { + return this.lambdaUpdate().eq(ChangeRecordBill::getVisaId, visaId) + .eq(ChangeRecordBill::getIsDelete, 0) + .set(ChangeRecordBill::getRelationStatus, related) + .update(); + } + /** * 删除 */ From 2dd863a67429d05718f134cb0ec16fd0449987ff Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 18 Feb 2025 11:15:41 +0800 Subject: [PATCH 209/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=AE=9E=E4=BE=8B=E7=9B=91=E5=90=AC=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessInstanceAllEventHandler.java | 14 ++++---------- .../service/impl/ChangeRecordServiceImpl.java | 3 +++ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index c615c563..e0594fe5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,12 +1,10 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; import cn.axzo.framework.rocketmq.EventProducer; -import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; -import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport; @@ -19,14 +17,11 @@ import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; -import com.google.common.collect.Lists; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.Date; -import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; @@ -150,7 +145,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P } private void updateChangeRecordApprovalStatus(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum resultEnum) { - // 更新主表审批信息 + // 更新主表审批状态信息 Long visaId = Long.valueOf(dto.getBusinessKey()); changeRecordService.lambdaQuery() .eq(ChangeRecord::getId, visaId) @@ -194,9 +189,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) .build()); - if (Objects.isNull(visa.getImGroupId())) { - List bills = changeRecordBillService.findMainBill(VisaBillTypeEnum.DESIGN_VISA, Lists.newArrayList(visaId)); - changeRecordBillService.deleteByCondition(bills.stream().map(ChangeRecordBill::getId).collect(Collectors.toList()), VisaBillTypeEnum.DESIGN_VISA); - } + // 取消当前主单据关联的其他单据的关联状态 + changeRecordBillService.billRelationStatus(visaId, false); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ace669c8..96c414eb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -865,6 +865,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildApprovers(List approvePersonInfoList) { From 74569127f444a739328170f89b44bef56936c9c1 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 14:03:51 +0800 Subject: [PATCH 210/341] =?UTF-8?q?feat(REQ-3300):=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AD=90=E5=8D=95=E6=8D=AE=E5=85=B3=E8=81=94=E7=9A=84=E4=B8=BB?= =?UTF-8?q?=E5=8D=95=E6=8D=AEapi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 11 +++++ .../visa/api/request/GetBillIfRelatedReq.java | 49 +++++++++++++++++++ .../controller/ChangeRecordController.java | 12 ++++- .../service/ChangeRecordBillService.java | 12 ++++- .../impl/ChangeRecordBillServiceImpl.java | 39 +++++++++++++++ 5 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 94111ba5..8148bf2b 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -6,6 +6,7 @@ import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; +import cn.axzo.nanopart.visa.api.request.GetBillIfRelatedReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * @author xudawei @@ -154,4 +156,13 @@ public interface ChangeRecordApi { */ @PostMapping("/api/visa/change/checkVisaWithVisaId") ApiResult checkVisaWithVisaId(@Validated @RequestBody CheckVisaWithVisaIdReq req); + + /** + * 获取子单据的关联状态 + * + * @param req {@link GetBillIfRelatedReq} + * @return Map true:关联 false:不关联 + */ + @PostMapping("/api/visa/change/getBillIfRelated") + ApiResult> getBillIfRelated(@RequestBody @Validated GetBillIfRelatedReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java new file mode 100644 index 00000000..3230a8b9 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java @@ -0,0 +1,49 @@ +package cn.axzo.nanopart.visa.api.request; + +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/18 11:09 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GetBillIfRelatedReq { + + /** + * 主单据类型 + * + * @see VisaTypeEnum + */ + @NotNull(message = "type不能为空") + private VisaTypeEnum type; + + /** + * 子单据类型 + * + * @see VisaBillTypeEnum + */ + @NotNull(message = "billType不能为空") + private VisaBillTypeEnum billType; + + /** + * 子单据id + *

+ * {@code billType}为{@link VisaBillTypeEnum#TASK}时,为任务单号
+ * {@code billType}为{@link VisaBillTypeEnum#RECTIFY}时,为整改单id
+ * {@code billType}为{@link VisaBillTypeEnum#DESIGN_VISA}时,为设计变更单id} + *

+ */ + private List billIds; +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 11e5c782..9c7ef008 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -4,12 +4,12 @@ import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi; -import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; import cn.axzo.nanopart.visa.api.request.FetchVisaAllConfirmReq; +import cn.axzo.nanopart.visa.api.request.GetBillIfRelatedReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq; @@ -22,6 +22,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import lombok.RequiredArgsConstructor; @@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -51,6 +53,9 @@ public class ChangeRecordController implements ChangeRecordApi { @Autowired private ChangeRecordConfirmService changeRecordConfirmService; + @Autowired + private ChangeRecordBillService changeRecordBillService; + @Override public ApiResult tempCreateVisaChangeRecord(VisaChangeTempCreateReq req) { return ApiResult.ok(changeRecordService.tempCreateVisaChangeRecord(req)); @@ -159,4 +164,9 @@ public class ChangeRecordController implements ChangeRecordApi { changeRecordService.delete(req); return ApiResult.ok(); } + + @Override + public ApiResult> getBillIfRelated(GetBillIfRelatedReq req) { + return ApiResult.ok(changeRecordBillService.getBillIfRelated(req)); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index 1e695315..bd7db25c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -1,11 +1,13 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.request.GetBillIfRelatedReq; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** * @author xudawei @@ -33,6 +35,7 @@ public interface ChangeRecordBillService extends IService { * @return */ Boolean billRelationStatus(Long visaId, Boolean related); + /** * 删除 */ @@ -51,7 +54,10 @@ public interface ChangeRecordBillService extends IService { List listById(Long visaId); /** - * 获取指定类型单据的主单据(是否被其他单据关联) + * 获取指定类型单据的主单据 + *

+ * 特别提醒:该接口返回的数据包含待提报等非审批态单据的关联单据信息 + *

* * @param billType 单据类型 * @param billIds 单据id @@ -61,10 +67,14 @@ public interface ChangeRecordBillService extends IService { /** * 获取任务单的主单据 + *

+ * 特别提醒:该接口返回的数据包含待提报等非审批态单据的关联单据信息 + *

* * @param taskNos 任务单单号 * @return 主单据信息 */ List findTaskMainBill(List taskNos); + Map getBillIfRelated(GetBillIfRelatedReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index 875de23d..c3538563 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -1,12 +1,15 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import cn.axzo.nanopart.visa.api.request.GetBillIfRelatedReq; import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordBillDao; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,7 +20,10 @@ import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xudawei @@ -114,6 +120,39 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl getBillIfRelated(GetBillIfRelatedReq req) { + if (CollUtil.isEmpty(req.getBillIds())) { + return Collections.emptyMap(); + } + List relatedMainBill = getRelatedMainBill(req.getBillType(), req.getBillIds()); + if (CollUtil.isNotEmpty(relatedMainBill)) { + Map billMainRelatedMap = relatedMainBill.stream() + .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) + .entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getKey, + c -> c.getValue().stream() + .anyMatch(b -> Objects.equals(b.getVisaType(), req.getType())))); + return req.getBillIds().stream() + .collect(Collectors.toMap(Function.identity(), t -> billMainRelatedMap.getOrDefault(t, false))); + } + return req.getBillIds().stream() + .collect(Collectors.toMap(Function.identity(), b -> false)); + } + + private List getRelatedMainBill(VisaBillTypeEnum billType, List billIdNos) { + LambdaQueryChainWrapper wrapper = lambdaQuery() + .eq(ChangeRecordBill::getBillType, billType) + .eq(ChangeRecordBill::getRelationStatus, true) + .eq(ChangeRecordBill::getIsDelete, 0); + if (VisaBillTypeEnum.TASK.equals(billType)) { + wrapper.in(ChangeRecordBill::getBillNo, billIdNos); + } else { + wrapper.in(ChangeRecordBill::getBillId, billIdNos.stream().map(Long::parseLong).collect(Collectors.toList())); + } + return wrapper.list(); + } + /** * 查询数量 */ From 34dec7a2ea74b471645a0bf3d65caa3d283f18cb Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 15:30:46 +0800 Subject: [PATCH 211/341] =?UTF-8?q?feat(REQ-3300):=20=E9=80=82=E9=85=8Dbil?= =?UTF-8?q?l=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=85=B3=E8=81=94=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ChangeRecordBillService.java | 18 +++------- .../impl/ChangeRecordBillServiceImpl.java | 35 +++++++----------- .../service/impl/ChangeRecordServiceImpl.java | 36 +++++++++---------- 3 files changed, 33 insertions(+), 56 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java index bd7db25c..bd9c3b96 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordBillService.java @@ -53,6 +53,8 @@ public interface ChangeRecordBillService extends IService { */ List listById(Long visaId); + Map getBillIfRelated(GetBillIfRelatedReq req); + /** * 获取指定类型单据的主单据 *

@@ -60,21 +62,9 @@ public interface ChangeRecordBillService extends IService { *

* * @param billType 单据类型 - * @param billIds 单据id + * @param billIdNos 单据id或no * @return 主单据信息 */ - List findMainBill(VisaBillTypeEnum billType, List billIds); + List getRelatedMainBill(VisaBillTypeEnum billType, List billIdNos); - /** - * 获取任务单的主单据 - *

- * 特别提醒:该接口返回的数据包含待提报等非审批态单据的关联单据信息 - *

- * - * @param taskNos 任务单单号 - * @return 主单据信息 - */ - List findTaskMainBill(List taskNos); - - Map getBillIfRelated(GetBillIfRelatedReq req); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index c3538563..f6724a5d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -101,25 +101,6 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl findMainBill(VisaBillTypeEnum billType, List billIds) { - if (Objects.isNull(billIds) || CollectionUtils.isEmpty(billIds)) { - return Collections.emptyList(); - } - return lambdaQuery().in(ChangeRecordBill::getBillId, billIds) - .eq(ChangeRecordBill::getBillType, billType) - .eq(ChangeRecordBill::getIsDelete, 0) - .list(); - } - - @Override - public List findTaskMainBill(List taskNos) { - return lambdaQuery().in(ChangeRecordBill::getBillNo, taskNos) - .eq(ChangeRecordBill::getBillType, VisaBillTypeEnum.TASK) - .eq(ChangeRecordBill::getIsDelete, 0) - .list(); - } - @Override public Map getBillIfRelated(GetBillIfRelatedReq req) { if (CollUtil.isEmpty(req.getBillIds())) { @@ -127,9 +108,16 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl relatedMainBill = getRelatedMainBill(req.getBillType(), req.getBillIds()); if (CollUtil.isNotEmpty(relatedMainBill)) { - Map billMainRelatedMap = relatedMainBill.stream() - .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) - .entrySet().stream() + Map> billMainMap; + if (VisaBillTypeEnum.TASK.equals(req.getBillType())) { + billMainMap = relatedMainBill.stream() + .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)); + } else { + billMainMap = relatedMainBill.stream() + .collect(Collectors.groupingBy(r -> String.valueOf(r.getBillId()))); + } + Map billMainRelatedMap = billMainMap.entrySet() + .stream() .collect(Collectors.toMap(Map.Entry::getKey, c -> c.getValue().stream() .anyMatch(b -> Objects.equals(b.getVisaType(), req.getType())))); @@ -140,7 +128,8 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl false)); } - private List getRelatedMainBill(VisaBillTypeEnum billType, List billIdNos) { + @Override + public List getRelatedMainBill(VisaBillTypeEnum billType, List billIdNos) { LambdaQueryChainWrapper wrapper = lambdaQuery() .eq(ChangeRecordBill::getBillType, billType) .eq(ChangeRecordBill::getRelationStatus, true) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 96c414eb..721b8ea5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -44,6 +44,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.request.CheckVisaWithVisaIdReq; +import cn.axzo.nanopart.visa.api.request.GetBillIfRelatedReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq; import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq; @@ -1141,19 +1142,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl billMainMap; + Map billIfRelated; if (req.getNeedRelatedBill()) { - List billIds = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); - List mainBill = changeRecordBillService.findMainBill(VisaBillTypeEnum.DESIGN_VISA, billIds); - if (CollectionUtils.isEmpty(mainBill)) { - billMainMap = null; - log.info("all bill is main bill"); - } else { - // Map - billMainMap = mainBill.stream().collect(Collectors.toMap(ChangeRecordBill::getBillId, ChangeRecordBill::getVisaId, (v1, v2) -> v2)); - } + List billIds = records.stream().map(r -> String.valueOf(r.getId())).distinct().collect(Collectors.toList()); + GetBillIfRelatedReq relatedReq = GetBillIfRelatedReq.builder() + .billType(VisaBillTypeEnum.DESIGN_VISA) + .billIds(billIds) + .build(); + billIfRelated = changeRecordBillService.getBillIfRelated(relatedReq); } else { - billMainMap = null; + billIfRelated = null; } // 操作列按钮 Map> operateBtnMap = visaHelper.fetchBtnsByBizTypeAndStatus(records, req.getCurrentPersonId(), req.getCurrentOuId(), req.getCurrentWorkspaceId()); @@ -1167,7 +1165,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); + List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { /*变更单*/ AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); // 关联单据合法性,是否存在,状态是否合法 - List billIds = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toList()); + List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); List relationVisa = listByIds(billIds); AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); relationVisa.forEach(r -> { @@ -1351,11 +1349,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl value, VisaTypeEnum visaType) { + private void validBillIfRelated(VisaBillTypeEnum billType, List value, VisaTypeEnum visaType) { AssertUtil.notNull(billType, "关联单据类型不能为空"); AssertUtil.notEmpty(value, "关联单据Id不能为空"); AssertUtil.notNull(visaType, "单据类型不能为空"); - List mainBill = changeRecordBillService.findMainBill(billType, value); + List mainBill = changeRecordBillService.getRelatedMainBill(billType, value); mainBill.stream() .collect(Collectors.groupingBy(ChangeRecordBill::getBillId)) .forEach((k, v) -> v.stream() @@ -1363,14 +1361,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("单据%s已被其他单据关联,请重新选择", m.getBillNo())); + throw new ServiceException(String.format("%s:单据%s已被其他单据关联,请重新选择", m.getBillType(), m.getBillNo())); })); } private void validTaskBillIfRelated(List taskNos, VisaTypeEnum visaType) { AssertUtil.notEmpty(taskNos, "关联单据Id不能为空"); AssertUtil.notNull(visaType, "单据类型不能为空"); - List mainBill = changeRecordBillService.findTaskMainBill(taskNos); + List mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos); mainBill.stream() .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) .forEach((k, v) -> v.stream() @@ -1378,7 +1376,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("单据%s已被其他单据关联,请重新选择", m.getBillNo())); + throw new ServiceException(String.format("%s:单据%s已被其他单据关联,请重新选择", m.getBillType(), m.getBillNo())); })); } From 2e2366cef1caca19917aaff7d7bd0ab972fe2635 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 15:47:29 +0800 Subject: [PATCH 212/341] =?UTF-8?q?feat(REQ-3300):=20=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG-19277校验 --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 721b8ea5..084ccff1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -511,12 +511,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl confirmPerson = Lists.newArrayList(); @@ -614,6 +620,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 18 Feb 2025 16:19:54 +0800 Subject: [PATCH 213/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E9=80=89=E6=8B=A9=E5=99=A8=E9=80=82=E9=85=8D?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=B8=BB=E5=8D=95=E6=8D=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/GetBillIfRelatedReq.java | 2 +- .../visa/api/request/VisaChangePageSearchReq.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java index 3230a8b9..ad5ba61d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/GetBillIfRelatedReq.java @@ -27,7 +27,7 @@ public class GetBillIfRelatedReq { * @see VisaTypeEnum */ @NotNull(message = "type不能为空") - private VisaTypeEnum type; + private VisaTypeEnum visaType; /** * 子单据类型 diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index f0d56ed9..e1345a76 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -123,6 +123,14 @@ public class VisaChangePageSearchReq { */ private FromEnum from; + /** + * 主单据类型 + *

+ * 仅当{@code from}为{@link FromEnum#SELECT}时,该字段才有效 + *

+ */ + private VisaTypeEnum visaType; + public static enum FromEnum { PAGE("分页列表页面调用"), SELECT("选择器页面调用"); From cd6665691da56165912a97a36a34fc22cebb8ec9 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 16:25:44 +0800 Subject: [PATCH 214/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E9=80=89=E6=8B=A9=E5=99=A8=E9=80=82=E9=85=8D?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=B8=BB=E5=8D=95=E6=8D=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordBillServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index f6724a5d..0a42a550 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -120,7 +120,7 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl c.getValue().stream() - .anyMatch(b -> Objects.equals(b.getVisaType(), req.getType())))); + .anyMatch(b -> Objects.equals(b.getVisaType(), req.getVisaType())))); return req.getBillIds().stream() .collect(Collectors.toMap(Function.identity(), t -> billMainRelatedMap.getOrDefault(t, false))); } From 6a9c9c5022d35ee483415720edbc80ae629ce469 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 16:42:39 +0800 Subject: [PATCH 215/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E9=80=89=E6=8B=A9=E5=99=A8=E9=80=82=E9=85=8D?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=B8=BB=E5=8D=95=E6=8D=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/response/VisaChangePageSearchResp.java | 2 +- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java index ba8eabdb..1ea06939 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaChangePageSearchResp.java @@ -115,7 +115,7 @@ public class VisaChangePageSearchResp { */ private String reason; /** - * 是否被其他单据关联 + * 是否被其他变更签证单单据关联 */ private Boolean isRelated; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 084ccff1..1270681a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1152,8 +1152,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl billIfRelated; if (req.getNeedRelatedBill()) { + AssertUtil.notNull(req.getVisaType(), "主单据类型不能为空"); List billIds = records.stream().map(r -> String.valueOf(r.getId())).distinct().collect(Collectors.toList()); GetBillIfRelatedReq relatedReq = GetBillIfRelatedReq.builder() + .visaType(req.getVisaType()) .billType(VisaBillTypeEnum.DESIGN_VISA) .billIds(billIds) .build(); From f27ffdd3084d4d4b148d9daf6c3c2bed10d95765 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 17:23:25 +0800 Subject: [PATCH 216/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E9=80=89=E6=8B=A9=E5=99=A8=E9=80=82=E9=85=8D?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=B8=BB=E5=8D=95=E6=8D=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1270681a..dbe26402 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -927,11 +927,27 @@ public class ChangeRecordServiceImpl extends ServiceImpl listInitiator(VisaInitiatorListReq req) { + // 有权限查看的最大数据范围 + VisaChangePageSearchReq filter = VisaChangePageSearchReq.builder() + .workspaceId(req.getWorkspaceId()) + .build(); +// Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); + List changeRecordList = Lists.newArrayList(); +// if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) { +// /*获取数据*/ +// changeRecordList = getFilter(filter,permissionVisaIdSet).list(); +// } + changeRecordList = getFilter(filter, Sets.newHashSet()).list(); + if (CollectionUtils.isEmpty(changeRecordList)) { + return Collections.emptyList(); + } + /*获取发起人*/ - AssertUtil.isTrue(NumberUtil.isPositiveNumber(req.getWorkspaceId()), "workspaceId不能为空"); + List visaIdList = changeRecordList.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); VisaConfirmDto visaConfirmDto = VisaConfirmDto.builder() .bizType(VisaConfirmBizTypeEnum.CREATE) .workspaceId(req.getWorkspaceId()) + .visaIds(visaIdList) .build(); List initiators = changeRecordConfirmService.findByCondition(visaConfirmDto); if (CollectionUtils.isEmpty(initiators)) { From df61815c6c1401f0ae1692c65eaa2748739be681 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 17:31:27 +0800 Subject: [PATCH 217/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E5=88=97=E8=A1=A8=E8=BF=9B=E8=A1=8C=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaInitiatorListReq.java | 13 +++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 3 +++ 2 files changed, 16 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java index f9c653fd..4a8d1686 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaInitiatorListReq.java @@ -20,4 +20,17 @@ public class VisaInitiatorListReq { @NotNull(message = "workspaceId不能为空") private Long workspaceId; + + /** + * 当前登录人的personId + */ + private Long currentPersonId; + /** + * 当前登录人的项目Id + */ + private Long currentWorkspaceId; + /** + * 当前登录人的单位Id + */ + private Long currentOuId; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index dbe26402..acff89c5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -930,6 +930,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); List changeRecordList = Lists.newArrayList(); From f9218cdaba258fc8e2b5526e79551c3b9d674a60 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 17:47:35 +0800 Subject: [PATCH 218/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index acff89c5..c8eb9480 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1340,29 +1340,31 @@ public class ChangeRecordServiceImpl extends ServiceImpl { - // 关联单据数量限制 - AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), - String.format("最多可关联%d个%s单,请重新选择", refreshableConfiguration.getVerifyVisaLimit(), VisaBillTypeEnum.valueOf(key).getDesc())); - if (Objects.equals(VisaBillTypeEnum.TASK.name(), key)) { - /*任务单*/ - List taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); - validTaskBillIfRelated(taskNos, req.getType()); - } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { - /*整改单*/ - List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); - validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); - } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { - /*变更单*/ - AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); - // 关联单据合法性,是否存在,状态是否合法 - List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); - List relationVisa = listByIds(billIds); - AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); - relationVisa.forEach(r -> { - AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); - AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc())); - }); - validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); + if (CollectionUtils.isNotEmpty(value)) { + // 关联单据数量限制 + AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(), + String.format("最多可关联%d个%s单,请重新选择", refreshableConfiguration.getVerifyVisaLimit(), VisaBillTypeEnum.valueOf(key).getDesc())); + if (Objects.equals(VisaBillTypeEnum.TASK.name(), key)) { + /*任务单*/ + List taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); + validTaskBillIfRelated(taskNos, req.getType()); + } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { + /*整改单*/ + List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); + validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); + } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { + /*变更单*/ + AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); + // 关联单据合法性,是否存在,状态是否合法 + List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); + List relationVisa = listByIds(billIds); + AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); + relationVisa.forEach(r -> { + AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); + AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc())); + }); + validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); + } } else { throw new ServiceException("不支持的关联单据类型"); } From c2a56737d49d8bd83c80ea93efb075e21ad49bf9 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 18 Feb 2025 18:33:32 +0800 Subject: [PATCH 219/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index c8eb9480..d44d6c6e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1194,7 +1194,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 18 Feb 2025 18:40:13 +0800 Subject: [PATCH 220/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=98=E6=B4=BD=E7=AD=BE=E5=8D=95=E6=8D=AE=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index d44d6c6e..beb88dbe 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -760,14 +760,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); - List> visaOrderMaps = new ArrayList<>(); - visaOrders.forEach(i -> { - Map visaOrderMap = new HashMap<>(); - visaOrderMap.put("id", i.getNo()); - visaOrderMap.put("name", i.getName()); - visaOrderMaps.add(visaOrderMap); - }); if (CollectionUtils.isNotEmpty(visaOrders)) { + List> visaOrderMaps = new ArrayList<>(); + visaOrders.forEach(i -> { + Map visaOrderMap = new HashMap<>(); + visaOrderMap.put("id", i.getNo()); + visaOrderMap.put("name", i.getName()); + visaOrderMaps.add(visaOrderMap); + }); formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderMaps); } } From d7c372b150cbda38d00afe197d4bcb123830b1de Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 18 Feb 2025 18:47:04 +0800 Subject: [PATCH 221/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/changerecord/ChangeRecordApi.java | 8 + .../api/request/VisaChangePageSearchReq.java | 7 +- .../visa/api/request/VisaSearchReq.java | 81 ++++++++++ .../api/response/VisaDetailByIdResponse.java | 12 -- .../visa/api/response/VisaSearchResp.java | 144 ++++++++++++++++++ .../controller/ChangeRecordController.java | 8 + .../visa/server/domain/ChangeRecordBill.java | 2 + .../nanopart/visa/server/dto/VisaBillDto.java | 7 + .../server/service/ChangeRecordService.java | 7 + .../impl/ChangeRecordBillServiceImpl.java | 1 + .../impl/ChangeRecordConfirmServiceImpl.java | 4 +- .../service/impl/ChangeRecordServiceImpl.java | 98 +++++++++++- 12 files changed, 357 insertions(+), 22 deletions(-) create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java create mode 100644 visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaSearchResp.java diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 8148bf2b..61b4d806 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -15,10 +15,12 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.request.VisaSearchReq; import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.response.VisaSearchResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -165,4 +167,10 @@ public interface ChangeRecordApi { */ @PostMapping("/api/visa/change/getBillIfRelated") ApiResult> getBillIfRelated(@RequestBody @Validated GetBillIfRelatedReq req); + + /** + * 查询单据 + */ + @PostMapping("/api/visa/change/list") + ApiPageResult list(VisaSearchReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index f0d56ed9..4042fa54 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.util.Collection; import java.util.Date; import java.util.List; @@ -107,12 +108,16 @@ public class VisaChangePageSearchReq { /** * 变更签证Id集合 */ - private List visaIds; + private Collection visaIds; /** * 是否需要主单据(即是否被其他单据关联)信息 */ private Boolean needRelatedBill = false; + /** + * 变更签证Id + */ + private Long visaId; /** * 调用场景 diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java new file mode 100644 index 00000000..b2b69643 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java @@ -0,0 +1,81 @@ +package cn.axzo.nanopart.visa.api.request; + +import cn.axzo.core.domain.PageRequest; +import cn.axzo.framework.domain.ServiceException; +import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.util.StringUtils; + +import java.util.Objects; + +/** + * @author xudawei + * @date 2025/01/16 + * @desc 变签Id获取变签日志 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class VisaSearchReq extends PageRequest { + + + /** + * 变签Id + */ + private Long visaId; + /** + * 项目Id + */ + private Long workspaceId; + + /** + * 变签编号 + */ + private String visaNo; + + /** + * 单据类型,任务单:TASK;整改单:RECTIFY;变更单:VISA + */ + private VisaBillTypeEnum billType; + + /** + * 单据Id + */ + private Long billId; + + /** + * 单据编号 + */ + private String billNo; + + /** + * 校验 + */ + public void check() { + if (Objects.isNull(this.getBillId()) + && Objects.isNull(this.getBillNo()) + && Objects.isNull(this.getBillType()) + && Objects.isNull(this.getVisaId()) + && !StringUtils.hasText(this.getVisaNo())) { + throw new ServiceException("参数不合法"); + } + repairPage(); + } + + /** + * 修复page + */ + public void repairPage() { + if (Objects.isNull(this.getPage())) { + this.setPage(1); + } + if (Objects.isNull(this.getPageSize())) { + this.setPageSize(20); + } + } + +} diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 6ad2d56f..21d12bdd 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -381,18 +381,6 @@ public class VisaDetailByIdResponse { } - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class RelationArea { - /** - * id - */ - private Long id; - - } - @Data @Builder @NoArgsConstructor diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaSearchResp.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaSearchResp.java new file mode 100644 index 00000000..f4bada46 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaSearchResp.java @@ -0,0 +1,144 @@ +package cn.axzo.nanopart.visa.api.response; + +import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; +import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @author xudawei@axzo.cn + * @date 2025/2/18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VisaSearchResp { + + /** + * 变更单据Id + */ + private Long visaId; + + /** + * 单据号 + */ + private String no; + + /** + * 主题 + */ + private String topic; + + /** + * 项目 + */ + private Long relationWorkspaceId; + + /** + * 工程 + */ + private Long relationProject; + + /** + * 区域集合 + * 示例: + *
+     * [
+     *     {"areaId": 249556},
+     *     {"areaId": 249555}
+     * ]
+     *  
+ */ + private List relationArea; + + /** + * 专业集合 + * 示例: + *
+     * [
+     *     {"code":"code1"},
+     *     {"code":"code2"},
+     * ]
+     * 
+ */ + private List relationProfessional; + + /** + * 提出时间 + */ + private Date happenTime; + + /** + * 有符号的变更金额 + */ + private String amountChange; + + /** + * 发生原因 + */ + private String reason; + + /** + * 单据类型 + */ + private VisaTypeEnum type; + + /** + * 状态 + */ + private VisaStatusEnum status; + + /** + * 最终审批ID + */ + private String approvalId; + + /** + * 最终审批状态 + */ + private String approvalStatus; + + /** + * 最终审批时间 + */ + private Date approvalCompleteTime; + + /** + * IM群组ID + */ + private Long imGroupId; + + /** + * 额外信息 + */ + private JSONObject extra; + + /** + * 创建人id + */ + private Long createBy; + + /** + * 修改人id + */ + private Long updateBy; + + /** + * 创建时间 + */ + protected Date createAt; + + /** + * 修改时间 + */ + protected Date updateAt; + + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 9c7ef008..a008e363 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -18,10 +18,12 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.request.VisaSearchReq; import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.response.VisaSearchResp; import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService; import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; @@ -105,6 +107,12 @@ public class ChangeRecordController implements ChangeRecordApi { return ApiPageResult.ok(pageData.getList(), pageData.getTotalCount(), pageData.getPage(), pageData.getPageSize()); } + @Override + public ApiPageResult list(VisaSearchReq req) { + PageData page = changeRecordService.list(req); + return ApiPageResult.ok(page.getList(), page.getTotalCount(), page.getPage(), page.getPageSize()); + } + /** * 重新赋值属性 * 待提报:TO_REPORT/REPORT_FROM_APPROVE diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java index c9c3cba8..9d6f4b67 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/domain/ChangeRecordBill.java @@ -60,6 +60,8 @@ public class ChangeRecordBill extends BaseEntity { /** * 单据被关联状态 + * true 1 被关联 + * false 0 未关联 */ @TableField(value = "relation_status") private Boolean relationStatus; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java index 89ec05c5..7b6d619b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaBillDto.java @@ -60,4 +60,11 @@ public class VisaBillDto { */ private Long updateBy; + /** + * 单据被关联状态 + * true 1 被关联 + * false 0 未关联 + */ + private Boolean relationStatus; + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index e3062734..cf46aa92 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -12,10 +12,12 @@ import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq; import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq; import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq; import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq; +import cn.axzo.nanopart.visa.api.request.VisaSearchReq; import cn.axzo.nanopart.visa.api.response.VisaChangeDiscussCreateResp; import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp; import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; +import cn.axzo.nanopart.visa.api.response.VisaSearchResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -127,4 +129,9 @@ public interface ChangeRecordService extends IService { */ void checkVisaWithVisaId(CheckVisaWithVisaIdReq req); + /** + * 查询变更签证集合 + */ + PageData list(VisaSearchReq req); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java index c3538563..f0896b41 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordBillServiceImpl.java @@ -170,6 +170,7 @@ public class ChangeRecordBillServiceImpl extends ServiceImpl visaButtonTypeEnums = VisaButtonTypeEnum.fetchBtnSetByBizTypeAndStatus(bizTypes, status); - //没有去审批记录,则不展示[查看审批记录]按钮 + //没有点击[审批记录],则不展示[查看审批记录]按钮 if (!changeRecordLogService.hasLogType(visaId, VisaLogTypeEnum.TO_APPRROVE)) { visaButtonTypeEnums.remove(VisaButtonTypeEnum.APPROVAL_RECORD); } else { @@ -144,7 +144,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl page = getFilter(req, Sets.newHashSet()).page(new Page<>(req.getPage(), req.getPageSize())); + Page page = getFilter(req).page(new Page<>(req.getPage(), req.getPageSize())); return PageData.builder() .page(Math.toIntExact(page.getCurrent())) .pageSize(Math.toIntExact(page.getSize())) @@ -960,7 +975,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter, Set permissionVisaIdSet) { + private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() -// .in(ChangeRecord::getId, permissionVisaIdSet) + .in(CollectionUtils.isNotEmpty(filter.getVisaIds()), ChangeRecord::getId, filter.getVisaId()) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) .and(StringUtils.hasText(filter.getKeyword()), @@ -1050,8 +1065,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl list(VisaSearchReq req) { + //1 校验 + req.check(); + //2 根据条件获取visa_change_record_bill(变更签证记录单据关系表)中的visaId集合 + Set visaIds = this.fetchVisaIds(req); + + if (CollectionUtils.isEmpty(visaIds) && Objects.isNull(req.getVisaId())) { + return PageData.builder() + .page(Math.toIntExact(req.getPage())) + .pageSize(Math.toIntExact(req.getPageSize())) + .totalCount(0L) + .list(Lists.newArrayList()) + .build(); + } + + //3 查询变更签证主表(visa_change_record) + Page page = this.getFilter(VisaChangePageSearchReq.builder() + .visaIds(visaIds) + .visaId(req.getVisaId()) + .workspaceId(req.getWorkspaceId()).build()).page(new Page<>(req.getPage(), req.getPageSize())); + //4 构建返回数据 + return buildPageData(page); + } + + /** + * 构建返回数据 + */ + private PageData buildPageData(Page page) { + return PageData.builder() + .page(Math.toIntExact(page.getCurrent())) + .pageSize(Math.toIntExact(page.getSize())) + .totalCount(page.getTotal()) + .list(CollectionUtils.isEmpty(page.getRecords()) ? Lists.newArrayList() : page.getRecords().stream().map(item -> { + VisaSearchResp visaSearchResp = BeanUtil.copyProperties(item, VisaSearchResp.class); + visaSearchResp.setVisaId(item.getId()); + visaSearchResp.setRelationArea(VisaDetailByIdResponse.RelationAreaDetail.buildAreaWithObject(item.getRelationArea())); + visaSearchResp.setRelationProfessional(VisaDetailByIdResponse.RelationProfessionalDetail.buildProfessionWithObject(item.getRelationProfessional())); + visaSearchResp.setAmountChange(Objects.nonNull(item.getAmountChange()) ? item.getAmountChange().toPlainString() : ""); + return visaSearchResp; + }).collect(Collectors.toList())) + .build(); + } + + /** + * 根据条件获取visa_change_record_bill(变更签证记录单据关系表)中的visaId集合 + */ + private Set fetchVisaIds(VisaSearchReq req) { + Set visaIds = Sets.newHashSet(); + if (Objects.nonNull(req.getBillId()) || Objects.nonNull(req.getBillNo()) || Objects.nonNull(req.getBillType())) { + List billList = this.changeRecordBillService.findByCondition(VisaBillDto.builder() + .billId(req.getBillId()) + .billNo(req.getBillNo()) + .billType(req.getBillType()) + .relationStatus(true).build()); + if (CollectionUtils.isNotEmpty(billList)) { + visaIds = billList.stream().map(item -> item.getVisaId()).collect(Collectors.toSet()); + } + } + return visaIds; + } + + } From 619c5bc196a3db19a50676ae586498d1ecbee42b Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 18 Feb 2025 18:48:26 +0800 Subject: [PATCH 222/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ccf73c50..8cccf681 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -955,7 +955,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 10:39:14 +0800 Subject: [PATCH 223/341] =?UTF-8?q?feat(REQ-3300):=20=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=AD=9B=E9=80=89=E6=A0=A1=E9=AA=8C=E5=8A=A0?= =?UTF-8?q?=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 8cccf681..60d3e2db 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1244,6 +1244,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 10:49:49 +0800 Subject: [PATCH 224/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E7=AD=BE=E8=AF=81=E9=9B=86=E5=90=88=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java | 2 +- .../java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java | 4 ++-- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 61b4d806..fadb3718 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -172,5 +172,5 @@ public interface ChangeRecordApi { * 查询单据 */ @PostMapping("/api/visa/change/list") - ApiPageResult list(VisaSearchReq req); + ApiPageResult list(@RequestBody @Validated VisaSearchReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java index b2b69643..715aad60 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaSearchReq.java @@ -70,10 +70,10 @@ public class VisaSearchReq extends PageRequest { * 修复page */ public void repairPage() { - if (Objects.isNull(this.getPage())) { + if (Objects.isNull(this.page)) { this.setPage(1); } - if (Objects.isNull(this.getPageSize())) { + if (Objects.isNull(this.pageSize)) { this.setPageSize(20); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 8cccf681..be666ea5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1072,7 +1072,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() - .in(CollectionUtils.isNotEmpty(filter.getVisaIds()), ChangeRecord::getId, filter.getVisaId()) + .in(CollectionUtils.isNotEmpty(filter.getVisaIds()), ChangeRecord::getId, filter.getVisaIds()) + .eq(Objects.nonNull(filter.getVisaId()), ChangeRecord::getId, filter.getVisaId()) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) .and(StringUtils.hasText(filter.getKeyword()), From cc406bf0f73d09eb96a254705d96d66ab3cc74a3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 10:59:24 +0800 Subject: [PATCH 225/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20MethodLog=E6=B3=A8=E8=A7=A3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/nanopart/NanopartApplication.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java index 715514b3..17be39b1 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/NanopartApplication.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart; import cn.axzo.nanopart.config.RocketMQEventConfiguration; +import cn.azxo.framework.common.logger.MethodAroundLogAspect; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -16,7 +17,7 @@ import org.springframework.context.annotation.Import; "cn.axzo" }) @EnableAspectJAutoProxy() -@Import({RocketMQEventConfiguration.class}) +@Import({RocketMQEventConfiguration.class, MethodAroundLogAspect.class}) public class NanopartApplication { public static void main(String[] args) { SpringApplication.run(NanopartApplication.class, args); From 199b30c4000c8130754a3def3963b2394d6cb3e3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 11:17:13 +0800 Subject: [PATCH 226/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=A4=9A=E4=BD=99=E7=9A=84=20IM=20MQ=20=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RocketMQEventConfiguration.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java index 63390c70..d1520e8a 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/RocketMQEventConfiguration.java @@ -265,25 +265,25 @@ public class RocketMQEventConfiguration { } } - /** - * IM 事件处理 - */ - @Slf4j - @Component - @RocketMQMessageListener(topic = "topic_im_center_${spring.profiles.active}", - consumerGroup = "GID_im_${spring.application.name}_${spring.profiles.active}", - consumeMode = ConsumeMode.ORDERLY, - nameServer = "${rocketmq.name-server}" - ) - public static class ImCenterListener extends BaseListener implements RocketMQListener { - - @Autowired - private EventConsumer eventConsumer; - - @Override - public void onMessage(MessageExt message) { - log.info("ImCenterListener onMessage nanopart, message:{}", JSON.toJSONString(message)); - super.onEvent(message, eventConsumer); - } - } +// /** +// * IM 事件处理 +// */ +// @Slf4j +// @Component +// @RocketMQMessageListener(topic = "topic_im_center_${spring.profiles.active}", +// consumerGroup = "GID_im_${spring.application.name}_${spring.profiles.active}", +// consumeMode = ConsumeMode.ORDERLY, +// nameServer = "${rocketmq.name-server}" +// ) +// public static class ImCenterListener extends BaseListener implements RocketMQListener { +// +// @Autowired +// private EventConsumer eventConsumer; +// +// @Override +// public void onMessage(MessageExt message) { +// log.info("ImCenterListener onMessage nanopart, message:{}", JSON.toJSONString(message)); +// super.onEvent(message, eventConsumer); +// } +// } } From 1cd0e311dfcddd1464045973aa3dd2f13b65a53c Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 19 Feb 2025 11:24:43 +0800 Subject: [PATCH 227/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8D=95=E5=8F=B7?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=94=AF=E4=B8=80=E6=80=A7=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=A8=A1=E5=BC=8F=E8=B7=B3=E8=BF=87=E8=87=AA?= =?UTF-8?q?=E8=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 475cd701..661176a7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1309,7 +1309,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 13:41:17 +0800 Subject: [PATCH 228/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7=E7=9A=84=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=BE=A4=E6=B6=88=E6=81=AF=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 475cd701..13eeb484 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -22,6 +22,7 @@ import cn.axzo.framework.domain.web.result.PageData; import cn.axzo.im.center.api.vo.PersonAccountAttribute; import cn.axzo.im.center.api.vo.req.GroupCreateRequest; import cn.axzo.im.center.api.vo.req.GroupDismissRequest; +import cn.axzo.im.center.api.vo.req.SendChatMessageRequest; import cn.axzo.im.center.api.vo.resp.GroupCreateResponse; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.GroupType; @@ -1576,17 +1577,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl imReceiveAccounts = Sets.newHashSet(String.valueOf(visa.getImGroupId())); + cardRequest.setImReceiveAccounts(imReceiveAccounts); OrganizationalUnitVO unitInfo = organizationalUnitGateway.getUnitInfo(req.getOperatorOuId()); PersonProfileDto profile = visaProfileGateway.getProfile(req.getOperatorPersonId()); @@ -1600,6 +1602,19 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 13:44:28 +0800 Subject: [PATCH 229/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BA=BA=E5=B2=97=E4=BD=8D=E4=BC=98=E5=85=88=E5=8F=96=E6=9C=AA?= =?UTF-8?q?=E9=80=80=E5=9C=BA=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 661176a7..9c2919df 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1141,7 +1141,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl - return nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity(), (v1, v2) -> v1)); + return nodeUserResp.stream().collect(Collectors.toMap(OrgNodeUserBriefInfoResp::getPersonId, Function.identity(), (v1, v2) -> { + // 优先取exited=false的数据,若均为false,则取updateAt较大的数据 + if (Objects.nonNull(v1.getExited()) && Objects.nonNull(v2.getExited())) { + if (v1.getExited() && !v2.getExited()) { + return v2; + } else if (!v1.getExited() && v2.getExited()) { + return v1; + } + } + return v1.getUpdateAt().compareTo(v2.getUpdateAt()) > 0 ? v1 : v2; + })); } private static VisaChangeInitiatorResp buildInitiatorResp(Map initiatorMap, ChangeRecordConfirm i) { From 2a1e1aaef3b273d1f75b701d144639800581526c Mon Sep 17 00:00:00 2001 From: jinhaiyang Date: Wed, 19 Feb 2025 14:00:18 +0800 Subject: [PATCH 230/341] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=98=E9=9B=85?= =?UTF-8?q?=E5=81=9C=E6=9C=BA=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nanopart-server/pom.xml | 5 +++++ nanopart-server/src/main/resources/bootstrap.yml | 3 +++ pom.xml | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/nanopart-server/pom.xml b/nanopart-server/pom.xml index 50fd8844..178abe7f 100644 --- a/nanopart-server/pom.xml +++ b/nanopart-server/pom.xml @@ -56,6 +56,11 @@ axzo-test-spring-boot-starter + + io.github.openfeign + feign-httpclient + + cn.axzo.pokonyan pokonyan diff --git a/nanopart-server/src/main/resources/bootstrap.yml b/nanopart-server/src/main/resources/bootstrap.yml index 3cc71161..857b00ee 100644 --- a/nanopart-server/src/main/resources/bootstrap.yml +++ b/nanopart-server/src/main/resources/bootstrap.yml @@ -14,6 +14,9 @@ spring: main: allow-bean-definition-overriding: true +server: + shutdown: graceful + arthas: app-name: ${spring.application.name} agent-id: ${ARTHAS_AGENT_ID:${spring.profiles.active}-${spring.application.name}} diff --git a/pom.xml b/pom.xml index acadbe39..142a88d4 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ 1.4.2.Final 5.2.2 3.3.3 + 11.8 @@ -59,6 +60,12 @@ + + io.github.openfeign + feign-httpclient + ${feign-httpclient.version} + + org.projectlombok From d5b8e0c9f1ccbee2edc8b87aa28e1ed4bfffe292 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 14:03:30 +0800 Subject: [PATCH 231/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20IM=20=E7=BE=A4=E8=81=8A=E6=8C=89=E9=92=AE=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=B8=AD=E7=9A=84=E5=BC=82=E5=B8=B8=E6=96=87?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 2 ++ .../visa/server/service/impl/ChangeRecordServiceImpl.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 7f377c1c..2f80a52c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -159,6 +159,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 14:10:30 +0800 Subject: [PATCH 232/341] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=98=E9=9B=85?= =?UTF-8?q?=E5=81=9C=E6=9C=BA=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 142a88d4..0fc12277 100644 --- a/pom.xml +++ b/pom.xml @@ -55,17 +55,17 @@ pom import + + + io.github.openfeign + feign-httpclient + ${feign-httpclient.version} + - - io.github.openfeign - feign-httpclient - ${feign-httpclient.version} - - org.projectlombok From a38a4341305d29a83ce3c2881543810847f19667 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 14:20:17 +0800 Subject: [PATCH 233/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=9C=A8IM=20=E7=BE=A4=E4=B8=AD,?= =?UTF-8?q?=E7=89=B9=E5=AE=9A=E7=8A=B6=E6=80=81=E4=B8=8B=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 2f80a52c..4eadbd77 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -261,8 +261,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 14:22:13 +0800 Subject: [PATCH 234/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=9B=91=E5=90=AC?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=B5=81-=E6=89=80=E6=9C=89=E7=BB=93?= =?UTF-8?q?=E7=82=B9=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87/=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E5=AE=A1=E6=89=B9=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessInstanceAllEventHandler.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index e0594fe5..bc0fafe6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -65,16 +65,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P @Override public void onStarted(ProcessInstanceDTO dto) { - BpmnTaskDelegateAssigner initiator = dto.getInitiator(); - String visaTypeDesc = parseVisaType(dto); - ChangeRecordLog log = ChangeRecordLog.builder() - .visaId(Long.valueOf(dto.getBusinessKey())) - .action(dto.getType().getTag()) - .title(String.format(TO_APPRROVE.getTitle(), visaTypeDesc)) - .content(String.format(TO_APPRROVE.getContent(), buildLogUserInfo(initiator), visaTypeDesc)) - .build(); - eventProducer.send(VisaChangeLogPayload.form(log)); } private String parseVisaType(ProcessInstanceDTO dto) { @@ -86,14 +77,6 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P public void onCompleted(ProcessInstanceDTO dto) { String visaTypeDesc = parseVisaType(dto); - ChangeRecordLog log = ChangeRecordLog.builder() - .visaId(Long.valueOf(dto.getBusinessKey())) - .action(dto.getType().getTag()) - .title(String.format(APPROVE_COMPLETED.getTitle(), visaTypeDesc)) - .content(String.format(APPROVE_COMPLETED.getContent(), visaTypeDesc)) - .build(); - eventProducer.send(VisaChangeLogPayload.form(log)); - updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.APPROVED); } From 38438d261f03d0933af5eacd749896346d85b5b3 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 19 Feb 2025 14:42:34 +0800 Subject: [PATCH 235/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordLogServiceImpl.java | 4 ++-- .../axzo/nanopart/visa/server/utils/Constants.java | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index f21b0fe0..f0601656 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -167,7 +167,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 14:47:20 +0800 Subject: [PATCH 236/341] =?UTF-8?q?feat(REQ-3300):=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=8D=95=E6=8D=AE=E7=B1=BB=E5=9E=8B=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f15efcae..17caa9f4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1398,9 +1398,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 15:17:16 +0800 Subject: [PATCH 237/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=8B=89=E5=8F=96=E5=AE=A1=E6=89=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=85=A5=E5=8F=82=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/request/VisaRelationReq.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java index bd4faa2c..ea9a5c45 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaRelationReq.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * 变洽签关联数据查询入参模型 @@ -25,7 +25,7 @@ public class VisaRelationReq { /** * 变洽签单据 ID */ - @NotBlank(message = "变洽签单据 ID不能为空") + @NotNull(message = "变洽签单据 ID不能为空") private Long visaId; /** From cc3ce0764ed0a2cd208de5e197ad67fadccb8f12 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 15:40:04 +0800 Subject: [PATCH 238/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E8=B0=83=E7=94=A8=20changeStatus=20=E7=9A=84=E5=85=A5=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ChangeRecordRelationController.java | 4 ++-- .../workflow/process/ProcessInstanceAllEventHandler.java | 9 +++++++-- .../service/impl/ChangeRecordRelationServiceImpl.java | 2 +- .../server/service/impl/ChangeRecordServiceImpl.java | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index c799cef3..36ae9695 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -2,7 +2,6 @@ package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordRelationApi; -import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; @@ -18,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Comparator; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -36,7 +36,7 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { public ApiResult> listByVisaId(VisaRelationReq req) { return ApiResult.ok(changeRecordRelationService.findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) - .varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA.name()) + .varName(Objects.nonNull(req.getFieldEnum()) ? req.getFieldEnum().name() : null) .build()) .stream().sorted(Comparator.comparing(ChangeRecordRelation::getCreateAt)) .map(i -> VisaRelationResp.builder() diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index bc0fafe6..d292a4a2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -24,10 +24,8 @@ import java.util.Date; import java.util.Objects; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; -import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; -import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TO_APPRROVE; import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA; /** @@ -159,9 +157,13 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P }); ChangeRecord visa = changeRecordService.getById(visaId); + BpmnTaskDelegateAssigner lastOperationAssigner = dto.getLastOperationAssigner(); if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) { changeRecordService.changeStatus(ChangeStatusRequest.builder() .visaId(visaId) + .personId(Long.valueOf(lastOperationAssigner.getPersonId())) + .ouId(Long.valueOf(lastOperationAssigner.getOuId())) + .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(VisaStatusEnum.COMPLETED) .build()); return; @@ -169,6 +171,9 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P // 回退到待提报或决策中 changeRecordService.changeStatus(ChangeStatusRequest.builder() .visaId(visaId) + .personId(Long.valueOf(lastOperationAssigner.getPersonId())) + .ouId(Long.valueOf(lastOperationAssigner.getOuId())) + .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) .build()); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 4eadbd77..04cd4f59 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -146,7 +146,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 16:19:44 +0800 Subject: [PATCH 239/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=BC=96=E8=BE=91=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 824c4b13..3293339d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -559,7 +559,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 16:28:25 +0800 Subject: [PATCH 240/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 631c6963..7dafd814 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1464,8 +1464,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 16:29:49 +0800 Subject: [PATCH 241/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E7=94=B3=E8=AF=B7=E5=88=99=E4=B8=8D=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordConfirmServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 50a8b74b..746a954b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -137,6 +137,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 17:04:08 +0800 Subject: [PATCH 242/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E4=BB=BB=E5=8A=A1=E9=80=9A=E8=BF=87=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/workflow/task/ProcessTaskAllEventHandler.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index ed02988b..2bd35953 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -51,6 +51,9 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce @Override public void onCompleted(ProcessTaskDTO dto) { OrgNodeUserBriefInfoResp user = getOneUserInfo(dto.getApprover()); + if (Objects.equals(dto.getInitiator().getPersonId(), dto.getApprover().getPersonId())) { + return; + } ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) From 79469b821a248c2f703eeb1d387dc2a057bb3441 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 19:26:49 +0800 Subject: [PATCH 243/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupsCreatedEventHandler.java | 6 +++++- .../workflow/process/ProcessInstanceAllEventHandler.java | 5 ----- .../listener/workflow/task/ProcessTaskAllEventHandler.java | 5 +++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index f6f42c09..7bfc6075 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -83,7 +83,11 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe GroupChangedMessage groupChangedMessage = event.normalizedData(GroupChangedMessage.class); GroupInfo group = groupChangedMessage.getGroup(); AssertUtil.notNull(group, "group info is null"); - sendCardAndMsgToImGroup(group); + try { + sendCardAndMsgToImGroup(group); + } catch (Exception e) { + log.error("send msg to im group error: {}", e.getMessage(), e); + } log.info("receive create im group event, handle success: {}", JSON.toJSONString(event)); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index d292a4a2..684e536d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -61,11 +61,6 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P ProcessInstanceEventHandler.super.onCreated(dto); } - @Override - public void onStarted(ProcessInstanceDTO dto) { - - } - private String parseVisaType(ProcessInstanceDTO dto) { String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, ""); return StringUtils.hasText(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : ""; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index 2bd35953..cb227dcf 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -50,10 +50,11 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce */ @Override public void onCompleted(ProcessTaskDTO dto) { - OrgNodeUserBriefInfoResp user = getOneUserInfo(dto.getApprover()); - if (Objects.equals(dto.getInitiator().getPersonId(), dto.getApprover().getPersonId())) { + if (Objects.nonNull(dto.getApprover()) + && Objects.equals(dto.getInitiator().getPersonId(), dto.getApprover().getPersonId())) { return; } + OrgNodeUserBriefInfoResp user = getOneUserInfo(dto.getApprover()); ChangeRecordLog log = ChangeRecordLog.builder() .visaId(Long.valueOf(dto.getBusinessKey())) From 80d84f8cced49c7ca17058f829ebe6bde41b9e78 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 19:30:16 +0800 Subject: [PATCH 244/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=AE=A1=E6=89=B9=E7=9A=84=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 7dafd814..85318152 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -766,6 +766,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.TASK.name(), null); if (CollectionUtils.isNotEmpty(taskOrders)) { + List> taskOrderMaps = new ArrayList<>(); + taskOrders.forEach(i -> { + Map taskOrderMap = new HashMap<>(); + taskOrderMap.put("id", i.getNo()); + taskOrderMap.put("name", i.getName()); + taskOrderMaps.add(taskOrderMap); + }); formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrders); } @@ -776,14 +783,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.DESIGN_VISA.name(), null); if (CollectionUtils.isNotEmpty(visaOrders)) { - List> visaOrderMaps = new ArrayList<>(); - visaOrders.forEach(i -> { - Map visaOrderMap = new HashMap<>(); - visaOrderMap.put("id", i.getNo()); - visaOrderMap.put("name", i.getName()); - visaOrderMaps.add(visaOrderMap); - }); - formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrderMaps); + formVariables.put(FORM_FIELD_RELATION_VISA_ORDER, visaOrders); } } formVariables.put(FORM_FIELD_ATTACH, req.getAttach()); From da0963f723aa08c5723f7378463bd78a5c439a64 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 19 Feb 2025 20:19:44 +0800 Subject: [PATCH 245/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=AE=A1=E6=89=B9=E7=9A=84=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 85318152..1eb3e651 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -770,10 +770,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl { Map taskOrderMap = new HashMap<>(); taskOrderMap.put("id", i.getNo()); + taskOrderMap.put("no", i.getNo()); taskOrderMap.put("name", i.getName()); taskOrderMaps.add(taskOrderMap); }); - formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrders); + formVariables.put(FORM_FIELD_RELATION_TASK_ORDER, taskOrderMaps); } List rectificationOrders = req.getRelationOrderMap().getOrDefault(VisaBillTypeEnum.RECTIFY.name(), null); From ad91954fba146d54d87392f803b336a8745d8e6e Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 19 Feb 2025 20:28:58 +0800 Subject: [PATCH 246/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordLogServiceImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index f0601656..7e05b1a8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -25,7 +25,9 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -271,7 +273,16 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl FetchVisaLogByVisaIdResponse.builder() + + Map logMap = logList.stream().collect(Collectors.toMap( + key -> key.getVisaId() + key.getAction() + key.getTitle() + key.getContent() + , Function.identity() + , (x, y) -> x)); + + if (Objects.isNull(logMap) || logMap.isEmpty()) { + return Lists.newArrayList(); + } + return logMap.values().stream().map(item -> FetchVisaLogByVisaIdResponse.builder() .title(item.getTitle()) .content(item.getContent()) .createAt(item.getCreateAt()) From d053c01abe3c466b1d0c45f579d0b0c50d862745 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 19 Feb 2025 20:58:49 +0800 Subject: [PATCH 247/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordLogServiceImpl.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 7e05b1a8..55eb4205 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -24,10 +24,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; import java.util.Objects; -import java.util.function.Function; +import java.util.Set; import java.util.stream.Collectors; /** @@ -274,19 +274,27 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl logMap = logList.stream().collect(Collectors.toMap( - key -> key.getVisaId() + key.getAction() + key.getTitle() + key.getContent() - , Function.identity() - , (x, y) -> x)); - - if (Objects.isNull(logMap) || logMap.isEmpty()) { + // 使用 LinkedHashSet 进行去重 + Set seenKeys = new LinkedHashSet<>(); + List returnList = logList.stream() + .filter(item -> seenKeys.add(buildKey(item))) + .map(item -> FetchVisaLogByVisaIdResponse.builder() + .title(item.getTitle()) + .content(item.getContent()) + .createAt(item.getCreateAt()) + .build()) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(returnList)) { return Lists.newArrayList(); } - return logMap.values().stream().map(item -> FetchVisaLogByVisaIdResponse.builder() - .title(item.getTitle()) - .content(item.getContent()) - .createAt(item.getCreateAt()) - .build()).collect(Collectors.toList()); + return returnList; + } + + /** + * 构建key + */ + private String buildKey(ChangeRecordLog log) { + return log.getVisaId() + log.getAction() + log.getTitle() + log.getContent(); } /** From 9f99b2ff616a857cb4e48a4ee786aebe80d93204 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 10:14:21 +0800 Subject: [PATCH 248/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 52 +++++++++++++------ .../api/request/VisaDetailByIdRequest.java | 7 +++ .../api/response/VisaDetailByIdResponse.java | 2 +- .../controller/ChangeRecordController.java | 7 ++- .../service/ChangeRecordConfirmService.java | 2 +- .../impl/ChangeRecordConfirmServiceImpl.java | 8 ++- 6 files changed, 57 insertions(+), 21 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index 11a69ae0..a0dc5e91 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.api.enums; import cn.axzo.framework.domain.ServiceException; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import lombok.AccessLevel; @@ -8,9 +9,12 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.collections4.CollectionUtils; +import java.util.Comparator; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.stream.Collectors; /** * 按钮枚举 @@ -22,21 +26,21 @@ import java.util.Set; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaButtonTypeEnum { - UPDATE("update", "编辑"), - DELETE("delete", "删除"), - FORBID("forbid", "作废"), - EXECUTE("execute", "发起执行"), - REDECISION("redecision", "重新发起"), - TO_APPROVE("to_approve", "提交审批"), - AGAIN_TO_APPROVE("again_to_approve", "重新提交审批"), - AGREE("agree", "同意"), - REJECT("reject", "拒绝"), - UPLOAD_FILE("upload_file", "上传附件"), - CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录"), - APPROVAL_RECORD("approval_record", "查看审批记录"), - TO_HANDLE("to_handle", "去处理"), - PRINT("print", "打印"), - DETAIL("detail", "详情"), + UPDATE("update", "编辑",55), + DELETE("delete", "删除",50), + FORBID("forbid", "作废",5), + EXECUTE("execute", "发起执行",40), + REDECISION("redecision", "重新发起",0), + TO_APPROVE("to_approve", "提交审批",30), + AGAIN_TO_APPROVE("again_to_approve", "重新提交审批",20), + AGREE("agree", "同意",0), + REJECT("reject", "拒绝",0), + UPLOAD_FILE("upload_file", "上传附件",25), + CHAT_GROUP_RECORD("chat_group_record", "查看洽商记录",15), + APPROVAL_RECORD("approval_record", "查看审批记录",10), + TO_HANDLE("to_handle", "去处理", 35), + PRINT("print", "打印",45), + DETAIL("detail", "详情",0), ; @@ -44,6 +48,12 @@ public enum VisaButtonTypeEnum { private String desc; + /** + * 倒序-数值越大,排序越靠前 + * 中间新增按钮-步数为5 + */ + private int orderBy; + //分页列表页Map,key:角色+单据状态,value:功能权限的按钮列表 private static Map> bizTypeBtnMap = Maps.newHashMap(); @@ -188,4 +198,16 @@ public enum VisaButtonTypeEnum { return Sets.newHashSet(VisaButtonTypeEnum.values()); } + /** + * 按照orderBy排序-前端要求 + */ + public static List sort(Set btnSet) { + if (CollectionUtils.isEmpty(btnSet)) { + return Lists.newArrayList(); + } + return Lists.newArrayList(btnSet).stream() + .sorted(Comparator.comparing(VisaButtonTypeEnum::getOrderBy).reversed()) + .collect(Collectors.toList()); + } + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java index 0e68d9f3..169f0e0a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaDetailByIdRequest.java @@ -34,4 +34,11 @@ public class VisaDetailByIdRequest { private Long ouId; private Long projectId; + + /** + * 是否需要btnList + * true:需要, 则personId/ouId/workspaceId 必填,需要查询确认人信息 + * false:不需要 + */ + private boolean needBtnList = true; } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 21d12bdd..d20eafaa 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -168,7 +168,7 @@ public class VisaDetailByIdResponse { /** * 按钮 */ - private Set btnList; + private List btnList; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index a008e363..3d16ecc4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -94,8 +94,11 @@ public class ChangeRecordController implements ChangeRecordApi { @Override public ApiResult visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) { VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId()); -// resp.setBtnList(VisaButtonTypeEnum.all()); - resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); + + if (req.isNeedBtnList()) { +// resp.setBtnList(VisaButtonTypeEnum.sort(VisaButtonTypeEnum.all())); + resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); + } return ApiResult.ok(resp); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index 9356d95a..a27de3f9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -58,7 +58,7 @@ public interface ChangeRecordConfirmService { * 获取按钮集合 * 确认人与发起人的不同的单据状态,按钮列表不相同 */ - Set fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status); + List fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status); /** * 权限过滤 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 746a954b..a7e5053a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -128,7 +128,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status) { + public List fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status) { Set bizTypes = fetchBizTypesByCondition(visaId, personId, ouId, workspaceId); //添加审批人添加到集合bizTypes中 this.addBizTypeApprove(bizTypes, visaId, personId, ouId, workspaceId); @@ -149,7 +149,11 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 10:23:36 +0800 Subject: [PATCH 249/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=B7=BB=E5=8A=A0=E7=BE=A4=E6=88=90=E5=91=98?= =?UTF-8?q?=E7=9A=84=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupAddMembersEventHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index a43b1d31..6323374c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -18,6 +18,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.groovy.util.Maps; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -87,7 +88,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing notice.setBizCode(String.valueOf(visaId)); notice.setBizExtParams(new JSONObject(Maps.of( "initiatorName", ownerProfile.getRealName(), - "visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(), + "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOfCode(visaType).getDesc() : "", "topic", group.getName()))); noticeApi.send(notice); } From 47a6e6f2c095ca6c964debdc59d11cca5c5f80bb Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 20 Feb 2025 10:34:37 +0800 Subject: [PATCH 250/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=B7=BB=E5=8A=A0=E7=BE=A4=E6=88=90=E5=91=98?= =?UTF-8?q?=E7=9A=84=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupsCreatedEventHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index 7bfc6075..9c854122 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -32,6 +32,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.groovy.util.Maps; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -132,7 +133,7 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe "reason", visa.getReason(), "initiatorName", profile.getRealName(), "initiatorUnitName", unitInfo.getName(), - "visaType", VisaTypeEnum.valueOf(visaType).getDesc(), + "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOfCode(visaType).getDesc() : "", "amountChange", VisaHelper.buildChangeAmount(visa.getAmountChange()) ))); msgCenterGateway.sendCardToCroup(cardRequest); From 7438e47cded3a365c1d4aca3c778274d33cf1885 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 10:41:29 +0800 Subject: [PATCH 251/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=B8=8E=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/ChangeStatusRequest.java | 7 +++++++ .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java index f29eb0ae..820e1e28 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java @@ -79,6 +79,13 @@ public class ChangeStatusRequest { */ private List oldAttach; + /** + * 是否编辑表单 + * true:编辑表单 + * false:非编辑表单 + */ + private boolean editFormFlag = true; + public void check() { if (Objects.nonNull(logType) && !VisaLogTypeEnum.isApproveNotAgree(logType)) { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1eb3e651..18c84c35 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -305,7 +305,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl [审批中] 执行变更签证属性变更 if (Objects.nonNull(param.getOldStatus()) && Objects.nonNull(param.getNewStatus()) && VisaStatusEnum.isEditForm(param.getOldStatus()) - && param.getNewStatus().equals(VisaStatusEnum.APPROVING)) { + && param.getNewStatus().equals(VisaStatusEnum.APPROVING) && request.isEditFormFlag()) { logList.addAll(changeRecordLogService.buildLogList(request.getVisaId(), VisaLogTypeEnum.EDIT_FORM, param)); } // 2 状态变更,引发的操作日志记录 @@ -723,6 +723,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 10:51:41 +0800 Subject: [PATCH 252/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=B8=8E=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/process/ProcessInstanceAllEventHandler.java | 2 ++ .../java/cn/axzo/nanopart/visa/server/service/VisaHelper.java | 1 + .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 ++ 3 files changed, 5 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 684e536d..9e9eb341 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -160,6 +160,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .ouId(Long.valueOf(lastOperationAssigner.getOuId())) .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(VisaStatusEnum.COMPLETED) + .editFormFlag(false) .build()); return; } @@ -170,6 +171,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .ouId(Long.valueOf(lastOperationAssigner.getOuId())) .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) + .editFormFlag(false) .build()); // 取消当前主单据关联的其他单据的关联状态 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 65bfb014..3160571e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -102,6 +102,7 @@ public class VisaHelper { .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) .newAttach(newContext.getAttachList()) .oldAttach(oldContext.getAttachList()) + .editFormFlag(true) .build()); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 18c84c35..1e0efb95 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -680,6 +680,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 11:23:10 +0800 Subject: [PATCH 253/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=9E=9A=E4=B8=BE=E8=BD=AC=E6=8D=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java | 5 ----- .../server/mq/listener/im/ImGroupAddMembersEventHandler.java | 2 +- .../server/mq/listener/im/ImGroupsCreatedEventHandler.java | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java index f39711c5..e68d11da 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaTypeEnum.java @@ -5,7 +5,6 @@ import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; -import java.util.Arrays; import java.util.Set; /** @@ -30,10 +29,6 @@ public enum VisaTypeEnum { private static final Set changeApprovedSet = Sets.newHashSet(DESIGN_CHANGE, TECHNOLOGY_APPROVED); private static final Set projectVisaSet = Sets.newHashSet(PROJECT_VISA); - public static VisaTypeEnum valueOfCode(String code) { - return Arrays.stream(VisaTypeEnum.values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null); - } - /** * 设计变更/技术核定 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index 6323374c..5e70d8aa 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -88,7 +88,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing notice.setBizCode(String.valueOf(visaId)); notice.setBizExtParams(new JSONObject(Maps.of( "initiatorName", ownerProfile.getRealName(), - "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOfCode(visaType).getDesc() : "", + "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "", "topic", group.getName()))); noticeApi.send(notice); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index 9c854122..1d7bb415 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -133,7 +133,7 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe "reason", visa.getReason(), "initiatorName", profile.getRealName(), "initiatorUnitName", unitInfo.getName(), - "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOfCode(visaType).getDesc() : "", + "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "", "amountChange", VisaHelper.buildChangeAmount(visa.getAmountChange()) ))); msgCenterGateway.sendCardToCroup(cardRequest); From 39c3a295a2ccde67a7434c0d2d7ebcef3b9ea459 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 11:55:27 +0800 Subject: [PATCH 254/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=8F=98=E6=9B=B4/=E9=99=84=E4=BB=B6=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/ChangeStatusRequest.java | 6 +-- .../visa/server/dto/VisaLogParam.java | 38 ++++++++++++++++++- .../service/impl/ChangeRecordServiceImpl.java | 37 +++++++++++++++--- 3 files changed, 71 insertions(+), 10 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java index 820e1e28..674ee59d 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeStatusRequest.java @@ -3,7 +3,7 @@ package cn.axzo.nanopart.visa.api.request; import cn.axzo.framework.domain.ServiceException; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; -import com.alibaba.fastjson.JSONObject; +import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -73,11 +73,11 @@ public class ChangeStatusRequest { /** * 新的附件 */ - private List newAttach; + private List newAttach; /** * 原的附件 */ - private List oldAttach; + private List oldAttach; /** * 是否编辑表单 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java index 89aa170a..8dd99778 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaLogParam.java @@ -94,12 +94,29 @@ public class VisaLogParam { return fetchChangeAttach(oldAttach, newAttach); } + /** + * 获取删除附件信息 + */ + public static List deleteAttachWithObject(List oldAttach, List newAttach) { + return fetchChangeAttachWithObject(oldAttach, newAttach); + } + /** * 获取上传的附件信息 */ public static List uploadAttach(List newAttach, List oldAttach) { return fetchChangeAttach(newAttach, oldAttach); } + + /** + * 获取上传的附件信息 + */ + public static List uploadAttachWithObject(List newAttach, List oldAttach) { + return fetchChangeAttachWithObject(newAttach, oldAttach); + } + + + /** * 获取变动的附件信息 * 计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素,例如: @@ -116,7 +133,26 @@ public class VisaLogParam { } List newFileDtoList = VisaDetailByIdResponse.VisaUploadFile.createListByJson(compareSec); - Collection substractList = CollUtil.subtractToList(oldFileDtoList, newFileDtoList); + return fetchChangeAttachWithObject(oldFileDtoList, newFileDtoList); + } + + + + /** + * 获取变动的附件信息 + * 计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素,例如: + * subtractToList([1,2,3,4],[2,3,4,5]) -》 [1] + */ + private static List fetchChangeAttachWithObject(List compareFir, List compareSec) { + if (CollectionUtils.isEmpty(compareFir)) { + return Lists.newArrayList(); + } + + if (CollectionUtils.isEmpty(compareSec)) { + return compareFir.stream().map(VisaDetailByIdResponse.VisaUploadFile::getFileName).collect(Collectors.toList()); + } + + Collection substractList = CollUtil.subtractToList(compareFir, compareSec); if (CollectionUtils.isEmpty(substractList)) { return Lists.newArrayList(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 1e0efb95..0ca0bbb6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -263,8 +263,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles = this.buildAttachUploadFile(req.getId()); + /*保存签证信息*/ Long visaId = tempCreateVisaChangeRecord(req); @@ -717,16 +720,38 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles) { + ChangeStatusRequest changeStatusRequest = ChangeStatusRequest.builder() .visaId(visaId) .updateStatus(VisaStatusEnum.APPROVING) .personId(req.getOperatorPersonId()) .ouId(req.getOperatorOuId()) .workspaceId(req.getRelationWorkspaceId()) .editFormFlag(true) - .build()); - return visaId; + .newAmountChange(req.getAmountChange()) + .oldAmountChange(changeRecord.getAmountChange()) + .build(); + + if (CollectionUtils.isNotEmpty(req.getAttach())) { + changeStatusRequest.setNewAttach(BeanUtil.copyToList(req.getAttach(), VisaDetailByIdResponse.VisaUploadFile.class)); + } + if (CollectionUtils.isNotEmpty(visaUploadFiles)) { + changeStatusRequest.setOldAttach(visaUploadFiles); + } + // 更新主表状态 + changeStatus(changeStatusRequest); } private String createProcessInstance(VisaChangeApproveCreateReq req, Long visaId) { From fe8b3cd32c771542689d918b414c0560a90a2283 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 12:51:46 +0800 Subject: [PATCH 255/341] feat: (REQ-3300) fix-complier-error --- .../java/cn/axzo/nanopart/visa/server/service/VisaHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 3160571e..216a0e94 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -100,8 +100,8 @@ public class VisaHelper { .workspaceId(newContext.getWorkspaceId()) .newAmountChange(newContext.getChangeRecord().getAmountChange()) .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) - .newAttach(newContext.getAttachList()) - .oldAttach(oldContext.getAttachList()) +// .newAttach(newContext.getAttachList()) +// .oldAttach(oldContext.getAttachList()) .editFormFlag(true) .build()); } From 4f391a49142285ab2e53472337d737f727f52330 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 13:09:25 +0800 Subject: [PATCH 256/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=8A=A0=E4=B8=8A=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordLogServiceImpl.java | 3 ++- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 55eb4205..c8b15987 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -16,6 +16,7 @@ import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -79,7 +80,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl buildLogList(Long visaId, VisaLogTypeEnum type, VisaLogParam param) { - + log.info("buildLogList,visaId={},type={},param={}", visaId, type, JSON.toJSONString(param)); if (Objects.isNull(visaId) || Objects.isNull(type)) { return Lists.newArrayList(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0ca0bbb6..b4d29123 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -246,6 +246,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl logList = Lists.newArrayList(); // 1 由[决策中|执行中] -> [审批中] 执行变更签证属性变更 if (Objects.nonNull(param.getOldStatus()) && Objects.nonNull(param.getNewStatus()) From 86f6709a9a13adf1d77dff947a0148e65bf01268 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 14:16:14 +0800 Subject: [PATCH 257/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=8A=A0=E4=B8=8A=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index b4d29123..ca6aa551 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -709,6 +709,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles = this.buildAttachUploadFile(req.getId()); /*保存签证信息*/ @@ -721,7 +722,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 14:55:20 +0800 Subject: [PATCH 258/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=20MQ=20=E7=9B=91=E5=90=AC=E6=8A=9B=E5=87=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index 1d7bb415..60f696dd 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -88,6 +88,7 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe sendCardAndMsgToImGroup(group); } catch (Exception e) { log.error("send msg to im group error: {}", e.getMessage(), e); + throw e; } log.info("receive create im group event, handle success: {}", JSON.toJSONString(event)); } From 26e4e6c8bf72f8c831e8d1afc7cd3530936c7733 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 20 Feb 2025 15:06:44 +0800 Subject: [PATCH 259/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=BB=E5=8D=95=E6=8D=AE=E5=88=9B=E5=BB=BA=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E6=97=B6,=E5=B0=B1=E5=8F=91=E9=80=81=E5=8D=A1=E7=89=87,?= =?UTF-8?q?=E8=80=8C=E4=B8=8D=E5=86=8D=E7=9B=91=E5=90=AC=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupsCreatedEventHandler.java | 3 ++- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index 60f696dd..f49d53a5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -85,7 +85,8 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe GroupInfo group = groupChangedMessage.getGroup(); AssertUtil.notNull(group, "group info is null"); try { - sendCardAndMsgToImGroup(group); + // 转移到创建群聊立即发送卡片 + // sendCardAndMsgToImGroup(group); } catch (Exception e) { log.error("send msg to im group error: {}", e.getMessage(), e); throw e; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index ca6aa551..fbbc1eeb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -673,6 +673,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 16:01:56 +0800 Subject: [PATCH 260/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=BE=A4=E8=81=8A=E5=8F=8A=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fbbc1eeb..da06caa5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -672,6 +672,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 17:12:31 +0800 Subject: [PATCH 261/341] =?UTF-8?q?feat(REQ-3300):=20=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=9B=BE=E7=BA=B8=E7=BB=91=E5=AE=9A=E5=85=B3=E7=B3=BB=E8=87=B3?= =?UTF-8?q?=E5=9B=BE=E7=BA=B8=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 审批不通过和废止时同步取消绑定关系,提交审批时同步绑定关系 --- .../ProcessInstanceAllEventHandler.java | 2 + .../rpc/DrawingAnnotationApiGateway.java | 45 ++++++++++++++++ .../server/service/ChangeRecordService.java | 12 +++++ .../service/impl/ChangeRecordServiceImpl.java | 54 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 9e9eb341..23ef2965 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -176,6 +176,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P // 取消当前主单据关联的其他单据的关联状态 changeRecordBillService.billRelationStatus(visaId, false); + // 取消图纸绑定关系 + changeRecordService.syncDrawAnnotationUnBindRelation(visaId); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java new file mode 100644 index 00000000..b7b5e19c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java @@ -0,0 +1,45 @@ +package cn.axzo.nanopart.visa.server.rpc; + +import cn.axzo.nanopart.visa.server.utils.RpcUtil; +import cn.axzo.thor.client.enums.DrawingAnnotationBizEnum; +import cn.axzo.thor.client.feign.DrawingAnnotationApi; +import cn.axzo.thor.client.model.BindDrawingAnnotationDTO; +import cn.axzo.thor.client.model.UnbindDrawingAnnotationDTO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/19 20:09 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DrawingAnnotationApiGateway { + + private final DrawingAnnotationApi drawingAnnotationApi; + + public void bindBusiness(Long visasId, Set annotationIds) { + BindDrawingAnnotationDTO bindDrawingAnnotationDTO = BindDrawingAnnotationDTO.builder() + .drawingAnnotationIds(annotationIds) + .businessType(DrawingAnnotationBizEnum.VISA_CHANGE) + .businessId(String.valueOf(visasId)) + .build(); + RpcUtil.rpcCommonProcessor(()->drawingAnnotationApi.bindBusiness(bindDrawingAnnotationDTO), + "sync visa and drawing annotation bind relation to thor", bindDrawingAnnotationDTO); + } + + public void unbindBusiness(Long visasId, Set annotationIds) { + UnbindDrawingAnnotationDTO unbindDrawingAnnotationDTO = UnbindDrawingAnnotationDTO.builder() + .drawingAnnotationIds(annotationIds) + .businessType(DrawingAnnotationBizEnum.VISA_CHANGE) + .businessId(String.valueOf(visasId)) + .build(); + RpcUtil.rpcCommonProcessor(()->drawingAnnotationApi.unbindBusiness(unbindDrawingAnnotationDTO), + "sync visa and drawing annotation unbind relation to thor", unbindDrawingAnnotationDTO); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index cf46aa92..89de40e2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -134,4 +134,16 @@ public interface ChangeRecordService extends IService { */ PageData list(VisaSearchReq req); + /** + * 同步图纸与变更签证单关联关系 + * @param visaId 变更签证Id + */ + void syncDrawAnnotationBindRelation(Long visaId); + + /** + * 同步图纸与变更签证单解除关联关系 + * @param visaId 变更签证Id + */ + void syncDrawAnnotationUnBindRelation(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index da06caa5..da5f64c4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -74,6 +74,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.ApolloTaskOrderApiGateway; +import cn.axzo.nanopart.visa.server.rpc.DrawingAnnotationApiGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; @@ -240,6 +241,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl relationDrawAnnotation = getRelationDrawAnnotation(visaId); + if (CollectionUtils.isNotEmpty(relationDrawAnnotation)) { + Set annotationIds = relationDrawAnnotation.stream() + .map(VisaChangeTempCreateReq.ChangeContextAndDescription::getAnnotationId) + .collect(Collectors.toSet()); + drawingAnnotationApiGateway.bindBusiness(visaId, annotationIds); + } + } + + @Override + public void syncDrawAnnotationUnBindRelation(Long visaId) { + List relationDrawAnnotation = getRelationDrawAnnotation(visaId); + if (CollectionUtils.isNotEmpty(relationDrawAnnotation)) { + Set annotationIds = relationDrawAnnotation.stream() + .map(VisaChangeTempCreateReq.ChangeContextAndDescription::getAnnotationId) + .collect(Collectors.toSet()); + drawingAnnotationApiGateway.unbindBusiness(visaId, annotationIds); + } } private List buildApprovers(List approvePersonInfoList) { @@ -1537,6 +1565,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl getRelationDrawAnnotation(Long visaId) { + List contentDescription = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.CONTENT_DESCRIPTION.name()); + if (CollectionUtils.isNotEmpty(contentDescription)) { + return contentDescription.stream() + .map(item -> { + try { + return JSONObject.parseObject(item.getContent(), VisaChangeTempCreateReq.ChangeContextAndDescription.class); + } catch (Exception e) { + throw new ServiceException("发生内容说明解析失败"); + } + }) + .filter(item -> Objects.nonNull(item) && Objects.equals(item.getType(), 2)) + .collect(Collectors.toList()); + } + return Collections.emptyList(); + } + private void validOperationPermission(Long visaId, Long personId, Long ouId, Long workspaceId) { List confirmUsers = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() .visaId(visaId) @@ -1709,6 +1761,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 17:23:52 +0800 Subject: [PATCH 262/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=9A=84=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E4=BF=A1=E6=81=AF=E6=8B=BC=E6=8E=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/changerecord/ChangeRecordApi.java | 8 ++++++++ .../controller/ChangeRecordController.java | 6 ++++++ .../server/service/ChangeRecordService.java | 1 + .../service/impl/ChangeRecordServiceImpl.java | 17 ++++++++++++----- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index fadb3718..0cbec102 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -173,4 +173,12 @@ public interface ChangeRecordApi { */ @PostMapping("/api/visa/change/list") ApiPageResult list(@RequestBody @Validated VisaSearchReq req); + + /** + * test + * + * @return + */ + @PostMapping("/api/test") + ApiResult test(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index 3d16ecc4..e96c75ba 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -180,4 +180,10 @@ public class ChangeRecordController implements ChangeRecordApi { public ApiResult> getBillIfRelated(GetBillIfRelatedReq req) { return ApiResult.ok(changeRecordBillService.getBillIfRelated(req)); } + + @Override + public ApiResult test() { + changeRecordService.test(); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index cf46aa92..2164df81 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -134,4 +134,5 @@ public interface ChangeRecordService extends IService { */ PageData list(VisaSearchReq req); + void test(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index da06caa5..125ae6f8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -736,9 +736,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles) { @@ -879,6 +880,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl> maps = buildUnitPerson(createReq.getRelationUnitAndPersonList(), createReq.getRelationWorkspaceId()); + log.info("result: {}", JSON.toJSONString(maps)); + } } From 192b15f11ac646f544563008aa09dea5c10e2e7f Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 17:29:05 +0800 Subject: [PATCH 263/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=8A=A0=E4=B8=8A=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/ChangeRecordService.java | 11 +++++++++++ .../visa/server/service/VisaHelper.java | 18 +++++++++++++++++- .../service/impl/ChangeRecordServiceImpl.java | 11 ++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index cf46aa92..93630cde 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -19,6 +19,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; import cn.axzo.nanopart.visa.api.response.VisaSearchResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; +import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -56,6 +57,16 @@ public interface ChangeRecordService extends IService { */ VisaDetailByIdResponse detailById(Long visaId); + /** + * 附件对象转换 + */ + List buildAttachUploadFileByRelation(List attachList); + + /** + * 构建上传文件对象集合 + */ + List buildAttachUploadFile(Long visaId); + /** * 创建变更签证 * diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index 216a0e94..e089d529 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest; import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse; @@ -86,7 +87,22 @@ public class VisaHelper { // 由[决策中|执行中] -> [审批中] 执行变更签证属性变更 if (Objects.nonNull(oldContext.getStatus()) && Objects.nonNull(newContext.getStatus()) && VisaStatusEnum.isEditForm(oldContext.getStatus()) - && newContext.getStatus().equals(VisaStatusEnum.APPROVING)) { + && VisaStatusEnum.isEditForm(newContext.getStatus())) { + + List oldUploadFiles = this.changeRecordService.buildAttachUploadFileByRelation(oldContext.getRelationList()); + List newUploadFiles = this.changeRecordService.buildAttachUploadFile(newContext.getChangeRecord().getId()); + + + changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), VisaLogTypeEnum.EDIT_FORM, VisaLogParam.builder() + .personId(newContext.getPersonId()) + .ouId(newContext.getOuId()) + .workspaceId(newContext.getWorkspaceId()) + .newAmountChange(newContext.getChangeRecord().getAmountChange()) + .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) + .uploadAttach(VisaLogParam.uploadAttachWithObject(newUploadFiles, oldUploadFiles)) + .deleteAttach(VisaLogParam.deleteAttachWithObject(oldUploadFiles, newUploadFiles)) + .build()); + logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE , Constants.VISA_LOG_SNAPSHOT_LEVEL , Lists.newArrayList(Constants.VISA_LOG_SNAPSHOT_TAG_SNAPSHOT) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index fbbc1eeb..1ed0ccdc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -486,11 +486,20 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildAttachUploadFile(Long visaId) { + @Override + public List buildAttachUploadFile(Long visaId) { if (Objects.isNull(visaId)) { return Lists.newArrayList(); } List attachList = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.ATTACHMENT.name()); + return this.buildAttachUploadFileByRelation(attachList); + } + + /** + * 附件对象转换 + */ + @Override + public List buildAttachUploadFileByRelation(List attachList) { if (CollectionUtils.isEmpty(attachList)) { return Lists.newArrayList(); } From 9111961327a4336e60b5567a77c3986e59e49cab Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 20 Feb 2025 17:36:43 +0800 Subject: [PATCH 264/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/changerecord/ChangeRecordApi.java | 7 ------- .../visa/server/controller/ChangeRecordController.java | 5 ----- .../nanopart/visa/server/service/ChangeRecordService.java | 1 - .../visa/server/service/impl/ChangeRecordServiceImpl.java | 6 ------ 4 files changed, 19 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 0cbec102..4d02ef5e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -174,11 +174,4 @@ public interface ChangeRecordApi { @PostMapping("/api/visa/change/list") ApiPageResult list(@RequestBody @Validated VisaSearchReq req); - /** - * test - * - * @return - */ - @PostMapping("/api/test") - ApiResult test(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index e96c75ba..d126bd6c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -181,9 +181,4 @@ public class ChangeRecordController implements ChangeRecordApi { return ApiResult.ok(changeRecordBillService.getBillIfRelated(req)); } - @Override - public ApiResult test() { - changeRecordService.test(); - return ApiResult.ok(); - } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index dec391b5..93630cde 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -145,5 +145,4 @@ public interface ChangeRecordService extends IService { */ PageData list(VisaSearchReq req); - void test(); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 4fcd2c2c..57e91114 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1921,10 +1921,4 @@ public class ChangeRecordServiceImpl extends ServiceImpl> maps = buildUnitPerson(createReq.getRelationUnitAndPersonList(), createReq.getRelationWorkspaceId()); - log.info("result: {}", JSON.toJSONString(maps)); - } } From 7d1f1241c7531d378e9c908382db2fbda690a270 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 20 Feb 2025 18:42:34 +0800 Subject: [PATCH 265/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BF=9D=E5=AD=98=E5=B0=8F=E6=95=B0=E7=82=B9?= =?UTF-8?q?=E5=90=8E2=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/server/service/VisaHelper.java | 8 ++++---- .../server/service/impl/ChangeRecordLogServiceImpl.java | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java index e089d529..8eb1bf88 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java @@ -97,10 +97,10 @@ public class VisaHelper { .personId(newContext.getPersonId()) .ouId(newContext.getOuId()) .workspaceId(newContext.getWorkspaceId()) - .newAmountChange(newContext.getChangeRecord().getAmountChange()) - .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) - .uploadAttach(VisaLogParam.uploadAttachWithObject(newUploadFiles, oldUploadFiles)) - .deleteAttach(VisaLogParam.deleteAttachWithObject(oldUploadFiles, newUploadFiles)) + .newAmountChange(newContext.getChangeRecord().getAmountChange()) + .oldAmountChange(oldContext.getChangeRecord().getAmountChange()) + .uploadAttach(VisaLogParam.uploadAttachWithObject(newUploadFiles, oldUploadFiles)) + .deleteAttach(VisaLogParam.deleteAttachWithObject(oldUploadFiles, newUploadFiles)) .build()); logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index c8b15987..6a1c55ef 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -16,6 +16,7 @@ import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -114,7 +115,9 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 19:00:48 +0800 Subject: [PATCH 266/341] =?UTF-8?q?feat(REQ-3300):=20=E6=8F=90=E5=87=BA?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=A1=E9=AA=8C=E8=8C=83=E5=9B=B4=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index da5f64c4..3fdb92eb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1395,7 +1395,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 20 Feb 2025 19:02:01 +0800 Subject: [PATCH 267/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20IM=20=E7=BE=A4=E5=86=85=E6=B5=AE=E6=9D=A1=E7=9A=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 04cd4f59..0029ae3a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -217,6 +217,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 09:40:56 +0800 Subject: [PATCH 268/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E5=8A=A0=E4=B8=8A=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/ChangeRecordAppendAttachReq.java | 2 ++ .../impl/ChangeRecordRelationServiceImpl.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java index 5e82d694..6949d3b3 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java @@ -36,4 +36,6 @@ public class ChangeRecordAppendAttachReq { private Long operatorOuId; + private Long operatorWorkspaceId; + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 04cd4f59..4821eb37 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.im.center.api.vo.PersonAccountAttribute; import cn.axzo.im.center.api.vo.req.SendChatMessageRequest; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; +import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; @@ -20,11 +21,13 @@ import cn.axzo.nanopart.visa.api.response.ImGroupButton; import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecord; import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; +import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.dto.VisaRelationDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; +import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; @@ -68,6 +71,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl uploadAttachFileNameList = req.getAttach().stream().map(item -> item.getFileName()).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(uploadAttachFileNameList)) { + changeRecordLogService.batchAddLog(req.getVisaId(), VisaLogTypeEnum.UPLOAD_FILE + , VisaLogParam.builder().personId(req.getOperatorPersonId()) + .ouId(req.getOperatorOuId()) + .workspaceId(req.getOperatorWorkspaceId()) + .uploadAttach(uploadAttachFileNameList).build()); + } + + } + + } From 2ad07b7122851fcb9a68d17b79253f013079e8d1 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 21 Feb 2025 10:30:14 +0800 Subject: [PATCH 269/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=B6=E7=9A=84=E5=8D=95=E6=8D=AE=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 54d7eac9..6b86ef35 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -197,7 +197,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 10:41:41 +0800 Subject: [PATCH 270/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=B6=E7=9A=84=E5=8D=95=E6=8D=AE=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 6b86ef35..e7610bf5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -197,8 +197,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl existsAttach = findByCondition(VisaRelationDto.builder() From e96dfcc5cdeafd07b0c2554708034ba3b1e696a6 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 21 Feb 2025 10:47:52 +0800 Subject: [PATCH 271/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E5=8A=A0=E4=B8=8A=E6=97=A5?= =?UTF-8?q?=E5=BF=97-=E5=85=A5=E5=8F=82=E5=8A=A0=E4=B8=8AworkspaceId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/ChangeRecordAppendAttachReq.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java index 6949d3b3..3c73c04c 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java @@ -36,6 +36,6 @@ public class ChangeRecordAppendAttachReq { private Long operatorOuId; - private Long operatorWorkspaceId; + private Long workspaceId; } From eb003ab0ab3abf00ab3a8cf85db44855caf644de Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 21 Feb 2025 11:07:07 +0800 Subject: [PATCH 272/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E5=8A=A0=E4=B8=8A=E6=97=A5?= =?UTF-8?q?=E5=BF=97-=E5=85=A5=E5=8F=82=E5=8A=A0=E4=B8=8AworkspaceId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index e7610bf5..0456e0b6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -358,11 +358,14 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl uploadAttachFileNameList = req.getAttach().stream().map(item -> item.getFileName()).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(uploadAttachFileNameList)) { + if (CollectionUtils.isNotEmpty(uploadAttachFileNameList) + && Objects.nonNull(req.getOperatorPersonId()) + && Objects.nonNull(req.getOperatorOuId()) + && Objects.nonNull(req.getWorkspaceId())) { changeRecordLogService.batchAddLog(req.getVisaId(), VisaLogTypeEnum.UPLOAD_FILE , VisaLogParam.builder().personId(req.getOperatorPersonId()) .ouId(req.getOperatorOuId()) - .workspaceId(req.getOperatorWorkspaceId()) + .workspaceId(req.getWorkspaceId()) .uploadAttach(uploadAttachFileNameList).build()); } From 547bb4e03faa38579871de19d738ff17a072d398 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 21 Feb 2025 11:30:39 +0800 Subject: [PATCH 273/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E5=8A=A0=E4=B8=8A=E6=97=A5?= =?UTF-8?q?=E5=BF=97-=E5=85=A5=E5=8F=82=E5=8A=A0=E4=B8=8AworkspaceId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordRelationServiceImpl.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 0456e0b6..fdb16260 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -30,6 +30,7 @@ import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -356,22 +357,33 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl uploadAttachFileNameList = req.getAttach().stream().map(item -> item.getFileName()).collect(Collectors.toList()); + //单独上传附件-追加操作日志 + this.addLogWhenAttachAppend(req.getAttach(), req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getWorkspaceId()); + } + + /** + * 单独上传附件-追加操作日志 + * @param attach 上传附件信息 + * @param visaId 变更签证Id + * @param personId 人员Id + * @param ouId 单位id + * @param workspaceId 项目Id + */ + private void addLogWhenAttachAppend(List attach, Long visaId, Long personId, Long ouId, Long workspaceId) { + if (CollectionUtils.isNotEmpty(attach)) { + List uploadAttachFileNameList = attach.stream().map(item -> item.getFileName()).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(uploadAttachFileNameList) - && Objects.nonNull(req.getOperatorPersonId()) - && Objects.nonNull(req.getOperatorOuId()) - && Objects.nonNull(req.getWorkspaceId())) { - changeRecordLogService.batchAddLog(req.getVisaId(), VisaLogTypeEnum.UPLOAD_FILE - , VisaLogParam.builder().personId(req.getOperatorPersonId()) - .ouId(req.getOperatorOuId()) - .workspaceId(req.getWorkspaceId()) + && Objects.nonNull(personId) + && Objects.nonNull(ouId) + && Objects.nonNull(workspaceId)) { + changeRecordLogService.batchAddLog(visaId, VisaLogTypeEnum.UPLOAD_FILE + , VisaLogParam.builder().personId(personId) + .ouId(ouId) + .workspaceId(workspaceId) .uploadAttach(uploadAttachFileNameList).build()); } } - - } @Override From cca98d43bc8e9810883d274c3fd3d3e5d57a8384 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 21 Feb 2025 14:45:20 +0800 Subject: [PATCH 274/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BE=A4=E8=81=8A=E9=87=8D=E5=A4=8D=E5=88=9B=E5=BB=BA=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 57e91114..63aad0a9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -102,6 +102,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -681,9 +682,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 14:54:01 +0800 Subject: [PATCH 275/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E5=A2=9E=E5=8A=A0=E6=97=A0=E6=95=88=E7=9A=84=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E7=AD=BE=E8=AF=81id=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaStatusEnum.java | 16 ++++++++++++-- .../api/response/VisaDetailByIdResponse.java | 5 +++++ .../service/impl/ChangeRecordServiceImpl.java | 21 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java index fefa3774..4cee0a85 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaStatusEnum.java @@ -26,8 +26,8 @@ public enum VisaStatusEnum { APPROVING("approving","审批中", VisaLogTypeEnum.TO_APPRROVE), COMPLETED("completed","已完成",VisaLogTypeEnum.APPROVE_COMPLETED), FORBIDED("forbided","已废除",VisaLogTypeEnum.FORBIDED), - REPORT_FROM_APPROVE("report_from_approve","审批到待提报", null), - DECIDING_FROM_APPROVE("deciding_from_approve","审批到决策中", null), + REPORT_FROM_APPROVE("report_from_approve","审批不通过到待提报", null), + DECIDING_FROM_APPROVE("deciding_from_approve","审批不通过到决策中", null), ; /** @@ -35,6 +35,11 @@ public enum VisaStatusEnum { */ private static Set editFormStatus = Sets.newHashSet(DECIDING, EXECUTING, DECIDING_FROM_APPROVE); + /** + * 无效状态集合,审批不通过到待提报/已废除 + */ + private static Set detailPageInvalidStatus = Sets.newHashSet(REPORT_FROM_APPROVE, FORBIDED); + private final String code; private final String desc; private final VisaLogTypeEnum logType; @@ -56,5 +61,12 @@ public enum VisaStatusEnum { return Arrays.asList(VisaStatusEnum.values()); } + /** + * 无效状态集合,审批不通过到待提报/已废除 + */ + public static Set detailPageInvalidStatus() { + return detailPageInvalidStatus; + } + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index d20eafaa..53820231 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -186,6 +186,11 @@ public class VisaDetailByIdResponse { */ private List relationVisaList; + /** + * 关联无效的变更单 + */ + private List relationInvalidVisaList; + /** * 状态 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 57e91114..d319246c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -423,6 +423,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl detailPageInvalidVisaIdList(List visaIdList) { + + if (CollectionUtils.isEmpty(visaIdList)) { + return Collections.emptyList(); + } + + VisaChangePageSearchReq req = new VisaChangePageSearchReq(); + req.setVisaIds(visaIdList.stream().map(item -> Long.valueOf(item)).collect(Collectors.toList())); + req.setStatuses(Lists.newArrayList(VisaStatusEnum.detailPageInvalidStatus())); + + List changeRecords = this.getFilter(req).list(); + if (CollectionUtils.isEmpty(changeRecords)) { + return Collections.emptyList(); + } + return changeRecords.stream().map(item -> item.getId().toString()).collect(Collectors.toList()); + } + /** * 构建变更金额 */ From 77e1151ce20c1374faca906283daa87c6cb79343 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 21 Feb 2025 15:06:14 +0800 Subject: [PATCH 276/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E8=B0=83=E7=94=A8=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/VisaChangePageSearchReq.java | 2 +- .../server/service/impl/ChangeRecordServiceImpl.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index 4940b625..f3002752 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -131,7 +131,7 @@ public class VisaChangePageSearchReq { /** * 主单据类型 *

- * 仅当{@code from}为{@link FromEnum#SELECT}时,该字段才有效 + * 仅当{@code from}为{@link FromEnum#SELECT}且{@code needRelatedBill}为{@code true}时,该字段才有效且不能为空 *

*/ private VisaTypeEnum visaType; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 44dec4cb..3fd6eb03 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1148,7 +1148,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() - .in(CollectionUtils.isNotEmpty(filter.getVisaIds()), ChangeRecord::getId, filter.getVisaIds()) .eq(Objects.nonNull(filter.getVisaId()), ChangeRecord::getId, filter.getVisaId()) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) @@ -1181,7 +1180,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.notNull(r.getType(), "相关单位类型错误"); AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getOuId()), "请选择" + r.getType().getDesc()); - AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc()); + AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getNodeId()), "请选择" + r.getType().getDesc() + "确认人所属部门"); AssertUtil.isTrue(NumberUtil.isPositiveNumber(r.getPersonId()), "请选择" + r.getType().getDesc() + "确认人"); }) .collect(Collectors.groupingBy(VisaChangeTempCreateReq.RelationUnitAndPerson::getType)); From a58ba5e883ed7fc791efeaa0dcd0f43ea3050b10 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Fri, 21 Feb 2025 16:24:03 +0800 Subject: [PATCH 277/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E8=B0=83=E7=94=A8=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=95=B0=E6=8D=AE2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0f52d356..6f79eb2c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -103,7 +103,6 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Pair; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -1202,11 +1201,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); - AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc())); + AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); }); validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); } else { @@ -1633,6 +1630,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 16:50:56 +0800 Subject: [PATCH 278/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E8=B0=83=E7=94=A8=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=95=B0=E6=8D=AE3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6f79eb2c..e36c11ce 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1196,14 +1196,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 17:08:33 +0800 Subject: [PATCH 279/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BE=A4=E8=81=8A=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e36c11ce..4adaf417 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1712,8 +1712,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 17:12:16 +0800 Subject: [PATCH 280/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BE=A4=E8=81=8A=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 4adaf417..559b87a7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1712,8 +1712,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 17:24:27 +0800 Subject: [PATCH 281/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E7=9A=84=E8=A1=A8=E5=8D=95=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=A2=9E=E5=8A=A0=20workspaceName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/api/constant/VisaConstant.java | 2 ++ .../visa/server/service/impl/ChangeRecordServiceImpl.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 09554c0b..f957f29e 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -38,6 +38,8 @@ public interface VisaConstant { String FORM_FIELD_HAPPEN_TIME = "happenTime"; // 主题 String FORM_FIELD_TOPIC = "topic"; + // 工作台名称 + String FORM_FIELD_WORKSPACE_NAME = "workspaceName"; // 关联工程 String FORM_FIELD_RELATION_PROJECT = "relationProject"; // 关联专业 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 559b87a7..5977c04d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -156,6 +156,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT_PERSON; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE; @@ -204,6 +205,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 17:59:48 +0800 Subject: [PATCH 282/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E7=9A=84=E8=A1=A8=E5=8D=95=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=A2=9E=E5=8A=A0=20workspaceName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 5977c04d..d00a7859 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -205,8 +205,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 21 Feb 2025 18:10:37 +0800 Subject: [PATCH 283/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E8=B0=83=E7=94=A8=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=95=B0=E6=8D=AE3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e36c11ce..93d5cf63 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -126,6 +126,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -1203,7 +1204,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl resetSelectVisaIds(VisaChangePageSearchReq filter) { + if (StringUtils.hasText(filter.getKeyword()) || CollectionUtils.isNotEmpty(filter.getStatuses()) || CollectionUtils.isNotEmpty(filter.getInitiators())) { + filter.setVisaIds(Collections.emptyList()); + } + return filter.getVisaIds(); + } + + /** * 获取权限的变更签证Id集合 */ From b1f86e251c9b8ab28b61b5aa0bc29da611d6e302 Mon Sep 17 00:00:00 2001 From: wangli Date: Sat, 22 Feb 2025 21:28:20 +0800 Subject: [PATCH 284/341] =?UTF-8?q?feat(REQ-3581)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E4=B8=AD?= =?UTF-8?q?=EF=BC=8C=E5=AF=B9=E6=8C=87=E5=AE=9A=E7=9A=84=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=20ID=20=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessInstanceAllEventHandler.java | 21 +++++++++++++++++-- .../task/ProcessTaskAllEventHandler.java | 8 +++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 23ef2965..e0671c21 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -1,5 +1,7 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum; import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum; @@ -17,16 +19,21 @@ import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; +import com.google.common.collect.Lists; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.Date; +import java.util.List; import java.util.Objects; import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED; /** * 工作流广播的实例维度的所有事件类型 @@ -39,6 +46,11 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P protected final ChangeRecordService changeRecordService; protected final ChangeRecordRelationService changeRecordRelationService; protected final ChangeRecordBillService changeRecordBillService; + public static List SUPPORTED_DEFINITION_KEYS = Lists.newArrayList( + DESIGN_CHANGE.getProcessDefinitionKey(), + TECHNOLOGY_APPROVED.getProcessDefinitionKey(), + PROJECT_VISA.getProcessDefinitionKey() + ); public ProcessInstanceAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway, @@ -56,6 +68,11 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P return Integer.MIN_VALUE; } + @Override + public boolean accept(ProcessInstanceDTO dto, Event event, EventConsumer.Context context) { + return SUPPORTED_DEFINITION_KEYS.contains(dto.getProcessDefinitionKey()); + } + @Override public void onCreated(ProcessInstanceDTO dto) { ProcessInstanceEventHandler.super.onCreated(dto); @@ -160,7 +177,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .ouId(Long.valueOf(lastOperationAssigner.getOuId())) .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(VisaStatusEnum.COMPLETED) - .editFormFlag(false) + .editFormFlag(false) .build()); return; } @@ -171,7 +188,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P .ouId(Long.valueOf(lastOperationAssigner.getOuId())) .workspaceId(Long.valueOf(lastOperationAssigner.getTenantId())) .updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) - .editFormFlag(false) + .editFormFlag(false) .build()); // 取消当前主单据关联的其他单据的关联状态 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java index cb227dcf..821e7416 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/task/ProcessTaskAllEventHandler.java @@ -1,5 +1,7 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.task; +import cn.axzo.framework.rocketmq.Event; +import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventProducer; import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp; import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog; @@ -14,6 +16,7 @@ import java.util.Objects; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS; import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; +import static cn.axzo.nanopart.visa.server.mq.listener.workflow.process.ProcessInstanceAllEventHandler.SUPPORTED_DEFINITION_KEYS; /** * 工作流广播的任务维度的所有事件类型 @@ -33,6 +36,11 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce return Integer.MAX_VALUE; } + @Override + public boolean accept(ProcessTaskDTO dto, Event event, EventConsumer.Context context) { + return SUPPORTED_DEFINITION_KEYS.contains(dto.getProcessDefinitionKey()); + } + @Override public void onAssigned(ProcessTaskDTO dto) { ProcessTaskEventHandler.super.onAssigned(dto); From 93ff2494d97ef7a63b814dfbb6f09711a36736c0 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 10:02:20 +0800 Subject: [PATCH 285/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=9A=84=E5=8D=95=E6=8D=AE=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E6=B7=BB=E5=8A=A0=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index fdb16260..c8b2be30 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -326,8 +326,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl existsAttach = findByCondition(VisaRelationDto.builder() From 05a8a3a52fdbdbfc241cefcd5489f4a2a04ec429 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 24 Feb 2025 11:28:16 +0800 Subject: [PATCH 286/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e4968e1e..0d01e2d1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.apollo.api.req.QueryOrderToBasicReq; +import cn.axzo.apollo.api.res.ConstructionAreaInfo; import cn.axzo.apollo.api.res.TaskOrderToBasicRes; import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes; import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp; @@ -1443,6 +1444,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl areaByIds = apolloConstructionAreaGateway.getAllConstructionAreaByIds(req.getRelationArea().toJavaList(Long.class)); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(areaByIds) && areaByIds.size() == req.getRelationArea().size(), "存在发生区域已被删除"); + } // 提出时间合法性 Date now = new Date(); AssertUtil.notNull(req.getHappenTime(), "请选择提交日期"); @@ -1496,10 +1502,24 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); + // 存在性 + QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq(); + queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId()); + queryOrderToBasicReq.setTaskNos(taskNos); + queryOrderToBasicReq.setPage(1); + queryOrderToBasicReq.setPageSize(taskNos.size()); + List taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); + AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); validTaskBillIfRelated(taskNos, req.getType()); } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { /*整改单*/ List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); + // 存在性 + ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder() + .ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet())) + .build(); + List rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试"); validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { /*变更单*/ @@ -1507,7 +1527,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); List relationVisa = listByIds(billIds); - AssertUtil.notEmpty(relationVisa, "关联的单据不存在"); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试"); relationVisa.forEach(r -> { AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); From 2acd078895262b80b3f3d9caef2319844f8da83b Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 24 Feb 2025 11:46:05 +0800 Subject: [PATCH 287/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=8D=95=E5=8D=95=E6=8D=AE=E5=8F=AA=E8=83=BD?= =?UTF-8?q?=E6=98=AF=E5=B7=B2=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 0d01e2d1..bf6751c4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1199,15 +1199,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); - AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); + AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); }); validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); } else { From 9b00b5a71044ecbc40e4de44fc4ae46e9c5b1187 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 12:45:50 +0800 Subject: [PATCH 288/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=E7=A7=BB=E9=99=A4=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index c8b2be30..441a0b00 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -326,7 +326,6 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl existsAttach = findByCondition(VisaRelationDto.builder() From 5f2c9397860cb3dc89223c1057d44d050c5588fb Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Mon, 24 Feb 2025 13:32:42 +0800 Subject: [PATCH 289/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index bf6751c4..d191e9c7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1446,7 +1446,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl areaByIds = apolloConstructionAreaGateway.getAllConstructionAreaByIds(req.getRelationArea().toJavaList(Long.class)); + List areaByIds = apolloConstructionAreaGateway.getAllConstructionAreaByIds(VisaDetailByIdResponse.RelationAreaDetail.buildAreaWithId(req.getRelationArea())); AssertUtil.isTrue(CollectionUtils.isNotEmpty(areaByIds) && areaByIds.size() == req.getRelationArea().size(), "存在发生区域已被删除"); } // 提出时间合法性 From ada63fbd56ac42fbe57a9a2476ccac7c1c478f40 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 13:46:55 +0800 Subject: [PATCH 290/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4=E4=BC=A0?= =?UTF-8?q?=E5=85=A5=E7=BB=99=E5=AE=A1=E6=89=B9=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 441a0b00..d5f38e65 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -73,6 +73,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl relations = changeRecordRelationService.findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.ATTACHMENT.name()) + .build()); + formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, relations.stream().map(ChangeRecordRelation::getContent).collect(Collectors.toList()))); workflowGateway.updateInstanceFormData(formUpdateDto); } //单独上传附件-追加操作日志 From 1dc8218bfc0fd36d9e3f761a8ef0f7e7687576ee Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 14:07:07 +0800 Subject: [PATCH 291/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=20only=20=E6=8E=A5=E5=8F=A3=E4=B8=AD=E7=9A=84=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E5=8F=82=E6=95=B0=E7=9A=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangeApproveCreateReq.java | 2 -- .../service/impl/ChangeRecordServiceImpl.java | 13 +++++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java index cfe71c0c..e98a5b44 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeApproveCreateReq.java @@ -33,8 +33,6 @@ public class VisaChangeApproveCreateReq extends VisaChangeTempCreateReq { */ private List approvePersonInfoList; - // 是否调整单号唯一性校验 - private transient boolean skipNoOnlyOnce = false; @Data @Builder diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index d191e9c7..e585c566 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1432,13 +1432,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 14:18:55 +0800 Subject: [PATCH 292/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=BE=A4=E4=B8=BB=E5=9C=A8=E7=BE=A4=E4=BC=97=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=9D=A1=E7=9A=84=E6=95=B0=E6=8D=AE=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index d5f38e65..7565ec8b 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -288,6 +288,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 14:28:20 +0800 Subject: [PATCH 293/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 7565ec8b..08b5c719 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -73,7 +73,6 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl relations = changeRecordRelationService.findByCondition(VisaRelationDto.builder() + List relations = findByCondition(VisaRelationDto.builder() .visaId(req.getVisaId()) .varName(VisaRelationFieldEnum.ATTACHMENT.name()) .build()); From d59dd18b060eb84065e69af49acec32822d11cc5 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 14:44:56 +0800 Subject: [PATCH 294/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=B5=AE=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 08b5c719..9e71b0a5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -287,8 +287,6 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 15:47:35 +0800 Subject: [PATCH 295/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 9e71b0a5..6bd9b555 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -356,7 +356,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl attachments = relations.stream().map(i -> JSON.parseObject(i.getContent(), UploadFieldDTO.class)).collect(Collectors.toList()); + formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, JSON.toJSONString(attachments))); workflowGateway.updateInstanceFormData(formUpdateDto); } //单独上传附件-追加操作日志 From 64cde32329d53a2ca40c8e0e6cd8a2e8e49d2b37 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 24 Feb 2025 15:50:57 +0800 Subject: [PATCH 296/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E4=B8=AD=E4=B8=8E=E5=B7=B2=E5=AE=8C=E6=88=90=E6=89=8D=E6=9C=89?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/enums/VisaButtonTypeEnum.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java index a0dc5e91..5a333ae8 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/enums/VisaButtonTypeEnum.java @@ -61,17 +61,17 @@ public enum VisaButtonTypeEnum { // 发起人不同状态按钮权限-详情页 bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, FORBID)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, FORBID, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); // 决策人不同状态按钮权限-详情页 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); @@ -80,9 +80,9 @@ public enum VisaButtonTypeEnum { bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD,PRINT)); //其他不同状态按钮权限-详情页 - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); - bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(CHAT_GROUP_RECORD)); + bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(CHAT_GROUP_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD, APPROVAL_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD, APPROVAL_RECORD)); bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD)); From d2b79199a881d127613c7f27825703b6e992d405 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 24 Feb 2025 16:19:36 +0800 Subject: [PATCH 297/341] =?UTF-8?q?feat(REQ-3300)=20-=201.=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=8C=89=E9=92=AE=E5=9B=9E=E6=98=BE=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=EF=BC=9B2.IM=20=E7=BE=A4=E8=81=8A=E6=93=8D=E4=BD=9C=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=A7=BB=E9=99=A4=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/controller/ChangeRecordController.java | 2 +- .../cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java | 5 +++++ .../visa/server/service/ChangeRecordConfirmService.java | 2 +- .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 5 ++++- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 1 - 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java index d126bd6c..a071f049 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordController.java @@ -97,7 +97,7 @@ public class ChangeRecordController implements ChangeRecordApi { if (req.isNeedBtnList()) { // resp.setBtnList(VisaButtonTypeEnum.sort(VisaButtonTypeEnum.all())); - resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus())); + resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus(), resp.getApprovalId())); } return ApiResult.ok(resp); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index fca9c69a..0f15511e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -52,4 +52,9 @@ public class WorkflowGateway { public Boolean updateInstanceFormData(FormVariablesUpdateDTO dto) { return workflowCoreService.updateInstanceFormVariables(dto); } + + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "更新指定流程表单最后一次编辑的内容") + public Boolean hasPrintTemplate(String processInstanceId) { + return workflowManageService.hasPrintTemplate(processInstanceId); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java index a27de3f9..a60f4a29 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordConfirmService.java @@ -58,7 +58,7 @@ public interface ChangeRecordConfirmService { * 获取按钮集合 * 确认人与发起人的不同的单据状态,按钮列表不相同 */ - List fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status); + List fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status, String approvalId); /** * 权限过滤 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index a7e5053a..49a6964e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -128,7 +128,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status) { + public List fetchBtnsByCondition(Long visaId, Long personId, Long ouId, Long workspaceId, VisaStatusEnum status, String approvalId) { Set bizTypes = fetchBizTypesByCondition(visaId, personId, ouId, workspaceId); //添加审批人添加到集合bizTypes中 this.addBizTypeApprove(bizTypes, visaId, personId, ouId, workspaceId); @@ -145,6 +145,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 17:06:09 +0800 Subject: [PATCH 298/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/VisaChangePageSearchReq.java | 5 ++ .../service/impl/ChangeRecordServiceImpl.java | 54 +++++++++++-------- 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java index f3002752..299c4e05 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangePageSearchReq.java @@ -110,6 +110,11 @@ public class VisaChangePageSearchReq { */ private Collection visaIds; + /** + * 变更签证Id集合-权限 + */ + private Collection permissionVisaIds; + /** * 是否需要主单据(即是否被其他单据关联)信息 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e585c566..e8d0103d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -118,6 +118,8 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.groovy.util.Maps; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -176,6 +178,7 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCES */ @Slf4j @Service +@RefreshScope public class ChangeRecordServiceImpl extends ServiceImpl implements ChangeRecordService { @Resource @@ -246,6 +249,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl permissionVisaIdSet = this.fetchPermissionVisaIdSet(req); -// if (CollectionUtils.isEmpty(permissionVisaIdSet)) { -// return PageData.builder() -// .page(Math.toIntExact(req.getPage())) -// .pageSize(Math.toIntExact(req.getPageSize())) -// .totalCount(0L) -// .list(Lists.newArrayList()) -// .build(); -// } + if (permissionDataFlag) { + Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(req); + if (CollectionUtils.isEmpty(permissionVisaIdSet)) { + return PageData.builder() + .page(Math.toIntExact(req.getPage())) + .pageSize(Math.toIntExact(req.getPageSize())) + .totalCount(0L) + .list(Lists.newArrayList()) + .build(); + } + } + /*数据查询*/ Page page = getFilter(req).page(new Page<>(req.getPage(), req.getPageSize())); return PageData.builder() @@ -1051,13 +1059,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); - List changeRecordList = Lists.newArrayList(); -// if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) { -// /*获取数据*/ -// changeRecordList = getFilter(filter,permissionVisaIdSet).list(); -// } - changeRecordList = getFilter(filter).list(); + if (permissionDataFlag) { + Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); + if (CollectionUtils.isEmpty(permissionVisaIdSet)) { + return Lists.newArrayList(); + } + } + List changeRecordList = getFilter(filter).list(); if (CollectionUtils.isEmpty(changeRecordList)) { return Collections.emptyList(); } @@ -1097,15 +1105,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); - List changeRecordList = Lists.newArrayList(); -// if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) { -// /*获取数据*/ -// changeRecordList = getFilter(filter,permissionVisaIdSet).list(); -// } + if (permissionDataFlag) { + Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); + AssertUtil.notEmpty(permissionVisaIdSet, "没有数据需要导出"); + } /*获取数据*/ - changeRecordList = getFilter(filter).list(); + List changeRecordList = getFilter(filter).list(); AssertUtil.notEmpty(changeRecordList, "没有数据需要导出"); /*数据转换*/ @@ -1174,6 +1180,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery() + .in(CollectionUtils.isNotEmpty(filter.getPermissionVisaIds()), ChangeRecord::getId, filter.getPermissionVisaIds()) .eq(Objects.nonNull(filter.getVisaId()), ChangeRecord::getId, filter.getVisaId()) .eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId()) .eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType()) @@ -1237,6 +1244,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 17:20:42 +0800 Subject: [PATCH 299/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=B1=8F=E8=94=BD?= =?UTF-8?q?=E4=B8=80=E6=AE=B5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 49a6964e..27003542 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -145,9 +145,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 18:02:29 +0800 Subject: [PATCH 300/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=94=BE=E5=BC=80?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE=E7=9A=84=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 27003542..16c576db 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -145,9 +145,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 18:14:57 +0800 Subject: [PATCH 301/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=94=BE=E5=BC=80?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE=E7=9A=84=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 16c576db..e8241bcc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -145,9 +145,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 19:32:40 +0800 Subject: [PATCH 302/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=94=BE=E5=BC=80?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE=E7=9A=84=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index e8241bcc..16c576db 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -145,9 +145,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 20:07:21 +0800 Subject: [PATCH 303/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=94=BE=E5=BC=80?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=8C=89=E9=92=AE=E7=9A=84=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index 0f15511e..9f5145b6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; /** * @author xudawei @@ -55,6 +56,9 @@ public class WorkflowGateway { @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "更新指定流程表单最后一次编辑的内容") public Boolean hasPrintTemplate(String processInstanceId) { + if(!StringUtils.hasText(processInstanceId)) { + return false; + } return workflowManageService.hasPrintTemplate(processInstanceId); } } From 0f17c98d705d3bab687ea04d313fe5edd73e7e18 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 25 Feb 2025 10:31:01 +0800 Subject: [PATCH 304/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=A0=A1=E9=AA=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rpc/ApolloConstructionAreaGateway.java | 16 ++++++++++++++++ .../service/impl/ChangeRecordServiceImpl.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java index d3fc01ba..cbb26c1c 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java @@ -39,6 +39,22 @@ public class ApolloConstructionAreaGateway { } + public List getConstructionAreaByIds(List areaIds) { + try { + if (CollectionUtils.isEmpty(areaIds)) { + return Lists.newArrayList(); + } + log.info("ApolloConstructionAreaGateway getConstructionAreaByIds,params:{}", JSON.toJSONString(areaIds)); + Result> result = apolloConstructionAreaApi.getAllConstructionAreaByIds(areaIds); + log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,result:{}", JSON.toJSONString(result)); + return result.getData(); + } catch (Exception e) { + log.warn("ApolloConstructionAreaGateway getConstructionAreaByIds exception", e); + throw e; + } + + } + public String generateAreaFullNameByAreaIds(List areaIds) { try { if (CollectionUtils.isEmpty(areaIds)) { diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e8d0103d..57c1363f 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1452,7 +1452,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl areaByIds = apolloConstructionAreaGateway.getAllConstructionAreaByIds(VisaDetailByIdResponse.RelationAreaDetail.buildAreaWithId(req.getRelationArea())); + List areaByIds = apolloConstructionAreaGateway.getConstructionAreaByIds(VisaDetailByIdResponse.RelationAreaDetail.buildAreaWithId(req.getRelationArea())); AssertUtil.isTrue(CollectionUtils.isNotEmpty(areaByIds) && areaByIds.size() == req.getRelationArea().size(), "存在发生区域已被删除"); } // 提出时间合法性 From 865acf47ffba532c7e8cd91ecbe99a03627e484c Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 25 Feb 2025 10:51:02 +0800 Subject: [PATCH 305/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=A0=A1=E9=AA=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java index cbb26c1c..912dc186 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/ApolloConstructionAreaGateway.java @@ -45,7 +45,7 @@ public class ApolloConstructionAreaGateway { return Lists.newArrayList(); } log.info("ApolloConstructionAreaGateway getConstructionAreaByIds,params:{}", JSON.toJSONString(areaIds)); - Result> result = apolloConstructionAreaApi.getAllConstructionAreaByIds(areaIds); + Result> result = apolloConstructionAreaApi.getConstructionAreaByIds(areaIds); log.info("ApolloConstructionAreaGateway getAllConstructionAreaByIds,result:{}", JSON.toJSONString(result)); return result.getData(); } catch (Exception e) { From 5c769ba3c50d0c2397fb3f39ae4568b93b4a9aee Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 25 Feb 2025 11:33:31 +0800 Subject: [PATCH 306/341] =?UTF-8?q?feat(REQ-3300):=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=BA=BA=E8=BF=94=E5=9B=9EnodeId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/response/VisaDetailByIdResponse.java | 5 +++++ .../server/service/impl/ChangeRecordConfirmServiceImpl.java | 1 + 2 files changed, 6 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 53820231..8dbfce50 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -277,6 +277,11 @@ public class VisaDetailByIdResponse { */ private String avatarUrl; + /** + * 节点id + */ + private Long nodeId; + /** * 确认人personId */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 16c576db..69a35563 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -317,6 +317,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl Date: Tue, 25 Feb 2025 14:55:58 +0800 Subject: [PATCH 307/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 57c1363f..b8ac3327 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1805,7 +1805,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 25 Feb 2025 15:09:34 +0800 Subject: [PATCH 308/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E7=9A=84=E5=8F=82=E6=95=B0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=A6=81=E6=B1=82=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index b8ac3327..10af7967 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -874,6 +874,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Tue, 25 Feb 2025 16:13:05 +0800 Subject: [PATCH 309/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=E8=BF=94=E5=9B=9E=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BA=BA=E7=9A=84personId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/response/VisaDetailByIdResponse.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 8dbfce50..d05a1f43 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -211,6 +211,11 @@ public class VisaDetailByIdResponse { */ private String approvalStatus; + /** + * 当前登录人的personId + */ + private Long currentPersonId; + @Data @Builder @NoArgsConstructor From 61bfd78b964100ec3b9d6492e7fa2d2f522b2ec1 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 25 Feb 2025 17:21:22 +0800 Subject: [PATCH 310/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=BC=82=E5=B8=B8=E5=8A=A8=E4=BD=9C?= =?UTF-8?q?=E7=9A=84=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/exception/ExceptionAdviceHandler.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/nanopart-server/src/main/java/cn/axzo/nanopart/config/exception/ExceptionAdviceHandler.java b/nanopart-server/src/main/java/cn/axzo/nanopart/config/exception/ExceptionAdviceHandler.java index 13db216b..1eb2de51 100644 --- a/nanopart-server/src/main/java/cn/axzo/nanopart/config/exception/ExceptionAdviceHandler.java +++ b/nanopart-server/src/main/java/cn/axzo/nanopart/config/exception/ExceptionAdviceHandler.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.config.exception; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.pokonyan.exception.BusinessException; +import cn.axzo.workflow.common.exception.WorkflowEngineException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.util.CollectionUtils; @@ -37,13 +38,13 @@ public class ExceptionAdviceHandler { } @ExceptionHandler(cn.axzo.framework.domain.ServiceException.class) - public ApiResult domainServiceExceptionHandler(cn.axzo.framework.domain.ServiceException e){ + public ApiResult domainServiceExceptionHandler(cn.axzo.framework.domain.ServiceException e) { log.warn("业务异常", e); return ApiResult.err(e.getMessage()); } @ExceptionHandler(BusinessException.class) - public ApiResult businessExceptionHandler(BusinessException e){ + public ApiResult businessExceptionHandler(BusinessException e) { log.warn("业务异常", e); return ApiResult.err(e.getErrorMsg()); } @@ -60,4 +61,10 @@ public class ExceptionAdviceHandler { return ApiResult.err(objectErrorDefaultMessage); } + @ExceptionHandler(WorkflowEngineException.class) + public ApiResult workflowExceptionHandler(WorkflowEngineException e) { + log.warn("业务异常", e); + return ApiResult.err(e.getMessage()); + } + } From 9f54bee47d3c4a725c0df525c30ca29cc23f90cc Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Tue, 25 Feb 2025 18:36:29 +0800 Subject: [PATCH 311/341] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=88=97=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/dto/VisaExportDto.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java index ca1943ef..69b1aeff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/dto/VisaExportDto.java @@ -46,10 +46,16 @@ public class VisaExportDto { private String topic; /** - * 工程 + * 有符号的变更金额 */ - @ExcelProperty("所属工程") - private String relationProject; + @ExcelProperty("金额变化") + private BigDecimal amountChange; + + /** + * 发起人 + */ + @ExcelProperty("发起人") + private String initiator; /** * 提出时间 @@ -57,12 +63,6 @@ public class VisaExportDto { @ExcelProperty("提出时间") private Date happenTime; - /** - * 有符号的变更金额 - */ - @ExcelProperty("金额变化") - private BigDecimal amountChange; - /** * 最终审批时间 */ @@ -70,8 +70,8 @@ public class VisaExportDto { private Date approvalCompleteTime; /** - * 发起人 + * 工程 */ - @ExcelProperty("发起人") - private String initiator; + @ExcelProperty("所属工程") + private String relationProject; } From 6a519363055d306853135319872740233a8387a6 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 10:44:24 +0800 Subject: [PATCH 312/341] =?UTF-8?q?feat(REQ-3300):=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=85=B3=E8=81=94=E5=8D=95=E6=8D=AE=E5=80=BC?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 70 ++++++++++++------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 10af7967..35cac5d9 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1509,38 +1509,53 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList()); - // 存在性 - QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq(); - queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId()); - queryOrderToBasicReq.setTaskNos(taskNos); - queryOrderToBasicReq.setPage(1); - queryOrderToBasicReq.setPageSize(taskNos.size()); - List taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); - AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); - validTaskBillIfRelated(taskNos, req.getType()); + List taskNos = value.stream() + .map(VisaChangeTempCreateReq.OrderSimpleModel::getNo) + .filter(StringUtils::hasText) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(taskNos)) { + // 存在性 + QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq(); + queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId()); + queryOrderToBasicReq.setTaskNos(taskNos); + queryOrderToBasicReq.setPage(1); + queryOrderToBasicReq.setPageSize(taskNos.size()); + List taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); + AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); + validTaskBillIfRelated(taskNos, req.getType()); + } } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { /*整改单*/ - List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); - // 存在性 - ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder() - .ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet())) - .build(); - List rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq); - AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试"); - validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); + List billIds = value.stream() + .map(v -> String.valueOf(v.getId())) + .filter(StringUtils::hasText) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(billIds)) { + // 存在性 + ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder() + .ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet())) + .build(); + List rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试"); + validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType()); + } } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { /*变更单*/ AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证"); // 关联单据合法性,是否存在,状态是否合法 - List billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList()); - List relationVisa = listByIds(billIds); - AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试"); - relationVisa.forEach(r -> { - AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); - AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); - }); - validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); + List billIds = value.stream() + .map(v -> String.valueOf(v.getId())) + .filter(StringUtils::hasText) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(billIds)) { + List relationVisa = listByIds(billIds); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试"); + relationVisa.forEach(r -> { + AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配"); + AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); + }); + validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType()); + } } else { throw new ServiceException("不支持的关联单据类型"); } @@ -1577,6 +1592,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos); + if (CollectionUtils.isEmpty(mainBill)) { + return; + } mainBill.stream() .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) .forEach((k, v) -> v.stream() From 341b751a18a7d647e523007c0827b26a79e53dee Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 26 Feb 2025 10:58:23 +0800 Subject: [PATCH 313/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=94=BE=E5=BC=80mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/rpc/DataObjectApiGateway.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java index 73d4681f..c243c40d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java @@ -1,9 +1,11 @@ package cn.axzo.nanopart.visa.server.rpc; +import cn.axzo.foundation.result.ApiResult; import cn.axzo.karma.client.feign.tyr.DataObjectApi; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; +import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,11 +29,11 @@ public class DataObjectApiGateway { return MatchDataObjectResp.builder().build(); } try { -// log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req)); -// ApiResult match = dataObjectApi.match(req); -// log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); -// return match.getData(); - return mockDataObject(); + log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req)); + ApiResult match = dataObjectApi.match(req); + log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); + return match.getData(); +// return mockDataObject(); } catch (Exception e) { log.warn("DataObjectApiGateway match exception", e); throw e; From da5c4b0570d102c8e5f6608c518f1a5b6db50ecd Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 11:44:53 +0800 Subject: [PATCH 314/341] =?UTF-8?q?feat(REQ-3300):=20=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=AF=BC=E5=87=BAexcel=E8=A1=A8=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 35cac5d9..f3eb0b11 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1157,10 +1157,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 26 Feb 2025 11:49:45 +0800 Subject: [PATCH 315/341] feat(REQ-3300): NPE --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f3eb0b11..c480c276 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1521,7 +1521,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); - AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(taskOrders) && taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); validTaskBillIfRelated(taskNos, req.getType()); } } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { From 808670c5ef09d4e366ddc682c6c1476ce1f7f3bf Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 14:20:43 +0800 Subject: [PATCH 316/341] feat(REQ-3300): NPE --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index c480c276..67e5dcf5 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1993,7 +1993,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Wed, 26 Feb 2025 16:52:18 +0800 Subject: [PATCH 317/341] =?UTF-8?q?feat(REQ-3300):=20=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E5=85=B3=E8=81=94=E5=8D=95=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 91 +++++++++++-------- 1 file changed, 52 insertions(+), 39 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 67e5dcf5..e87aa0e0 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -655,6 +655,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl buildVisaBillDto(VisaChangeTempCreateReq req, ChangeRecord changeRecord) { return req.getRelationOrderMap().entrySet().stream() + .peek(os -> { + if (VisaBillTypeEnum.TASK.name().equals(os.getKey())) { + os.setValue(os.getValue().stream().filter(o -> StringUtils.hasText(o.getNo())).collect(Collectors.toList())); + } else { + os.setValue(os.getValue().stream().filter(o -> NumberUtil.isPositiveNumber(o.getId())).collect(Collectors.toList())); + } + }) .flatMap(os -> os.getValue().stream() .map(o -> VisaBillDto.builder() .visaId(changeRecord.getId()) @@ -1919,53 +1926,59 @@ public class ChangeRecordServiceImpl extends ServiceImpl taskOrderMap = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData() - .stream() - .collect(Collectors.toMap(TaskOrderToBasicRes::getTaskNo, Function.identity())); - // 构建关联任务单 - relationOrderMap.put(k, v.stream() - .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() - .id(item.getBillId()) - .no(item.getBillNo()) - .name(Optional.ofNullable(taskOrderMap.get(item.getBillNo())) - .map(TaskOrderToBasicRes::getTaskName) - .orElse("")) - .build()) - .collect(Collectors.toList())); + List orderData = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); + if (CollUtil.isNotEmpty(orderData)) { + Map taskOrderMap = orderData.stream() + .collect(Collectors.toMap(TaskOrderToBasicRes::getTaskNo, Function.identity())); + // 构建关联任务单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(taskOrderMap.get(item.getBillNo())) + .map(TaskOrderToBasicRes::getTaskName) + .orElse("")) + .build()) + .collect(Collectors.toList())); + } } else if (VisaBillTypeEnum.RECTIFY.name().equals(k)) { // 获取整改单数据 ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder() .ids(v.stream().map(ChangeRecordBill::getBillId).collect(Collectors.toSet())) .build(); - Map rectifyOrderMap = rectifyApiGateway.listRectifyOrders(rectifyOrderReq) - .stream() - .collect(Collectors.toMap(RectifyOrderResp::getId, Function.identity(), (v1, v2) -> v1)); - // 构建关联整改单 - relationOrderMap.put(k, v.stream() - .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() - .id(item.getBillId()) - .no(item.getBillNo()) - .name(Optional.ofNullable(rectifyOrderMap.get(item.getBillId())) - .map(RectifyOrderResp::getBizName) - .orElse("")) - .build()) - .collect(Collectors.toList())); + List rectifyData = rectifyApiGateway.listRectifyOrders(rectifyOrderReq); + if (CollUtil.isNotEmpty(rectifyData)) { + Map rectifyOrderMap = rectifyData.stream() + .collect(Collectors.toMap(RectifyOrderResp::getId, Function.identity(), (v1, v2) -> v1)); + // 构建关联整改单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(rectifyOrderMap.get(item.getBillId())) + .map(RectifyOrderResp::getBizName) + .orElse("")) + .build()) + .collect(Collectors.toList())); + } } else if (VisaBillTypeEnum.DESIGN_VISA.name().equals(k)) { // 获取设计单数据 - Map changeRecordMap = listByIds(v.stream().map(ChangeRecordBill::getBillId).collect(Collectors.toSet())) - .stream() + List visaDesignData = listByIds(v.stream().map(ChangeRecordBill::getBillId).collect(Collectors.toSet())); + Map changeRecordMap = visaDesignData.stream() .collect(Collectors.toMap(ChangeRecord::getId, Function.identity(), (v1, v2) -> v1)); - // 构建关联设计单 - relationOrderMap.put(k, v.stream() - .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() - .id(item.getBillId()) - .no(item.getBillNo()) - .name(Optional.ofNullable(changeRecordMap.get(item.getBillId())) - .map(ChangeRecord::getTopic) - .orElse("")) - .build()) - .collect(Collectors.toList()) - ); + if (CollUtil.isNotEmpty(visaDesignData)) { + // 构建关联设计单 + relationOrderMap.put(k, v.stream() + .map(item -> VisaChangeTempCreateReq.OrderSimpleModel.builder() + .id(item.getBillId()) + .no(item.getBillNo()) + .name(Optional.ofNullable(changeRecordMap.get(item.getBillId())) + .map(ChangeRecord::getTopic) + .orElse("")) + .build()) + .collect(Collectors.toList()) + ); + } } }); req.setRelationOrderMap(relationOrderMap); From 378f0b6bf01c5c8d05180ef32d1cdcca05254da2 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 26 Feb 2025 16:55:50 +0800 Subject: [PATCH 318/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=A2=9E=E5=8A=A0=20visaId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupAddMembersEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index 5e70d8aa..a9e38e7a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -87,6 +87,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing notice.setBizEventMappingCode(refreshableConfiguration.getImGroupAddMemberNoticeEventCode()); notice.setBizCode(String.valueOf(visaId)); notice.setBizExtParams(new JSONObject(Maps.of( + "visaId", visaId, "initiatorName", ownerProfile.getRealName(), "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "", "topic", group.getName()))); From 39da7452d30fd5812bd905f235fef2d8565da6f4 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 26 Feb 2025 17:10:00 +0800 Subject: [PATCH 319/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=94=BE=E5=8E=BB=E6=8E=89mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/rpc/DataObjectApiGateway.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java index c243c40d..a691f4ff 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DataObjectApiGateway.java @@ -33,35 +33,10 @@ public class DataObjectApiGateway { ApiResult match = dataObjectApi.match(req); log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match)); return match.getData(); -// return mockDataObject(); } catch (Exception e) { log.warn("DataObjectApiGateway match exception", e); throw e; } } - /** - * mock数据 - */ - private MatchDataObjectResp mockDataObject() { - MergeMatchDataResp.DataItem dt1 = MergeMatchDataResp.DataItem.builder() - .personIds(Lists.newArrayList(9000398292L,89511L)) -// .ouId(6122L) -// .workspaceId(399L) -// .nodeId(10345L) -// .projectIds(Lists.newArrayList(424L)) - .build(); - - MergeMatchDataResp.DataItem dt2 = MergeMatchDataResp.DataItem.builder() - .personIds(Lists.newArrayList(9000506L,89636L)) -// .ouId(6158L) -// .workspaceId(399L) -// .nodeId(10345L) -// .projectIds(Lists.newArrayList(763L)) - .build(); - - MergeMatchDataResp matchDataResp = MergeMatchDataResp.builder().dataItems(Lists.newArrayList(dt1, dt2)).build(); - return MatchDataObjectResp.builder().mergedDataObject(matchDataResp).build(); - } - } From 39d21c1449d6ab654c2a437f679873f5132b4eeb Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 26 Feb 2025 17:58:57 +0800 Subject: [PATCH 320/341] =?UTF-8?q?feat:=20(REQ-3300)=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=97=A5=E5=BF=97=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordLogServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java index 6a1c55ef..c82204bf 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordLogServiceImpl.java @@ -298,7 +298,7 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl Date: Wed, 26 Feb 2025 19:24:52 +0800 Subject: [PATCH 321/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=8F=90=E7=A4=BA=E6=96=87=E6=A1=88=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index e87aa0e0..d22c46eb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1591,7 +1591,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s:单据%s已被其他单据关联,请重新选择", m.getBillType(), m.getBillNo())); + throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().name(), visaType.name())); })); } @@ -1609,7 +1609,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s:单据%s已被其他单据关联,请重新选择", m.getBillType(), m.getBillNo())); + throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().name(), visaType.name())); })); } From bded0f5621a2b2f2e7509887d8376b9073d20715 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 19:48:56 +0800 Subject: [PATCH 322/341] =?UTF-8?q?feat(REQ-3300):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=8F=90=E7=A4=BA=E6=96=87=E6=A1=88=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index d22c46eb..f889fb92 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1591,7 +1591,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().name(), visaType.name())); + throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); })); } @@ -1609,7 +1609,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().name(), visaType.name())); + throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); })); } From 4829fa2d7fb061c4c30663abed8432ea459afbed Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 19:52:18 +0800 Subject: [PATCH 323/341] =?UTF-8?q?feat(REQ-3300):=20=E4=B8=93=E4=B8=9A?= =?UTF-8?q?=E9=9D=9E=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/CheckVisaWithVisaIdReq.java | 4 ++-- .../nanopart/visa/api/request/VisaChangeTempCreateReq.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java index 093946af..6e70aee7 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java @@ -38,10 +38,10 @@ public class CheckVisaWithVisaIdReq { AssertUtil.notNull(response.getRelationProject(), "关联工程不能为空"); AssertUtil.notEmpty(response.getHappenTime(), "提出时间不能为空"); AssertUtil.notEmpty(response.getReason(), "发生原因不能为空"); - AssertUtil.notEmpty(response.getRelationProfessionalList(), "专业不能为空"); +// AssertUtil.notEmpty(response.getRelationProfessionalList(), "专业不能为空"); if (CollectionUtils.isNotEmpty(response.getRelationOuAndPersonList())) { response.getRelationOuAndPersonList().forEach(item -> { - AssertUtil.notEmpty(item.getRelationPersonList(), "专业不能为空"); + AssertUtil.notEmpty(item.getRelationPersonList(), "确认人不能为空"); }); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index 70b79257..c63e693a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -98,7 +98,7 @@ public class VisaChangeTempCreateReq { * ] * */ - @NotNull(message = "请选择专业") +// @NotNull(message = "请选择专业") private JSONArray relationProfessional; /** From 9e8d5769c7de1e48f5826d16ddd6f9a7c6d0870c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 26 Feb 2025 20:06:40 +0800 Subject: [PATCH 324/341] =?UTF-8?q?feat(REQ-3581)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20gateway=20=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java | 6 ++++++ .../nanopart/visa/server/rpc/OrganizationalUnitGateway.java | 2 ++ .../axzo/nanopart/visa/server/rpc/VisaProfileGateway.java | 2 ++ 3 files changed, 10 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java index df32c20a..081af854 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/MsgCenterGateway.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.rpc; +import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.feign.GroupApi; import cn.axzo.im.center.api.feign.MessageApi; @@ -44,6 +45,7 @@ public class MsgCenterGateway { if(group.isSuccess() && Objects.nonNull(group.getData())) { return group.getData(); } + AssertUtil.isTrue(group.isSuccess(), group.getMsg()); return null; } @@ -58,6 +60,7 @@ public class MsgCenterGateway { if(members.isSuccess() && Objects.nonNull(members.getData())) { return members.getData(); } + AssertUtil.isTrue(members.isSuccess(), members.getMsg()); return null; } @@ -67,6 +70,7 @@ public class MsgCenterGateway { if(owner.isSuccess() && Objects.nonNull(owner.getData())) { return owner.getData(); } + AssertUtil.isTrue(owner.isSuccess(), owner.getMsg()); return null; } @@ -76,6 +80,7 @@ public class MsgCenterGateway { if(mesageId.isSuccess() && Objects.nonNull(mesageId.getData())) { return mesageId.getData(); } + AssertUtil.isTrue(mesageId.isSuccess(), mesageId.getMsg()); return null; } @@ -85,6 +90,7 @@ public class MsgCenterGateway { if (Objects.nonNull(sendCard) && sendCard.getCode() == 200) { return sendCard.getData(); } + AssertUtil.isTrue(sendCard.getCode() == 200, sendCard.getMsg()); return null; } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java index 37c4cf26..46203d30 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/OrganizationalUnitGateway.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.rpc; +import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.maokai.api.client.OrganizationalUnitApi; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; @@ -31,6 +32,7 @@ public class OrganizationalUnitGateway { if (unitResponse.isSuccess() && Objects.nonNull(unitResponse.getData())) { return unitResponse.getData(); } + AssertUtil.isTrue(unitResponse.isSuccess(), unitResponse.getMsg()); return null; } /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java index 743440d4..154634d4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaProfileGateway.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.visa.server.rpc; +import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.profiles.api.UserProfileServiceApi; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.azxo.framework.common.logger.MethodAroundLog; @@ -45,6 +46,7 @@ public class VisaProfileGateway { if (Objects.nonNull(personProfile) && personProfile.getCode() == 200) { return personProfile.getData(); } + AssertUtil.isTrue(personProfile.getCode() == 200, personProfile.getMsg()); return null; } From d0c0f4d2b4d171469d0c27b0673bf3dd93a37b91 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 26 Feb 2025 20:23:28 +0800 Subject: [PATCH 325/341] =?UTF-8?q?feat(REQ-3581)=20-=20=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0visaId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/mq/listener/im/ImGroupAddMembersEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index a9e38e7a..5df5d1d7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -91,6 +91,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing "initiatorName", ownerProfile.getRealName(), "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "", "topic", group.getName()))); + notice.setRouterParams(new JSONObject(Maps.of("visaId", visaId))); noticeApi.send(notice); } log.info("receive add member event, push notice success!"); From 23c8ffcee1160579336187dcec707dd50df15e6f Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 26 Feb 2025 20:27:59 +0800 Subject: [PATCH 326/341] =?UTF-8?q?feat(REQ-3300):=20=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f889fb92..7a44b726 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1591,7 +1591,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); + throw new ServiceException(String.format("%s已被其他%s单关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); })); } @@ -1609,7 +1609,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl { log.info("{} bill {} is related by {} visa {}", m.getBillType(), m.getBillId(), m.getVisaType(), m.getVisaId()); - throw new ServiceException(String.format("%s已被其他%s关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); + throw new ServiceException(String.format("%s已被其他%s单关联,请重新选择", m.getBillType().getDesc(), visaType.getDesc())); })); } From 3b8acc5e2cafa32d45ece641029d45417dc82c33 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 27 Feb 2025 10:12:58 +0800 Subject: [PATCH 327/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=80=81=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=EF=BC=8C=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=8D=95=E6=8D=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 7a44b726..64fbb6a7 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -762,8 +762,14 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles = this.buildAttachUploadFile(req.getId()); From dc9d02e5b2802f8e9ad1c878c0f55b2cb391e2af Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 27 Feb 2025 10:13:20 +0800 Subject: [PATCH 328/341] =?UTF-8?q?feat(REQ-3581)=20-=20=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0ouId=20=E5=92=8C=20workspaceID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/listener/im/ImGroupAddMembersEventHandler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index 5df5d1d7..5aaf3f4e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -91,7 +91,11 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing "initiatorName", ownerProfile.getRealName(), "visaType", StringUtils.isNotBlank(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "", "topic", group.getName()))); - notice.setRouterParams(new JSONObject(Maps.of("visaId", visaId))); + notice.setRouterParams(new JSONObject(Maps.of( + "visaId", visaId, + "ouId", member.getPersonOuId(), + "workspaceId", workspaceId + ))); noticeApi.send(notice); } log.info("receive add member event, push notice success!"); From 3c2c4ab54d0c8d48137a3a3d73f822ca3cb502d1 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 27 Feb 2025 10:42:44 +0800 Subject: [PATCH 329/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=80=81=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E6=88=96=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE=EF=BC=8C=E6=A0=A1=E9=AA=8C=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 64fbb6a7..56047afb 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -601,6 +601,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl visaUploadFiles = this.buildAttachUploadFile(req.getId()); From 19185780fe9498d0dcd7723f87c1601198550033 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 27 Feb 2025 10:45:49 +0800 Subject: [PATCH 330/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=80=81=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E6=88=96=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE=EF=BC=8C=E6=A0=A1=E9=AA=8C=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 56047afb..4c9302f4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -601,12 +601,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 27 Feb 2025 10:46:49 +0800 Subject: [PATCH 331/341] =?UTF-8?q?REQ-3300:=20=E5=90=8C=E6=84=8F/?= =?UTF-8?q?=E6=8B=92=E7=BB=9D=E5=B0=9D=E8=AF=95=E4=BD=BF=E7=94=A8=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordRelationServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 01aa602d..a62f2c64 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -187,6 +187,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl Date: Thu, 27 Feb 2025 11:17:01 +0800 Subject: [PATCH 332/341] =?UTF-8?q?feat(REQ-3300):=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=80=81=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E6=88=96=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE=EF=BC=8C=E6=A0=A1=E9=AA=8C=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 4c9302f4..a6c2d587 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -603,7 +603,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 27 Feb 2025 11:33:10 +0800 Subject: [PATCH 333/341] =?UTF-8?q?feat(REQ-3581)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=8A=95=E7=A5=A8=E4=BF=A1=E6=81=AF=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordRelationServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index a62f2c64..5348179d 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -165,6 +165,12 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl relations = findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.name()) + .content(String.valueOf(req.getOperatorPersonId())) + .build()); + AssertUtil.isEmpty(relations, "不允许重复操作"); ChangeRecordRelation relation = new ChangeRecordRelation(); relation.setVisaId(req.getVisaId()); relation.setVarName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.name()); From ed0586ce8c293535d9a0f7baffc41ba7e4c993fe Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 27 Feb 2025 15:54:30 +0800 Subject: [PATCH 334/341] =?UTF-8?q?feat(REQ-3300):=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/CheckVisaWithVisaIdReq.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java index 6e70aee7..4d9bf2af 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java @@ -8,8 +8,6 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.apache.commons.collections4.CollectionUtils; -import javax.validation.constraints.NotNull; - /** * @author xudawei@axzo.cn * @version 1.0 @@ -22,11 +20,16 @@ import javax.validation.constraints.NotNull; public class CheckVisaWithVisaIdReq { /** - * 变更单号Id + * 变更单号Id,编辑和详情时传入,与{@code creatFormData}互斥使用 */ - @NotNull(message = "变更签证单据Id不能为空") +// @NotNull(message = "变更签证单据Id不能为空") private Long visaId; + /** + * 创建单据状态下的表单数据,创建时传入,与{@code visaId}互斥使用 + */ + private VisaChangeTempCreateReq creatFormData; + /** * 校验 */ From b0a8fe24559628e02e4b0705d1b7355622364e38 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 27 Feb 2025 16:35:39 +0800 Subject: [PATCH 335/341] =?UTF-8?q?feat(REQ-3300):=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=A8=A1=E5=9E=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/CheckVisaWithVisaIdReq.java | 12 ++++++++++-- .../visa/api/request/VisaChangeTempCreateReq.java | 2 +- .../server/service/impl/ChangeRecordServiceImpl.java | 12 +++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java index 4d9bf2af..536d2d59 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/CheckVisaWithVisaIdReq.java @@ -47,7 +47,15 @@ public class CheckVisaWithVisaIdReq { AssertUtil.notEmpty(item.getRelationPersonList(), "确认人不能为空"); }); } - - + } + + public void check() { + AssertUtil.notNull(this.getCreatFormData().getRelationWorkspaceId(), "关联项目不能为空"); + AssertUtil.notNull(this.getCreatFormData().getType(), "单据类型不能为空"); + AssertUtil.notEmpty(this.getCreatFormData().getNo(), "单号不能为空"); + AssertUtil.notEmpty(this.getCreatFormData().getTopic(), "主题不能为空"); + AssertUtil.notNull(this.getCreatFormData().getRelationProject(), "关联工程不能为空"); + AssertUtil.notNull(this.getCreatFormData().getHappenTime(), "提出时间不能为空"); + AssertUtil.notEmpty(this.getCreatFormData().getReason(), "发生原因不能为空"); } } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java index c63e693a..090c2871 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/VisaChangeTempCreateReq.java @@ -85,7 +85,7 @@ public class VisaChangeTempCreateReq { /** * 提出时间 */ - @NotNull(message = "请选择提交日期") + @NotNull(message = "请选择提出时间") private Date happenTime; /** diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index a6c2d587..6d000b58 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -2009,9 +2009,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Thu, 27 Feb 2025 21:40:12 +0800 Subject: [PATCH 336/341] =?UTF-8?q?feat(3300):=20=E9=80=80=E5=9C=BA?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=A0=A1=E9=AA=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 6d000b58..99d5ed38 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1500,9 +1500,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl { AssertUtil.isTrue(v.size() <= refreshableConfiguration.getVerifyPersonLimit(), String.format(k.getDesc() + "确认人,最多支持%d个", refreshableConfiguration.getVerifyPersonLimit())); - boolean noExit = v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) - .anyMatch(p -> nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p))); - AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); + v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) + .forEach(p -> { + boolean noExit = nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p)); + AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); + }); }); } // 金额变化合法性 From 65d8967cb8672158f62e1576329f764bcd308cb1 Mon Sep 17 00:00:00 2001 From: wangli Date: Thu, 27 Feb 2025 22:14:48 +0800 Subject: [PATCH 337/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=80=80=E5=9C=BA=E4=BA=BA=E5=91=98=E6=A0=A1=E9=AA=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/ChangeRecordServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 99d5ed38..4f6b22aa 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1494,17 +1494,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl nodeUserBriefInfoResps = nodeUserGateway.listOrgNodeUsers(infoListReq); AssertUtil.notEmpty(nodeUserBriefInfoResps, "所有单位确认人均已退场"); cooperateTypeMap.forEach((k, v) -> { AssertUtil.isTrue(v.size() <= refreshableConfiguration.getVerifyPersonLimit(), String.format(k.getDesc() + "确认人,最多支持%d个", refreshableConfiguration.getVerifyPersonLimit())); - v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) - .forEach(p -> { - boolean noExit = nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p)); - AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); - }); + boolean noExit = v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId) + .allMatch(p -> nodeUserBriefInfoResps.stream().map(OrgNodeUserBriefInfoResp::getPersonId).anyMatch(u -> Objects.equals(u, p))); + AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择")); }); } // 金额变化合法性 From 158a90aaa63a177cf3baf9a5d7e523bac94d0137 Mon Sep 17 00:00:00 2001 From: wangli Date: Thu, 27 Feb 2025 22:44:38 +0800 Subject: [PATCH 338/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E8=AF=A6=E6=83=85=E5=93=8D=E5=BA=94=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordConfirmServiceImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 69a35563..11366fe1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -216,12 +216,8 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl> listMap = list.stream().collect(Collectors.groupingBy(e -> { - if (Objects.isNull(e.getNodeId())) { - return e.getType() + "#" + e.getOuId() + "#0"; - } - return e.getType() + "#" + e.getOuId() + "#" + e.getNodeId(); - })); + Map> listMap = list.stream() + .collect(Collectors.groupingBy(e -> e.getType() + "#" + e.getOuId())); return this.buildRelationOuAndPerson(listMap, workspaceId); } From 1f2963b07f8c6a01c0690ce0059f0d6977e61929 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 28 Feb 2025 10:44:50 +0800 Subject: [PATCH 339/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8D=95=E4=BD=8D=E7=9A=84=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordConfirmServiceImpl.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 11366fe1..ee6582cc 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,12 +1,15 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.common.BeanMapper; +import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.foundation.page.PageResp; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; +import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; +import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; @@ -21,6 +24,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.nanopart.visa.server.rpc.DataObjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; @@ -81,6 +85,9 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl relationPersonList = this.buildRelationPersonList(confirmList, personNodeUserMap); @@ -290,13 +297,18 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl unitNodeUserMap) { + private VisaDetailByIdResponse.RelationUnit buildRelationUnit(String key, Map unitNodeUserMap, Long workspaceId) { String[] keySplit = key.split("#"); Long ouId = Long.valueOf(keySplit[1]); + List cooperateShipResps = visaCooperateShipGateway.genericQuery(CooperateShipQueryReq.builder() + .workspaceId(workspaceId) + .ouId(ouId) + .build()); + AssertUtil.isTrue(CollectionUtils.isNotEmpty(cooperateShipResps) && cooperateShipResps.size() == 1, "未找到相关单位信息"); return VisaDetailByIdResponse.RelationUnit.builder() .ouId(ouId) .type(keySplit[0]) - .nodeId(keySplit.length > 2 ? Long.valueOf(keySplit[2]) : 0L) + .nodeId(cooperateShipResps.get(0).getOrganizationalNodeId()) .ouName(StringUtils.hasText(unitNodeUserMap.get(ouId)) ? unitNodeUserMap.get(ouId) : "").build(); } From 9aa1ecc942fb52de1ab12fe0c8428b4ec87e0607 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 28 Feb 2025 11:03:20 +0800 Subject: [PATCH 340/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8D=95=E4=BD=8D=E7=9A=84=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeRecordConfirmServiceImpl.java | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index ee6582cc..691d41a6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -11,6 +11,7 @@ import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; import cn.axzo.maokai.api.vo.response.CooperateShipResp; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; +import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; @@ -233,7 +234,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl fetchOrgNodeUserDTOList(List personIds, Long ouId, Long workspaceId) { PageResp pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder() - .personIds(personIds) + .personIds(personIds) .organizationalUnitId(ouId) .workspaceId(workspaceId) .needs(ListNodeUserReq.Needs.builder().job(true).unit(true).personProfile(true).build()).build()); @@ -299,10 +300,12 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl unitNodeUserMap, Long workspaceId) { String[] keySplit = key.split("#"); + SaasCooperateShipCooperateTypeEnum cooperationCode = SaasCooperateShipCooperateTypeEnum.valueOf(keySplit[0]); Long ouId = Long.valueOf(keySplit[1]); List cooperateShipResps = visaCooperateShipGateway.genericQuery(CooperateShipQueryReq.builder() .workspaceId(workspaceId) .ouId(ouId) + .includeCooperateTypes(Lists.newArrayList(cooperationCode.getCode())) .build()); AssertUtil.isTrue(CollectionUtils.isNotEmpty(cooperateShipResps) && cooperateShipResps.size() == 1, "未找到相关单位信息"); return VisaDetailByIdResponse.RelationUnit.builder() @@ -315,40 +318,39 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl buildRelationPersonList(List confirmList,Map> personNodeUserMap) { + private List buildRelationPersonList(List confirmList, Map> personNodeUserMap) { return confirmList.stream().map(item -> { - List orgNodeUserDTOS = personNodeUserMap.get(item.getPersonId()); - //有班组时,优先取班组岗位 - OrgNodeUserDTO nodeUserDTO = Constants.nodeUserDTOByList(orgNodeUserDTOS); + List orgNodeUserDTOS = personNodeUserMap.get(item.getPersonId()); + //有班组时,优先取班组岗位 + OrgNodeUserDTO nodeUserDTO = Constants.nodeUserDTOByList(orgNodeUserDTOS); - VisaDetailByIdResponse.RelationPerson relationPerson = VisaDetailByIdResponse.RelationPerson.builder() - .ouId(item.getOuId()) - .workspaceId(item.getWorkspaceId()) - .nodeId(item.getNodeId()) - .personId(item.getPersonId()) - .projectId(item.getProjectId()) - .type(item.getType()) - .build(); - if (Objects.nonNull(nodeUserDTO)) { - relationPerson.setRealName(nodeUserDTO.getRealName()); + VisaDetailByIdResponse.RelationPerson relationPerson = VisaDetailByIdResponse.RelationPerson.builder() + .ouId(item.getOuId()) + .workspaceId(item.getWorkspaceId()) + .nodeId(item.getNodeId()) + .personId(item.getPersonId()) + .projectId(item.getProjectId()) + .type(item.getType()) + .build(); + if (Objects.nonNull(nodeUserDTO)) { + relationPerson.setRealName(nodeUserDTO.getRealName()); - if (Objects.nonNull(nodeUserDTO.getPersonProfile())) { - relationPerson.setAvatarUrl(nodeUserDTO.getPersonProfile().getAvatarUrl()); + if (Objects.nonNull(nodeUserDTO.getPersonProfile())) { + relationPerson.setAvatarUrl(nodeUserDTO.getPersonProfile().getAvatarUrl()); + } + + if (Objects.nonNull(nodeUserDTO.getJob())) { + relationPerson.setJobId(nodeUserDTO.getJob().getId()); + relationPerson.setJobName(nodeUserDTO.getJob().getName()); + } + } + return relationPerson; } - - if (Objects.nonNull(nodeUserDTO.getJob())) { - relationPerson.setJobId(nodeUserDTO.getJob().getId()); - relationPerson.setJobName(nodeUserDTO.getJob().getName()); - } - } - return relationPerson; - } ).collect(Collectors.toList()); } - /** * 构建人员的集合,key:personId,value:realName */ From 4dbed2ec61496c1afe765f45da95504d47c0605c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 28 Feb 2025 11:18:54 +0800 Subject: [PATCH 341/341] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8D=95=E4=BD=8D=E7=9A=84=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rpc/VisaOrganizationalNodeGateway.java | 29 +++++++++++++++++++ .../impl/ChangeRecordConfirmServiceImpl.java | 23 +++++---------- 2 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeGateway.java diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeGateway.java new file mode 100644 index 00000000..b59d48aa --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/VisaOrganizationalNodeGateway.java @@ -0,0 +1,29 @@ +package cn.axzo.nanopart.visa.server.rpc; + +import cn.axzo.maokai.api.client.OrganizationalNodeApi; +import cn.axzo.maokai.api.vo.response.OrganizationalNodeVO; +import cn.axzo.pokonyan.util.RpcUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * TODO + * + * @author wangli + * @since 2025-02-28 11:11 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class VisaOrganizationalNodeGateway { + + @Resource + private OrganizationalNodeApi organizationalNodeApi; + + public OrganizationalNodeVO getNode(Long nodeId) { + return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeApi.getNode(nodeId), "", nodeId); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java index 691d41a6..d494b9a8 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordConfirmServiceImpl.java @@ -1,17 +1,14 @@ package cn.axzo.nanopart.visa.server.service.impl; import cn.axzo.basics.common.BeanMapper; -import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.foundation.page.PageResp; import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq; import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp; import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp; -import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq; import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery; -import cn.axzo.maokai.api.vo.response.CooperateShipResp; +import cn.axzo.maokai.api.vo.response.OrganizationalNodeVO; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; -import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum; import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum; @@ -25,7 +22,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordConfirmDao; import cn.axzo.nanopart.visa.server.rpc.DataObjectApiGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; -import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway; +import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeGateway; import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway; import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway; import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; @@ -87,7 +84,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl relationPersonList = this.buildRelationPersonList(confirmList, personNodeUserMap); @@ -298,20 +295,14 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl unitNodeUserMap, Long workspaceId) { + private VisaDetailByIdResponse.RelationUnit buildRelationUnit(String key, Map unitNodeUserMap, Long nodeId) { String[] keySplit = key.split("#"); - SaasCooperateShipCooperateTypeEnum cooperationCode = SaasCooperateShipCooperateTypeEnum.valueOf(keySplit[0]); Long ouId = Long.valueOf(keySplit[1]); - List cooperateShipResps = visaCooperateShipGateway.genericQuery(CooperateShipQueryReq.builder() - .workspaceId(workspaceId) - .ouId(ouId) - .includeCooperateTypes(Lists.newArrayList(cooperationCode.getCode())) - .build()); - AssertUtil.isTrue(CollectionUtils.isNotEmpty(cooperateShipResps) && cooperateShipResps.size() == 1, "未找到相关单位信息"); + OrganizationalNodeVO node = visaOrganizationalNodeGateway.getNode(nodeId); return VisaDetailByIdResponse.RelationUnit.builder() .ouId(ouId) .type(keySplit[0]) - .nodeId(cooperateShipResps.get(0).getOrganizationalNodeId()) + .nodeId(node.getTopNodeId()) .ouName(StringUtils.hasText(unitNodeUserMap.get(ouId)) ? unitNodeUserMap.get(ouId) : "").build(); }