From 51bc224ec4da2e00d7b3ec671d213415946ae973 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 14 Mar 2025 17:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E5=B8=82=E5=A2=9E=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/entity/BoxesBookingEntity.java | 3 ++ .../controller/BoxesBookingController.java | 15 ++++---- .../resources/mapper/BoxesBookingMapper.xml | 1 + .../pjcloud/flow/task/dto/UserRootDto.java | 11 ++++++ .../flow/task/utils/GetCheckReasonUtils.java | 34 +++++++++++++++++++ .../flow/task/vo/CheckStatusAndReasonVo.java | 12 +++++++ .../constant/SupermarketFlowConstant.java | 32 +++++++++++++++++ .../supermarket/entity/SmErpCgPlanEntity.java | 8 +++++ .../pjcloud-supermarket-biz/pom.xml | 11 ++++++ .../controller/SmErpCgPlanController.java | 25 ++++++++++++++ .../service/impl/SmErpCgPlanServiceImpl.java | 19 +++++++++-- .../resources/mapper/SmErpCgPlanMapper.xml | 2 ++ 12 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/UserRootDto.java create mode 100644 pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/utils/GetCheckReasonUtils.java create mode 100644 pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/vo/CheckStatusAndReasonVo.java create mode 100644 pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/constant/SupermarketFlowConstant.java diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java index c7c189a36..429a12824 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java @@ -120,4 +120,7 @@ public class BoxesBookingEntity extends Model { @Schema(description="流程实例id") private String processInstanceId; + + @Schema(description="审核原因") + private String checkReason; } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/BoxesBookingController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/BoxesBookingController.java index 03fc8d499..bb5c55d31 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/BoxesBookingController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/BoxesBookingController.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.canteen.controller; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,6 +14,8 @@ import com.bsd.pjcloud.canteen.service.BoxesBookingService; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordParamDto; +import com.bsd.pjcloud.flow.task.utils.GetCheckReasonUtils; +import com.bsd.pjcloud.flow.task.vo.CheckStatusAndReasonVo; import org.apache.seata.spring.annotation.GlobalTransactional; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -138,20 +141,20 @@ public class BoxesBookingController { @PostMapping("/flow-callback") @Operation(summary = "流程节点回调通知") - @Inner - public R createBooking(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) { - + @Inner(value = false) + @Transactional + public R flowCallback(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) { String processInstanceId = processNodeRecordParamDto.getProcessInstanceId(); BoxesBookingEntity boxesBookingEntity = new BoxesBookingEntity(); boxesBookingEntity.setProcessInstanceId(processInstanceId); boxesBookingEntity.setCheckStatus(TaskCheckStatusEnum.RESULT.getCode()); - System.out.println("***************************"); System.out.println(processNodeRecordParamDto.getData()); -// boxesBookingService.update() LambdaQueryWrapper boxesBookingEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); boxesBookingEntityLambdaQueryWrapper.eq(BoxesBookingEntity::getProcessInstanceId, processInstanceId); + CheckStatusAndReasonVo checkReason = GetCheckReasonUtils.getCheckReason(processNodeRecordParamDto); + boxesBookingEntity.setCheckStatus(checkReason.getCheckStatus()); + boxesBookingEntity.setCheckReason(checkReason.getCheckReason()); boxesBookingService.update(boxesBookingEntity,boxesBookingEntityLambdaQueryWrapper); - System.out.println(processNodeRecordParamDto); return R.ok(); } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/BoxesBookingMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/BoxesBookingMapper.xml index eb39f95a8..1da397039 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/BoxesBookingMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/BoxesBookingMapper.xml @@ -21,5 +21,6 @@ + \ No newline at end of file diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/UserRootDto.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/UserRootDto.java new file mode 100644 index 000000000..cea373c75 --- /dev/null +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/UserRootDto.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.flow.task.dto; + +import lombok.Data; + +@Data +public class UserRootDto { + + private long id; + + private String name; +} diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/utils/GetCheckReasonUtils.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/utils/GetCheckReasonUtils.java new file mode 100644 index 000000000..cc92674fa --- /dev/null +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/utils/GetCheckReasonUtils.java @@ -0,0 +1,34 @@ +package com.bsd.pjcloud.flow.task.utils; + +import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordParamDto; +import com.bsd.pjcloud.flow.task.dto.UserRootDto; +import com.bsd.pjcloud.flow.task.vo.CheckStatusAndReasonVo; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.StringReader; +import java.util.List; +import java.util.Optional; + +public class GetCheckReasonUtils { + + public static CheckStatusAndReasonVo getCheckReason(ProcessNodeRecordParamDto dto) { + String statusKey = dto.getNodeId() + "_approve_condition"; + try { + JsonNode jsonNode = new ObjectMapper().readTree(dto.getData()); + Boolean changeStatus = jsonNode.get(statusKey).asBoolean(); + String approveDesc = Optional.ofNullable(jsonNode).map(node -> node.get("approveDesc")).filter(JsonNode::isTextual).map(JsonNode::asText).orElse(""); +// String approveDesc = jsonNode.get("approveDesc").toString(); + CheckStatusAndReasonVo checkStatusAndReasonVo = new CheckStatusAndReasonVo(); + checkStatusAndReasonVo.setCheckStatus(changeStatus ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode()); + checkStatusAndReasonVo.setCheckReason(approveDesc); + return checkStatusAndReasonVo; + } catch (Exception e) { + // 处理解析异常 + e.printStackTrace(); + return null; + } + } +} diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/vo/CheckStatusAndReasonVo.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/vo/CheckStatusAndReasonVo.java new file mode 100644 index 000000000..384aab458 --- /dev/null +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/vo/CheckStatusAndReasonVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.flow.task.vo; + +import lombok.Data; + +@Data +public class CheckStatusAndReasonVo { + + private String checkStatus; + + + private String checkReason; +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/constant/SupermarketFlowConstant.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/constant/SupermarketFlowConstant.java new file mode 100644 index 000000000..1267a55c4 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/constant/SupermarketFlowConstant.java @@ -0,0 +1,32 @@ +package com.bsd.pjcloud.supermarket.constant; + +import lombok.Data; + +@Data +public final class SupermarketFlowConstant { + + /** + * 补货申请 + */ + public static final String SUPERMARKET_BHSQ_FLOW= "SUPERMARKET_BHSQ_FLOW"; + + + /** + * 补货申请 + */ + public static final String SUPERMARKET_CGDD_FLOW= "SUPERMARKET_CGDD_FLOW"; + + + /** + * 补货申请 + */ + public static final String SUPERMARKET_CGRK_FLOW= "SUPERMARKET_CGRK_FLOW"; + + /** + * 补货申请 + */ + public static final String SUPERMARKET_CGTH_FLOW= "SUPERMARKET_CGTH_FLOW"; + + + +} 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 b830f420c..2c0d40399 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 @@ -136,6 +136,12 @@ public class SmErpCgPlanEntity extends Model { @Schema(description="关联状态") private String linkStatus; + @Schema(description="流程实例id") + private String processInstanceId; + + @Schema(description="审核原因") + private String checkReason; + @TableField(exist = false) @Schema(description="商品名称") private String productName; @@ -144,4 +150,6 @@ public class SmErpCgPlanEntity extends Model { @TableField(exist = false) public String handlerUserName; + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml index 005039908..5792285a1 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml @@ -64,6 +64,17 @@ pjcloud-supermarket-api 5.7.0 + + com.bsd + pjcloud-flow-task-api + 5.7.0 + + + com.bsd + pjcloud-common-seata + 5.7.0 + + com.bsd pjcloud-wallet-api diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java index 3e3062491..22284a15b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java @@ -3,12 +3,18 @@ package com.bsd.pjcloud.supermarket.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordParamDto; +import com.bsd.pjcloud.flow.task.utils.GetCheckReasonUtils; +import com.bsd.pjcloud.flow.task.vo.CheckStatusAndReasonVo; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanSaveDTO; @@ -22,6 +28,7 @@ import com.bsd.pjcloud.supermarket.service.SmErpUnitService; import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; +import org.apache.seata.spring.annotation.GlobalTransactional; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -104,6 +111,24 @@ public class SmErpCgPlanController { } + @Operation(summary = "回调" , description = "回调" ) + @SysLog("采购补货回调" ) + @PostMapping("/flow-callback") + @Inner(value = false) + @Transactional + public R supermarketFlowCallback(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) { + String processInstanceId = processNodeRecordParamDto.getProcessInstanceId(); + CheckStatusAndReasonVo checkReason = GetCheckReasonUtils.getCheckReason(processNodeRecordParamDto); + smErpCgPlanService.update( + new LambdaUpdateWrapper() + .eq(SmErpCgPlanEntity::getProcessInstanceId, processInstanceId) + .set(SmErpCgPlanEntity::getCheckStatus, checkReason.getCheckStatus()) + .set(SmErpCgPlanEntity::getCheckReason, checkReason.getCheckReason()) + ); + return R.ok(); + } + + /** * 通过id查询采购计划 * @param id id 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 3274e6445..50dfe5594 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 @@ -9,6 +9,11 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; 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.entity.Process; +import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanSaveDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanEditItemDTO; @@ -48,7 +53,7 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_BHSQ_FLOW); + String flowId = processR.getData().getFlowId(); + ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); + processInstanceParamDto.setFlowId(flowId); + R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); + String processInstanceId = stringR.getData(); + smErpCgPlanEntity.setProcessInstanceId(processInstanceId); + smErpCgPlanEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); + int insert = baseMapper.insert(smErpCgPlanEntity); List items = erpCgPlanSaveDTO.getItems(); List cgPlanItemEntities = BeanUtils.toBean(items, SmErpCgPlanItemEntity.class); for (SmErpCgPlanItemEntity cgPlanItemEntity : cgPlanItemEntities) { diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpCgPlanMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpCgPlanMapper.xml index 5321f7753..f7d154ce0 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpCgPlanMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpCgPlanMapper.xml @@ -22,5 +22,7 @@ + + \ No newline at end of file