From fd645cffeb8bd30116b06f08e837f1b850c30bfc Mon Sep 17 00:00:00 2001 From: wangliwen Date: Tue, 10 May 2022 15:37:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E4=B8=8B=E6=9E=B6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResourceMountController.java | 65 +++++++++- .../activiti/service/ActTaskService.java | 34 +++-- .../modules/resource/dto/ResourceDTO.java | 2 + .../resource/entity/ResourceEntity.java | 21 +--- .../entity/ResourceEntityDelFlag.java | 5 +- .../ResourceUndercarriageListener.java | 117 ++++++++++++++++++ .../dto/TResourceUndercarriageApplyDTO.java | 27 ++++ .../listener/ResourceOwnerListener.java | 3 - 8 files changed, 240 insertions(+), 34 deletions(-) create mode 100644 renren-admin/src/main/java/io/renren/modules/resource/listener/ResourceUndercarriageListener.java create mode 100644 renren-admin/src/main/java/io/renren/modules/resourceMountApply/dto/TResourceUndercarriageApplyDTO.java diff --git a/renren-admin/src/main/java/io/renren/common/controller/ResourceMountController.java b/renren-admin/src/main/java/io/renren/common/controller/ResourceMountController.java index 8bb305a2..6ab5a4b6 100644 --- a/renren-admin/src/main/java/io/renren/common/controller/ResourceMountController.java +++ b/renren-admin/src/main/java/io/renren/common/controller/ResourceMountController.java @@ -13,8 +13,12 @@ import io.renren.modules.activiti.dto.ProcessInstanceDTO; import io.renren.modules.activiti.dto.ProcessStartDTO; import io.renren.modules.activiti.service.ActProcessService; import io.renren.modules.activiti.service.ActRunningService; +import io.renren.modules.resource.dto.ResourceDTO; +import io.renren.modules.resource.entity.ResourceEntityDelFlag; +import io.renren.modules.resource.service.ResourceService; import io.renren.modules.resourceMountApply.dto.TResourceBatchMountApplyDTO; import io.renren.modules.resourceMountApply.dto.TResourceMountApplyDTO; +import io.renren.modules.resourceMountApply.dto.TResourceUndercarriageApplyDTO; import io.renren.modules.resourceMountApply.service.TResourceMountApplyService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -30,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; @Api(tags = "资源上架") @@ -44,12 +49,24 @@ public class ResourceMountController { private ActRunningService actRunningService; @Autowired private TResourceMountApplyService tResourceMountApplyService; - private static String key = "resourcemountapply"; + @Autowired + private ResourceService resourceService; - private static Map params = new HashMap() { + private static String apply_key = "resourcemountapply"; // 资源上架 + + private static String undercarriage_key = "resourcundercarriageapply"; // 资源下架 + + private static Map apply_params = new HashMap() { { put("isLatestVersion", true); // 取最新版本 - put("key", key); // 限定 能力资源上架 + put("key", apply_key); // 限定 能力资源上架 + } + }; + + private static Map undercarriage_params = new HashMap() { + { + put("isLatestVersion", true); // 取最新版本 + put("key", undercarriage_key); // 限定 资源下架 } }; @@ -58,7 +75,7 @@ public class ResourceMountController { @ApiOperation("批量进行能力上架申请") public Result> apply(@RequestBody TResourceBatchMountApplyDTO tResourceBatchMountApplyDTO) { // 仿照请求接口 /act/process/lastestPage - PageData> page = actProcessService.page(params); + PageData> page = actProcessService.page(apply_params); if (page.getTotal() <= 0) { // return new Result().error("联系管理员添加流程"); } @@ -85,7 +102,7 @@ public class ResourceMountController { // 仿照请求接口 /act/running/startOfBusinessKey ProcessStartDTO processStartDTO = new ProcessStartDTO(); processStartDTO.setBusinessKey(tResourceMountApplyDTO.getId().toString()); - processStartDTO.setProcessDefinitionKey(key); // 限定资源上架 + processStartDTO.setProcessDefinitionKey(apply_key); // 限定资源上架 ObjectMapper oMapper = new ObjectMapper(); Map variables = oMapper.convertValue(tResourceMountApplyDTO, Map.class); processStartDTO.setVariables(variables); @@ -103,4 +120,42 @@ public class ResourceMountController { return dto; }).filter(index -> ObjectUtil.isNotNull(index)).collect(Collectors.toList())); } + + @PostMapping(value = "/undercarriage") + @ApiOperation("批量进行能力下架申请") + public Result> undercarriage(@RequestBody TResourceUndercarriageApplyDTO tResourceUndercarriageApplyDTO) { + // 仿照请求接口 /act/process/lastestPage + PageData> page = actProcessService.page(undercarriage_params); + if (page.getTotal() <= 0) { // + return new Result().error("联系管理员添加流程"); + } + logger.info("---------------------------------------------------"); + logger.info(JSONObject.toJSONString(tResourceUndercarriageApplyDTO)); + logger.info("####################################################"); + return new Result().ok(tResourceUndercarriageApplyDTO.getResource().stream().map(index -> { + Long resourceId = Long.valueOf(index.get("resourceId")); + String resourceName = index.get("resourceName"); + Optional resourceDTO = Optional.ofNullable(resourceService.get(resourceId)); + resourceDTO.ifPresent(dto -> { + dto.setUndercarriageReason(tResourceUndercarriageApplyDTO.getReason()); + dto.setDelFlag(ResourceEntityDelFlag.UNDERCARRIAGE_REVIEW.getFlag()); // 设置为下架审核中 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + resourceService.update(dto); + }); + + logger.info("-------------------1.保存申请表单成功--------------------------"); + // 仿照请求接口 /act/running/startOfBusinessKey + ProcessStartDTO processStartDTO = new ProcessStartDTO(); + processStartDTO.setBusinessKey(resourceId.toString()); + processStartDTO.setProcessDefinitionKey(undercarriage_key); // 限定资源下架 + ObjectMapper oMapper = new ObjectMapper(); + Map variables = oMapper.convertValue(resourceDTO, Map.class); + processStartDTO.setVariables(variables); + ProcessInstanceDTO dto = actRunningService.startOfBusinessKey(processStartDTO); + logger.info("-------------------2.启动流程成功--------------------------"); + logger.info("ProcessInstanceDTO.getBusinessKey:" + dto.getBusinessKey()); + + return dto; + }).filter(index -> ObjectUtil.isNotNull(index)).collect(Collectors.toList())); + } } diff --git a/renren-admin/src/main/java/io/renren/modules/activiti/service/ActTaskService.java b/renren-admin/src/main/java/io/renren/modules/activiti/service/ActTaskService.java index 3b3137a2..fc65b942 100644 --- a/renren-admin/src/main/java/io/renren/modules/activiti/service/ActTaskService.java +++ b/renren-admin/src/main/java/io/renren/modules/activiti/service/ActTaskService.java @@ -12,6 +12,8 @@ import io.renren.modules.demanData.dto.TDemandDataDTO; import io.renren.modules.demanData.service.TDemandDataService; import io.renren.modules.processForm.dto.TAbilityApplicationDTO; import io.renren.modules.processForm.service.TAbilityApplicationService; +import io.renren.modules.resource.dto.ResourceDTO; +import io.renren.modules.resource.service.ResourceService; import io.renren.modules.resourceMountApply.dto.TResourceMountApplyDTO; import io.renren.modules.resourceMountApply.service.TResourceMountApplyService; import io.renren.modules.security.user.SecurityUser; @@ -72,6 +74,8 @@ public class ActTaskService extends BaseServiceImpl { @Autowired private TDemandDataService tDemandDataService; + @Autowired + private ResourceService resourceService; /** * 根据参数获取当前运行的任务信息 @@ -115,25 +119,37 @@ public class ActTaskService extends BaseServiceImpl { for (Task task : list) { TaskDTO dto = new TaskDTO(); this.convertTaskInfo(task, dto); + ObjectMapper oMapper = new ObjectMapper(); + TAbilityApplicationDTO abilityApplicationDTO = tAbilityApplicationService.get(Long.valueOf(dto.getBusinessKey())); - TResourceMountApplyDTO resourceMountApplyDTO = tResourceMountApplyService.get(Long.valueOf(dto.getBusinessKey())); - TDemandDataDTO tDemandDataDTO = tDemandDataService.get(Long.valueOf(dto.getBusinessKey())); if (abilityApplicationDTO != null) { - ObjectMapper oMapper = new ObjectMapper(); Map variables = oMapper.convertValue(abilityApplicationDTO, Map.class); dto.setParams(variables); - } else if (resourceMountApplyDTO != null) { - ObjectMapper oMapper = new ObjectMapper(); + listDto.add(dto); + continue; + } + TResourceMountApplyDTO resourceMountApplyDTO = tResourceMountApplyService.get(Long.valueOf(dto.getBusinessKey())); + if (resourceMountApplyDTO != null) { Map variables = oMapper.convertValue(resourceMountApplyDTO, Map.class); dto.setParams(variables); - } else if (tDemandDataDTO != null) { - ObjectMapper oMapper = new ObjectMapper(); + listDto.add(dto); + continue; + } + TDemandDataDTO tDemandDataDTO = tDemandDataService.get(Long.valueOf(dto.getBusinessKey())); + if (tDemandDataDTO != null) { Map variables = oMapper.convertValue(tDemandDataDTO, Map.class); dto.setParams(variables); + listDto.add(dto); + continue; + } + ResourceDTO resourceDTO = resourceService.get(Long.valueOf(dto.getBusinessKey())); + if (resourceDTO != null) { + Map variables = oMapper.convertValue(resourceDTO, Map.class); + dto.setParams(variables); + listDto.add(dto); + continue; } - - listDto.add(dto); } return new PageData<>(listDto, (int) taskQuery.count()); } diff --git a/renren-admin/src/main/java/io/renren/modules/resource/dto/ResourceDTO.java b/renren-admin/src/main/java/io/renren/modules/resource/dto/ResourceDTO.java index ec0f58e1..42eab0dc 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/dto/ResourceDTO.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/dto/ResourceDTO.java @@ -96,6 +96,8 @@ public class ResourceDTO implements Serializable { @ApiModelProperty(value = "附件") private String enclosure; + @ApiModelProperty(value = "下架理由") + private String undercarriageReason; public String getDelFlagTip() { if (this.delFlag != null) { diff --git a/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntity.java b/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntity.java index 4a5d805f..86c1bad1 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntity.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntity.java @@ -19,11 +19,6 @@ import java.util.Date; public class ResourceEntity extends BaseEntity { private static final long serialVersionUID = 1L; -// /** -// * 主键 -// */ -// @TableId(type = IdType.INPUT) -// private Long id; /** * 类型:基础设施,数据资源等 */ @@ -88,16 +83,7 @@ public class ResourceEntity extends BaseEntity { * 删除标志:0:正常;1:已删除;9其他 */ private Integer delFlag; -// /** -// * 创建人 -// */ -// @TableField(fill = FieldFill.INSERT) -// private Long creator; -// /** -// * 创建时间 -// */ -// @TableField(fill = FieldFill.INSERT) -// private Date createDate; + /** * 修改人 */ @@ -134,4 +120,9 @@ public class ResourceEntity extends BaseEntity { * 附件 */ private String enclosure; + + /** + * 下架理由 + */ + private String undercarriageReason; } \ No newline at end of file diff --git a/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntityDelFlag.java b/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntityDelFlag.java index 0f97a212..df8f4661 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntityDelFlag.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/entity/ResourceEntityDelFlag.java @@ -14,7 +14,8 @@ public enum ResourceEntityDelFlag { UNDER_REVIEW(3, "上架审核中"), UNDERCARRIAGE_REVIEW(4, "下架审核中"), UNDERCARRIAGE(5, "已下架"), - OTHER(9, "其他"); + OTHER(9, "其他"), + UNKNOWN(10, "未知"); private int flag; private String tip; @@ -26,7 +27,7 @@ public enum ResourceEntityDelFlag { public static ResourceEntityDelFlag getByFlag(int flag) { ResourceEntityDelFlag[] index = ResourceEntityDelFlag.values(); - return Arrays.asList(index).stream().filter(index_ -> index_.flag == flag).findAny().orElse(null); + return Arrays.asList(index).stream().filter(index_ -> index_.flag == flag).findAny().orElse(ResourceEntityDelFlag.UNKNOWN); } diff --git a/renren-admin/src/main/java/io/renren/modules/resource/listener/ResourceUndercarriageListener.java b/renren-admin/src/main/java/io/renren/modules/resource/listener/ResourceUndercarriageListener.java new file mode 100644 index 00000000..14683698 --- /dev/null +++ b/renren-admin/src/main/java/io/renren/modules/resource/listener/ResourceUndercarriageListener.java @@ -0,0 +1,117 @@ +package io.renren.modules.resource.listener; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import io.renren.modules.resource.dto.ResourceDTO; +import io.renren.modules.resource.service.ResourceService; +import io.renren.modules.sys.dto.SysDeptDTO; +import io.renren.modules.sys.dto.SysRoleDTO; +import io.renren.modules.sys.dto.SysUserDTO; +import io.renren.modules.sys.service.SysDeptService; +import io.renren.modules.sys.service.SysRoleService; +import io.renren.modules.sys.service.SysUserService; +import org.activiti.engine.TaskService; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Map; + + +/** + * 资源下线审核 + */ +@Component +public class ResourceUndercarriageListener implements TaskListener { + private static Logger logger = LoggerFactory.getLogger(ResourceUndercarriageListener.class); + + @Value("${big_date.name}") + private String bigDateDeptName; // 大数据局名称 + @Value("${big_date.assignee_role_name}") + private String roleName; // 具备审批的角色名称 + + @Autowired + private SysRoleService sysRoleService; + @Autowired + private TaskService taskService; + @Autowired + private SysUserService sysUserService; + + @Autowired + private SysDeptService sysDeptService; + @Autowired + private ResourceService resourceService; + + @Override + public void notify(DelegateTask delegateTask) { + logger.error("----------------------进入资源所有者节点---------------------------"); + logger.error("事件类型:" + delegateTask.getEventName()); + SysRoleDTO roleDTO = sysRoleService.getByName(roleName); + logger.error("roleDTOId:" + roleDTO.getId()); + final String eventName = delegateTask.getEventName(); + switch (eventName) { + case EVENTNAME_CREATE: // 创建当前审批节点事件 + create(delegateTask, roleDTO); + break; + default: + logger.error("未处理该事件:" + eventName); + } + logger.error("-----------------------结束资源所有者节点---------------------------"); + + } + + /** + * 节点创建时动态分配资源部门审核人 + * + * @param delegateTask + * @param roleDTO + */ + private void create(DelegateTask delegateTask, final SysRoleDTO roleDTO) { + Map kv = delegateTask.getVariables(); + Gson gson = new Gson(); + JsonElement jsonElement = gson.toJsonTree(kv); + ResourceDTO re = gson.fromJson(jsonElement, ResourceDTO.class); + ; + if (re.getDeptId() != null) { + SysDeptDTO deptDTO = + sysDeptService.get(re.getDeptId()); + SysUserDTO userDTO = null; + if (deptDTO.getId() != null) { + userDTO = sysUserService.getByDeptIdAndRoleId(deptDTO.getId(), roleDTO.getId()); // 搜出审批人 + } + if (userDTO != null) { + logger.error("审批人id:" + userDTO.getId() + "姓名:" + userDTO.getRealName()); + taskService.setAssignee(delegateTask.getId(), userDTO.getId().toString()); + } else { + logger.error("未查到该部门对应的 " + roleName + " 将使用大数据部门审核人"); + defaultUser(delegateTask.getId(), roleDTO); + } + } else { + defaultUser(delegateTask.getId(), roleDTO); + } + } + + /** + * 未找到部门对应的审核人 + * + * @param taskId + */ + private void defaultUser(String taskId, final SysRoleDTO roleDTO) { + logger.error("大数据局名称:" + bigDateDeptName); + SysDeptDTO deptDTO = sysDeptService.getByName(bigDateDeptName); + logger.error("roleDTOId:" + roleDTO.getId()); + SysUserDTO userDTO = sysUserService.getByDeptIdAndRoleId(deptDTO.getId(), roleDTO.getId()); + + if (userDTO != null) { + logger.error("大数据审批人id:" + userDTO.getId() + "姓名:" + userDTO.getRealName()); + taskService.setAssignee(taskId, userDTO.getId().toString()); + } else { + logger.error("未查到大数据部门对应 " + roleName); + taskService.setAssignee(taskId, "1516728698224427010"); + } + } +} diff --git a/renren-admin/src/main/java/io/renren/modules/resourceMountApply/dto/TResourceUndercarriageApplyDTO.java b/renren-admin/src/main/java/io/renren/modules/resourceMountApply/dto/TResourceUndercarriageApplyDTO.java new file mode 100644 index 00000000..f32a5b9f --- /dev/null +++ b/renren-admin/src/main/java/io/renren/modules/resourceMountApply/dto/TResourceUndercarriageApplyDTO.java @@ -0,0 +1,27 @@ +package io.renren.modules.resourceMountApply.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + + +@Data +@ApiModel(value = "资源下架申请表单") +public class TResourceUndercarriageApplyDTO implements Serializable { + @ApiModelProperty(value = "下架申请人id") + private String userId; + @ApiModelProperty(value = "下架申请人名字") + private String userName; + @ApiModelProperty(value = "下架申请人电话") + private String phone; + @ApiModelProperty(value = "下架申请人部门") + private String deptId; + @ApiModelProperty(value = "待下架的资源 id、资源名称 键值对") + private List> resource; + @ApiModelProperty(value = "下架原因") + private String reason; +} diff --git a/renren-admin/src/main/java/io/renren/modules/resourceMountApply/listener/ResourceOwnerListener.java b/renren-admin/src/main/java/io/renren/modules/resourceMountApply/listener/ResourceOwnerListener.java index 69f6bc89..82cbe990 100644 --- a/renren-admin/src/main/java/io/renren/modules/resourceMountApply/listener/ResourceOwnerListener.java +++ b/renren-admin/src/main/java/io/renren/modules/resourceMountApply/listener/ResourceOwnerListener.java @@ -80,9 +80,6 @@ public class ResourceOwnerListener implements TaskListener, ExecutionListener, A case EVENTNAME_CREATE: // 创建当前审批节点事件 create(delegateTask, roleDTO); break; -// case EVENTNAME_COMPLETE: -// complete(delegateTask); -// break; default: logger.error("未处理该事件:" + eventName); }