From ed1241a192866ae5c37534f6fd33fa56144facb3 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Tue, 21 May 2024 08:47:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=80=E5=8C=97=E5=B9=B2=E6=89=B0=E6=BA=90?= =?UTF-8?q?=E5=B8=B8=E6=80=81=E5=8C=96=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BpmProcessInstanceController.java | 11 ++ .../BpmUserReportNormalStatusListener.java | 28 ++++ .../task/IBpmProcessInstanceService.java | 7 + .../impl/BpmProcessInstanceServiceImpl.java | 29 +++- .../api/UserReportNormalFeignClient.java | 22 +++ ...eportNoramlFeignClientFallbackFactory.java | 37 +++++ .../param/user/UserReportNormalParam.java | 58 +++++++ .../pojo/po/user/UserReportNormalPO.java | 51 +++++++ .../pojo/vo/user/UserReportVO.java | 19 ++- .../user/UserReportNormalController.java | 81 ++++++++++ .../mapper/user/UserReportNormalMapper.java | 17 +++ .../user/mapping/UserReportNormalMapper.xml | 5 + .../user/IUserReportNormalService.java | 32 ++++ .../impl/UserReportNormalServiceImpl.java | 143 ++++++++++++++++++ 14 files changed, 537 insertions(+), 3 deletions(-) create mode 100644 pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportNormalStatusListener.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportNormalFeignClient.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportNoramlFeignClientFallbackFactory.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/user/UserReportNormalParam.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/user/UserReportNormalPO.java create mode 100644 pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportNormalController.java create mode 100644 pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/UserReportNormalMapper.java create mode 100644 pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/mapping/UserReportNormalMapper.xml create mode 100644 pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/IUserReportNormalService.java create mode 100644 pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportNormalServiceImpl.java diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmProcessInstanceController.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmProcessInstanceController.java index 0a71f1c9d..bcba69d74 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmProcessInstanceController.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmProcessInstanceController.java @@ -33,6 +33,7 @@ import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.RequestUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import lombok.RequiredArgsConstructor; @@ -202,4 +203,14 @@ public class BpmProcessInstanceController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, instanceId, methodDescribe); } + + @ApiOperation(value = "删除流程实例(会删除已经审核的流程慎用)") + @GetMapping(value = "/deleteInstance") + public HttpResult delete(@ApiParam(value = "流程实例ID", required = true) @RequestParam String instanceIds) { + String methodDescribe = getMethodDescribe("delete"); + processInstanceService.delete(instanceIds,"测试删除"); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + + } + } diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportNormalStatusListener.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportNormalStatusListener.java new file mode 100644 index 000000000..7ca16c39b --- /dev/null +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportNormalStatusListener.java @@ -0,0 +1,28 @@ +package com.njcn.bpm.listener.business; + +import com.njcn.bpm.listener.BpmProcessInstanceStatusEvent; +import com.njcn.bpm.listener.BpmProcessInstanceStatusEventListener; +import com.njcn.supervision.api.UserReportFeignClient; +import com.njcn.supervision.api.UserReportNormalFeignClient; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +@Component +public class BpmUserReportNormalStatusListener extends BpmProcessInstanceStatusEventListener { + + @Resource + private UserReportNormalFeignClient userReportNormalFeignClient; + + @Override + protected String getProcessDefinitionKey() { + return "user_go_net"; + } + + @Override + protected void onEvent(BpmProcessInstanceStatusEvent event) { + userReportNormalFeignClient.updateUserReportNormalStatus(event.getBusinessKey(), event.getStatus()); + } + +} diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/IBpmProcessInstanceService.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/IBpmProcessInstanceService.java index 41b5cd5fb..4736dbb7f 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/IBpmProcessInstanceService.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/IBpmProcessInstanceService.java @@ -146,4 +146,11 @@ public interface IBpmProcessInstanceService { */ void updateProcessInstanceReject(String id, String reason); + /** + * 用于测试过程删除流程,正式环境慎用 + * @author cdf + * @date 2024/5/20 + */ + void delete(String id, String reason); + } diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java index 445556135..b6f6d5513 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java @@ -316,8 +316,35 @@ public class BpmProcessInstanceServiceImpl implements IBpmProcessInstanceService BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, processInstance, BpmProcessInstanceStatusEnum.REJECT.getStatus())); } - private void deleteProcessInstance(String id, String reason) { + public void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String instanceId, String deleteReason) { + + // 查询历史数据 + HistoricProcessInstance historicProcessInstance = getHistoricProcessInstanceById(instanceId); + if (historicProcessInstance.getEndTime() != null) { + historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); + return; + } + // 删除流程实例 + runtimeService.deleteProcessInstance(instanceId, deleteReason); + // 删除历史流程实例 + historyService.deleteHistoricProcessInstance(instanceId); + } + + + public HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId) { + HistoricProcessInstance historicProcessInstance = + historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + if (Objects.isNull(historicProcessInstance)) { + throw new BusinessException("流程实例不存在: " + processInstanceId); + } + return historicProcessInstance; + } + } diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportNormalFeignClient.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportNormalFeignClient.java new file mode 100644 index 000000000..779e743f6 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportNormalFeignClient.java @@ -0,0 +1,22 @@ +package com.njcn.supervision.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.supervision.api.fallback.UserReportNoramlFeignClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * 流程实例 Api 接口 + * + * @author hongawen + */ +@FeignClient(value = ServerInfo.SUPERVISION, path = "/userReportNormal", fallbackFactory = UserReportNoramlFeignClientFallbackFactory.class) +public interface UserReportNormalFeignClient { + + @GetMapping("/updateUserReportNormalStatus") + HttpResult updateUserReportNormalStatus(@RequestParam("businessKey") String businessKey, @RequestParam("status")Integer status); + +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportNoramlFeignClientFallbackFactory.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportNoramlFeignClientFallbackFactory.java new file mode 100644 index 000000000..8431089e8 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportNoramlFeignClientFallbackFactory.java @@ -0,0 +1,37 @@ +package com.njcn.supervision.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.supervision.api.UserReportNormalFeignClient; +import com.njcn.supervision.utils.SupervisionEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022/3/16 + */ +@Slf4j +@Component +public class UserReportNoramlFeignClientFallbackFactory implements FallbackFactory { + @Override + public UserReportNormalFeignClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = SupervisionEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new UserReportNormalFeignClient() { + @Override + public HttpResult updateUserReportNormalStatus(String businessKey, Integer status) { + log.error("{}异常,降级处理,异常为:{}", "更新用户数据流程状态", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/user/UserReportNormalParam.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/user/UserReportNormalParam.java new file mode 100644 index 000000000..903dc6479 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/user/UserReportNormalParam.java @@ -0,0 +1,58 @@ +package com.njcn.supervision.pojo.param.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 干扰源用户常态化管理 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +@Getter +@Setter +public class UserReportNormalParam extends BaseParam { + + private static final long serialVersionUID = 1L; + + private String id; + + /** + * 关联干扰源用户表 + */ + private String userReportId; + + /** + * 类型0:方案审查 1:治理工程 + */ + private Boolean type; + + /** + * 报告存放路径 + */ + private String reportUrl; + + /** + * 1:审批中;2:审批通过;3:审批不通过;4:已取消 + */ + private String status; + + + @ApiModelProperty("发起人自选审批人 Map") + private Map> startUserSelectAssignees; + + + + + + +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/user/UserReportNormalPO.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/user/UserReportNormalPO.java new file mode 100644 index 000000000..0693d9d7c --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/user/UserReportNormalPO.java @@ -0,0 +1,51 @@ +package com.njcn.supervision.pojo.po.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 干扰源用户常态化管理 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +@Getter +@Setter +@TableName("supervision_user_report_normal") +public class UserReportNormalPO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + private String id; + + /** + * 关联干扰源用户表 + */ + private String userReportId; + + /** + * 类型0:方案审查 1:治理工程 + */ + private Boolean type; + + /** + * 报告存放路径 + */ + private String reportUrl; + + private String processInstanceId; + + /** + * 1:审批中;2:审批通过;3:审批不通过;4:已取消 + */ + private Integer status; + + private Integer state; + + + +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/user/UserReportVO.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/user/UserReportVO.java index f26e859d6..ba9e2d236 100644 --- a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/user/UserReportVO.java +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/user/UserReportVO.java @@ -12,12 +12,13 @@ import com.njcn.supervision.pojo.po.user.UserReportSensitivePO; import com.njcn.supervision.pojo.po.user.UserReportSubstationPO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.time.LocalDate; import java.time.LocalDateTime; /** - * + * * Description: * Date: 2024/4/25 10:07【需求编号】 * @@ -141,4 +142,18 @@ public class UserReportVO { private UserReportSensitivePO userReportSensitivePO; private UserReportSubstationPO userReportSubstationPO; -} \ No newline at end of file + + + + @Data + @EqualsAndHashCode(callSuper = true) + public static class UserReportGoNetVO extends UserReportVO{ + /** + * 入网评估报告和治理报告的文件路径名 + */ + @ApiModelProperty(value = "入网评估报告和治理报告的文件路径名") + private String otherReport; + + private String userReportId; + } +} diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportNormalController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportNormalController.java new file mode 100644 index 000000000..620aa56e4 --- /dev/null +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportNormalController.java @@ -0,0 +1,81 @@ +package com.njcn.supervision.controller.user; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.supervision.pojo.param.user.UserReportNormalParam; +import com.njcn.supervision.pojo.param.user.UserReportParam; +import com.njcn.supervision.pojo.vo.user.UserReportVO; +import com.njcn.supervision.service.user.IUserReportNormalService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import com.njcn.web.controller.BaseController; + +/** + *

+ * 干扰源用户常态化管理 前端控制器 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +@RestController +@RequestMapping("userReportNormal") +@RequiredArgsConstructor +public class UserReportNormalController extends BaseController { + + private final IUserReportNormalService iUserReportNormalService; + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType= OperateType.ADD) + @PostMapping("/addUserReportNormal") + @ApiOperation("新增干扰源常态化管理") + @ApiImplicitParam(name = "userReportNormalParam", value = "实体参数", required = true) + public HttpResult addUserReport(@RequestBody @Validated UserReportNormalParam userReportNormalParam){ + String methodDescribe = getMethodDescribe("addUserReport"); + String userReportId = iUserReportNormalService.addUserNormal(userReportNormalParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportId, methodDescribe); + } + + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/userReportGoNetPage") + @ApiOperation("分页查询干扰源常态化页面") + @ApiImplicitParam(name = "userReportGoNetPage", value = "实体参数", required = true) + public HttpResult> userReportGoNetPage(@RequestBody @Validated UserReportNormalParam userReportNormalParam){ + String methodDescribe = getMethodDescribe("userReportGoNetPage"); + Page userReportId = iUserReportNormalService.userReportGoNetPage(userReportNormalParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportId, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/userReportGoNetById") + @ApiOperation("查询干扰源常态化详情") + @ApiImplicitParam(name = "userReportGoNetById", value = "实体参数", required = true) + public HttpResult userReportGoNetById(@RequestParam("id")String id){ + String methodDescribe = getMethodDescribe("userReportGoNetById"); + UserReportVO.UserReportGoNetVO userReport = iUserReportNormalService.userReportGoNetById(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReport, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPDATE) + @GetMapping("/updateUserReportNormalStatus") + @ApiOperation("修改业务审核状态") + @ApiImplicitParam(name = "userReportGoNetById", value = "实体参数", required = true) + public HttpResult updateUserReportNormalStatus(@RequestParam("businessKey") String businessKey, @RequestParam("status")Integer status){ + String methodDescribe = getMethodDescribe("updateUserReportNormalStatus"); + iUserReportNormalService.updateUserReportNormalStatus(businessKey,status); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } +} + diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/UserReportNormalMapper.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/UserReportNormalMapper.java new file mode 100644 index 000000000..551dc0fcb --- /dev/null +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/UserReportNormalMapper.java @@ -0,0 +1,17 @@ +package com.njcn.supervision.mapper.user; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.supervision.pojo.po.user.UserReportNormalPO; + +/** + *

+ * 干扰源用户常态化管理 Mapper 接口 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +public interface UserReportNormalMapper extends BaseMapper { + +} diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/mapping/UserReportNormalMapper.xml b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/mapping/UserReportNormalMapper.xml new file mode 100644 index 000000000..a4ec0c5fe --- /dev/null +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/mapper/user/mapping/UserReportNormalMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/IUserReportNormalService.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/IUserReportNormalService.java new file mode 100644 index 000000000..3d680f9ca --- /dev/null +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/IUserReportNormalService.java @@ -0,0 +1,32 @@ +package com.njcn.supervision.service.user; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.supervision.pojo.param.user.UserReportNormalParam; +import com.njcn.supervision.pojo.po.user.UserReportNormalPO; +import com.njcn.supervision.pojo.vo.user.UserReportVO; +import org.springframework.web.bind.annotation.RequestParam; + +/** + *

+ * 干扰源用户常态化管理 服务类 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +public interface IUserReportNormalService extends IService { + + String addUserNormal(UserReportNormalParam userReportNormalParam); + + + Page userReportGoNetPage(UserReportNormalParam userReportNormalParam); + + + UserReportVO.UserReportGoNetVO userReportGoNetById(String id); + + + void updateUserReportNormalStatus(String businessKey,Integer status); + +} diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportNormalServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportNormalServiceImpl.java new file mode 100644 index 000000000..e79ddf371 --- /dev/null +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportNormalServiceImpl.java @@ -0,0 +1,143 @@ +package com.njcn.supervision.service.user.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.bpm.api.BpmProcessFeignClient; +import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.supervision.enums.FlowStatusEnum; +import com.njcn.supervision.mapper.user.UserReportNormalMapper; +import com.njcn.supervision.pojo.param.user.UserReportNormalParam; +import com.njcn.supervision.pojo.po.user.UserReportNormalPO; +import com.njcn.supervision.pojo.po.user.UserReportPO; +import com.njcn.supervision.pojo.vo.user.UserReportVO; +import com.njcn.supervision.service.user.IUserReportNormalService; +import com.njcn.supervision.service.user.UserReportPOService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.api.UserFeignClient; +import com.njcn.user.pojo.po.User; +import com.njcn.web.factory.PageFactory; +import com.njcn.web.utils.RequestUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + *

+ * 干扰源用户常态化管理 服务实现类 + *

+ * + * @author hongawen + * @since 2024-05-17 + */ +@Service +@RequiredArgsConstructor +public class UserReportNormalServiceImpl extends ServiceImpl implements IUserReportNormalService { + + /** + * 用户信息建档对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "user_go_net"; + + + private final BpmProcessFeignClient bpmProcessFeignClient; + + private final UserReportPOService userReportPOService; + + + private final DeptFeignClient deptFeignClient; + + private final UserFeignClient userFeignClient; + + @Override + @Transactional(rollbackFor = Exception.class) + public String addUserNormal(UserReportNormalParam userReportNormalParam) { + UserReportNormalPO userReportNormalPO = new UserReportNormalPO(); + BeanUtil.copyProperties(userReportNormalParam, userReportNormalPO); + userReportNormalPO.setState(DataStateEnum.ENABLE.getCode()); + userReportNormalPO.setStatus(FlowStatusEnum.AUDIT.getCode()); + this.save(userReportNormalPO); + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + BpmProcessInstanceCreateReqDTO bpmProcessInstanceCreateReqDTO = new BpmProcessInstanceCreateReqDTO(); + bpmProcessInstanceCreateReqDTO.setProcessDefinitionKey(PROCESS_KEY); + bpmProcessInstanceCreateReqDTO.setBusinessKey(userReportNormalPO.getId()); + bpmProcessInstanceCreateReqDTO.setStartUserSelectAssignees(userReportNormalParam.getStartUserSelectAssignees()); + bpmProcessInstanceCreateReqDTO.setVariables(processInstanceVariables); + String processInstanceId = bpmProcessFeignClient.createProcessInstance(userReportNormalPO.getCreateBy(), bpmProcessInstanceCreateReqDTO).getData(); + // 将工作流的编号,更新到流程单中 + userReportNormalPO.setProcessInstanceId(processInstanceId); + this.baseMapper.updateById(userReportNormalPO); + return userReportNormalPO.getId(); + } + + @Override + public Page userReportGoNetPage(UserReportNormalParam userReportNormalParam) { + Page pageResult = new Page<>(); + + + List deptIds = deptFeignClient.getDepSonIdtByDeptId(RequestUtil.getDeptIndex()).getData(); + List userList = userFeignClient.getUserInfoByDeptIds(deptIds).getData(); + List userIds = userList.stream().map(User::getId).distinct().collect(Collectors.toList()); + if(CollUtil.isEmpty(userIds)){ + return pageResult; + } + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.orderByDesc(UserReportNormalPO::getCreateTime) + .eq(UserReportNormalPO::getType,userReportNormalParam.getType()) + .in(UserReportNormalPO::getCreateBy, userIds) + .eq(UserReportNormalPO::getUserReportId,userReportNormalParam.getUserReportId()); + Page page = this.page(new Page<>(PageFactory.getPageNum(userReportNormalParam), PageFactory.getPageSize(userReportNormalParam)), lambdaQueryWrapper); + if (CollUtil.isNotEmpty(page.getRecords())) { + List ids = page.getRecords().stream().map(UserReportNormalPO::getUserReportId).distinct().collect(Collectors.toList()); + List userReportPOList = userReportPOService.list(new LambdaQueryWrapper().in(UserReportPO::getId, ids)); + Map map = userReportPOList.stream().collect(Collectors.toMap(UserReportPO::getId, Function.identity())); + + List temList = new ArrayList<>(); + page.getRecords().forEach(item -> { + UserReportVO.UserReportGoNetVO vo = new UserReportVO.UserReportGoNetVO(); + UserReportPO userReportPO = map.get(item.getUserReportId()); + BeanUtil.copyProperties(userReportPO,vo); + vo.setId(item.getId()); + vo.setUserReportId(item.getUserReportId()); + vo.setOtherReport(item.getReportUrl()); + vo.setProcessInstanceId(item.getProcessInstanceId()); + vo.setCreateTime(item.getCreateTime()); + vo.setStatus(item.getStatus()); + vo.setReporter(item.getCreateBy()); + temList.add(vo); + }); + BeanUtil.copyProperties(page,pageResult); + pageResult.setRecords(temList); + } + return pageResult; + } + + @Override + public UserReportVO.UserReportGoNetVO userReportGoNetById(String id) { + UserReportNormalPO userReportNormalPO = this.getById(id); + UserReportPO userReportPO = userReportPOService.getById(userReportNormalPO.getUserReportId()); + UserReportVO.UserReportGoNetVO vo = new UserReportVO.UserReportGoNetVO(); + BeanUtil.copyProperties(userReportPO,vo); + BeanUtil.copyProperties(userReportNormalPO,vo); + return vo; + } + + @Override + public void updateUserReportNormalStatus(String businessKey, Integer status) { + this.update(new UpdateWrapper().lambda().set(UserReportNormalPO::getStatus,status).eq(UserReportNormalPO::getId,businessKey)); + } +}