From d2295ef2052b28091a0ced13a303e7c02aae67d1 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 1 Apr 2025 13:47:24 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E8=B6=85=E5=B8=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/exception/ServiceException.java | 7 ++++ .../supermarket/entity/SmErpCgDdEntity.java | 17 ++++++++++ .../supermarket/entity/SmErpCgPlanEntity.java | 4 +++ .../entity/SmErpInventoryRecordsEntity.java | 17 ++++++++++ .../service/impl/SmErpCgDdServiceImpl.java | 34 ++++++++++++++++++- .../service/impl/SmErpCgPlanServiceImpl.java | 10 ++++-- .../SmErpInventoryRecordsServiceImpl.java | 34 +++++++++++++++++-- 7 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/exception/ServiceException.java diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/exception/ServiceException.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/exception/ServiceException.java new file mode 100644 index 000000000..5053f5a47 --- /dev/null +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/exception/ServiceException.java @@ -0,0 +1,7 @@ +package com.bsd.pjcloud.common.core.exception; + +public class ServiceException extends RuntimeException { + public ServiceException(String message) { + super(message); + } +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgDdEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgDdEntity.java index 52b8fd41a..abe05869b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgDdEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgDdEntity.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Map; /** * 采购订单 @@ -175,4 +176,20 @@ public class SmErpCgDdEntity extends Model { @Schema(description="经办人名称") @TableField(exist = false) public String handlerUserName; + + @Schema(description="任务id") + @TableField(exist = false) + public String taskId; + + @Schema(description="实例id") + @TableField(exist = false) + private String flowId; + + @Schema(description="参数") + @TableField(exist = false) + private Map paramMap; + + @Schema(description="节点id") + @TableField(exist = false) + private String nodeId; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java index 94643ad9f..3353ce2fc 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java @@ -163,5 +163,9 @@ public class SmErpCgPlanEntity extends Model { @TableField(exist = false) private Map paramMap; + @Schema(description="节点id") + @TableField(exist = false) + private String nodeId; + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpInventoryRecordsEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpInventoryRecordsEntity.java index e3d58d0c3..c2413c10a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpInventoryRecordsEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpInventoryRecordsEntity.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Map; /** * 出入库记录表 @@ -185,4 +186,20 @@ public class SmErpInventoryRecordsEntity extends Model paramMap; + + @Schema(description="节点id") + @TableField(exist = false) + private String nodeId; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java index 2d75c4e69..975e93150 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java @@ -1,10 +1,12 @@ package com.bsd.pjcloud.supermarket.service.impl; +import cn.hutool.core.util.ObjectUtil; 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 com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.common.core.exception.ServiceException; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; @@ -12,6 +14,8 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; +import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant; import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDEditDTO; @@ -62,16 +66,21 @@ public class SmErpCgDdServiceImpl extends ServiceImpl items = erpCgDDSaveDTO.getItems(); List cgPlanItemEntities = BeanUtils.toBean(items, SmErpCgDdItemEntity.class); R processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_CGDD_FLOW); + if (!processR.isOk() || processR.getData() == null) { + throw new ServiceException("流程配置获取失败: " + processR.getMsg()); + } String flowId = processR.getData().getFlowId(); ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); processInstanceParamDto.setFlowId(flowId); R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); + if (!stringR.isOk() || stringR.getData() == null) { + throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); + } String processInstanceId = stringR.getData(); smErpCgDdEntity.setProcessInstanceId(processInstanceId); smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); @@ -232,6 +241,7 @@ public class SmErpCgDdServiceImpl extends ServiceImpl userMap = remoteUserService.getUserMap(userIds).getData(); + List processInstanceIds= records.stream().map(SmErpCgDdEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList()); LambdaQueryWrapper smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpCgDdItemEntity::getHId,planIds); @@ -252,12 +262,34 @@ public class SmErpCgDdServiceImpl extends ServiceImpl> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto); + Page data = pageR.getData(); + // 直接通过条件判断初始化 final 变量 + final Map processInstanceIdMap = (data != null && !ObjectUtil.isEmpty(data.getRecords())) + ? data.getRecords().stream() + .collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto)) + : Collections.emptyMap(); + // 设置商品名称到主表实体 records.forEach(plan -> { SysUser sysUser = userMap.getOrDefault(plan.getHandlerUserId(), new SysUser()); plan.setHandlerUserName(sysUser.getUsername()); List names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList()); plan.setProductName(String.join(", ", names)); + if (!processInstanceIdMap.isEmpty()) { + TaskDto taskDto = processInstanceIdMap.get(plan.getProcessInstanceId()); + if (taskDto != null) { + plan.setTaskId(taskDto.getTaskId()); + plan.setFlowId(taskDto.getFlowId()); + plan.setParamMap(taskDto.getParamMap()); + plan.setNodeId(taskDto.getNodeId()); + } + } }); return pageData; diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java index aebcaf6df..98a44591f 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.common.core.exception.ServiceException; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; @@ -65,15 +66,19 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_BHSQ_FLOW); + if (!processR.isOk() || processR.getData() == null) { + throw new ServiceException("流程配置获取失败: " + processR.getMsg()); + } String flowId = processR.getData().getFlowId(); ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); processInstanceParamDto.setFlowId(flowId); R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); + if (!stringR.isOk() || stringR.getData() == null) { + throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); + } String processInstanceId = stringR.getData(); smErpCgPlanEntity.setProcessInstanceId(processInstanceId); smErpCgPlanEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); @@ -289,6 +294,7 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl items = inventoryRecordSaveDTO.getItems(); //计算主表总金额 @@ -80,6 +83,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl processR = remoteFlowApiFlowService.getProcessByBusinessKey(processKey); + if (!processR.isOk() || processR.getData() == null) { + throw new ServiceException("流程配置获取失败: " + processR.getMsg()); + } String flowId = processR.getData().getFlowId(); ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); processInstanceParamDto.setFlowId(flowId); @@ -87,6 +93,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); + if (!stringR.isOk() || stringR.getData() == null) { + throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); + } String processInstanceId = stringR.getData(); smErpCgDdEntity.setProcessInstanceId(processInstanceId); smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); @@ -168,7 +177,7 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl userMap = remoteUserService.getUserMap(userIds).getData(); - + List processInstanceIds= records.stream().map(SmErpInventoryRecordsEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList()); LambdaQueryWrapper smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpInventoryRecordsItemEntity::getInventoryId,planIds); @@ -191,6 +200,18 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto); + Page data = pageR.getData(); + + final Map processInstanceIdMap = (data != null && !ObjectUtil.isEmpty(data.getRecords())) + ? data.getRecords().stream() + .collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto)) + : Collections.emptyMap(); // 设置商品名称到主表实体 records.forEach(plan -> { @@ -204,6 +225,15 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl Date: Tue, 1 Apr 2025 16:26:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=E7=A7=BB=E9=99=A4=E8=AF=97=E7=94=BB?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ThirdPartyOAth2Cotroller.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java index 4f317bf99..1f8f0099d 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java @@ -210,22 +210,23 @@ public class ThirdPartyOAth2Cotroller { r=remoteTokenService.generateToken(userTokenDTO); }else { //自动注册 - UserDTO userDTO = new UserDTO(); -// userDTO.setDeptId(1865990541445263361L); - userDTO.setName(zzdUserDTO.getUsername()); - userDTO.setNickname(zzdUserDTO.getUsername()); - userDTO.setSystemType("2"); - userDTO.setPhone(mobile); - userDTO.setCreateBy("诗画自动创建"); - //赋予随机密码 - userDTO.setPassword("pj*"+ UUID.randomUUID()); - R booleanR = remoteUserService.registerUser(userDTO); - R> userByMobile=remoteUserService.getUserByMobile(mobile); - SysUser sysUser = userByMobile.getData().get(0); - UserTokenDTO userTokenDTO = new UserTokenDTO(); - userTokenDTO.setSysUser(sysUser); -// //登录成功,根据新注册的用户信息返回token - r=remoteTokenService.generateToken(userTokenDTO); +// UserDTO userDTO = new UserDTO(); +//// userDTO.setDeptId(1865990541445263361L); +// userDTO.setName(zzdUserDTO.getUsername()); +// userDTO.setNickname(zzdUserDTO.getUsername()); +// userDTO.setSystemType("2"); +// userDTO.setPhone(mobile); +// userDTO.setCreateBy("诗画自动创建"); +// //赋予随机密码 +// userDTO.setPassword("pj*"+ UUID.randomUUID()); +// R booleanR = remoteUserService.registerUser(userDTO); +// R> userByMobile=remoteUserService.getUserByMobile(mobile); +// SysUser sysUser = userByMobile.getData().get(0); +// UserTokenDTO userTokenDTO = new UserTokenDTO(); +// userTokenDTO.setSysUser(sysUser); +//// //登录成功,根据新注册的用户信息返回token +// r=remoteTokenService.generateToken(userTokenDTO); + return R.failed("系统中没有当前用户信息,请联系管理员进行申请!"); } return r; }