From 087f361a8b9640dc78fa3d736c1bfcb2e614bc13 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Tue, 29 Sep 2026 03:15:26 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E7=BB=84=E7=BB=87=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=94=B9=E4=B8=9A=E5=8A=A1=E5=AD=97=E5=85=B8=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=AE=8C=E5=96=84=E9=87=91=E8=9D=B6=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=8EMK=E5=86=8D=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 组织类型翻译切换为 organization_type;新增金蝶部门代码字段;流程已结束或已通过时强制新建MK表单实例。 Co-authored-by: Cursor --- .../springblade/system/pojo/entity/Dept.java | 6 +++ .../impl/BusinessProcessServiceImpl.java | 50 ++++++++++++++++--- .../system/controller/DeptController.java | 5 +- .../springblade/system/mapper/DeptMapper.xml | 2 + .../system/wrapper/DeptWrapper.java | 14 ++++-- doc/sql/bladex/bladex.mysql.all.create.sql | 1 + .../blade_dept_kingdee_dept_code_20260929.sql | 4 ++ 7 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 doc/sql/transport/blade_dept_kingdee_dept_code_20260929.sql diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/entity/Dept.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/entity/Dept.java index 932e41a7..18338ed0 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/entity/Dept.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/entity/Dept.java @@ -138,6 +138,12 @@ public class Dept extends TenantEntity { @Schema(description = "部门编码") private String deptCode; + /** + * 金蝶部门代码 + */ + @Schema(description = "金蝶部门代码") + private String kingdeeDeptCode; + /** * 组织简称 */ diff --git a/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java index d111d805..fed83a70 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java @@ -140,22 +140,23 @@ public class BusinessProcessServiceImpl extends ServiceImpllambdaQuery() .eq(BusinessProcess::getBizId, bizId) .orderByDesc(BusinessProcess::getUpdateTime) .last("limit 1") ); - // 已有流程实例且 MK 仍能查到详情时,不再删除、不再重新创建提交(强制新建时跳过短路) + boolean forceNew = Boolean.TRUE.equals(param.getForceNewFormInstance()) + || shouldForceNewFormInstance(businessProcess, loginName); + Long formInstanceId = mkFormBindService.resolveOrCreateFormInstanceId(bizType, bizId, forceNew); + String formInstanceIdText = String.valueOf(formInstanceId); + param.setFormInstanceId(formInstanceIdText); + + // 已有流程实例且 MK 仍能查到详情时,不再删除、不再重新创建提交(强制新建或流程已结束时跳过短路) if (!forceNew && businessProcess != null && StringUtil.isNotBlank(businessProcess.getProcessInstanceId()) && Objects.equals(formInstanceId, businessProcess.getFormInstanceId())) { String existingProcessInstanceId = businessProcess.getProcessInstanceId(); Object existingProcessInfo = this.getProcessInfo(existingProcessInstanceId, loginName); - if (hasProcessInfoData(existingProcessInfo)) { + if (hasProcessInfoData(existingProcessInfo) && !isMkProcessFinished(existingProcessInfo)) { log.info("MK流程实例已存在,跳过创建并提交流程 bizId={} formInstanceId={} processInstanceId={}", bizId, formInstanceIdText, existingProcessInstanceId); businessProcess.setApproveStatus(ApproveStatusEnum.APPROVING.getValue()); @@ -169,6 +170,11 @@ public class BusinessProcessServiceImpl extends ServiceImpl + @@ -32,6 +33,7 @@ + diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java index 85628a45..6eeaba6e 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java @@ -30,10 +30,9 @@ import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.ForestNodeMerger; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.system.cache.DictCache; +import org.springblade.system.cache.DictBizCache; import org.springblade.system.cache.SysCache; import org.springblade.system.pojo.entity.Dept; -import org.springblade.system.pojo.enums.DictEnum; import org.springblade.system.pojo.vo.DeptVO; import java.util.List; @@ -47,6 +46,11 @@ import java.util.stream.Collectors; */ public class DeptWrapper extends BaseEntityWrapper { + /** + * 组织类型业务字典编码 + */ + private static final String ORGANIZATION_TYPE_CODE = "organization_type"; + public static DeptWrapper build() { return new DeptWrapper(); } @@ -60,7 +64,7 @@ public class DeptWrapper extends BaseEntityWrapper { Dept parent = SysCache.getDept(dept.getParentId()); deptVO.setParentName(parent.getDeptName()); } - String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); + String category = DictBizCache.getValue(ORGANIZATION_TYPE_CODE, dept.getDeptCategory()); deptVO.setDeptCategoryName(category); return deptVO; } @@ -69,7 +73,7 @@ public class DeptWrapper extends BaseEntityWrapper { public List listNodeVO(List list) { List collect = list.stream().map(dept -> { DeptVO deptVO = BeanUtil.copyProperties(dept, DeptVO.class); - String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); + String category = DictBizCache.getValue(ORGANIZATION_TYPE_CODE, dept.getDeptCategory()); Objects.requireNonNull(deptVO).setDeptCategoryName(category); return deptVO; }).collect(Collectors.toList()); @@ -78,7 +82,7 @@ public class DeptWrapper extends BaseEntityWrapper { public List listNodeLazyVO(List list) { List collect = list.stream().peek(dept -> { - String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); + String category = DictBizCache.getValue(ORGANIZATION_TYPE_CODE, dept.getDeptCategory()); Objects.requireNonNull(dept).setDeptCategoryName(category); }).collect(Collectors.toList()); return ForestNodeMerger.merge(collect); diff --git a/doc/sql/bladex/bladex.mysql.all.create.sql b/doc/sql/bladex/bladex.mysql.all.create.sql index a251ed82..9da80698 100644 --- a/doc/sql/bladex/bladex.mysql.all.create.sql +++ b/doc/sql/bladex/bladex.mysql.all.create.sql @@ -303,6 +303,7 @@ CREATE TABLE `blade_dept` ( `dept_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名', `full_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门全称', `dept_code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织编码', + `kingdee_dept_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '金蝶部门代码', `short_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织简称', `pinyin_mnemonic` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拼音助记码', `mnemonic_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '助记码', diff --git a/doc/sql/transport/blade_dept_kingdee_dept_code_20260929.sql b/doc/sql/transport/blade_dept_kingdee_dept_code_20260929.sql new file mode 100644 index 00000000..3ec785cd --- /dev/null +++ b/doc/sql/transport/blade_dept_kingdee_dept_code_20260929.sql @@ -0,0 +1,4 @@ +-- 机构表:新增「金蝶部门代码」字段,非必填 + +ALTER TABLE `blade_dept` + ADD COLUMN `kingdee_dept_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '金蝶部门代码' AFTER `dept_code`;