diff --git a/doc/pigxx.sql b/doc/pigxx.sql index 371f5cabe..e14d2bd08 100644 --- a/doc/pigxx.sql +++ b/doc/pigxx.sql @@ -4,7 +4,7 @@ Source Server : RDS本地使用 Source Server Type : MySQL Source Server Version : 50721 - Source Host : 114.116.21.191 + Source Host : 127.0.0.1 Source Database : pigxx Target Server Type : MySQL diff --git a/pigx-auth/src/main/resources/bootstrap.yml b/pigx-auth/src/main/resources/bootstrap.yml index 181395bb2..aed68dfa4 100644 --- a/pigx-auth/src/main/resources/bootstrap.yml +++ b/pigx-auth/src/main/resources/bootstrap.yml @@ -20,4 +20,4 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/EnumTaskStatus.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/EnumTaskStatus.java new file mode 100644 index 000000000..c53b744fe --- /dev/null +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/EnumTaskStatus.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.common.core.constant.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author lengleng + * @date 2018/9/30 + * 流程状态 + */ +@Getter +@AllArgsConstructor +public enum EnumTaskStatus { + /** + * 未提交 + */ + UNSUBMIT("0", "未提交"), + + /** + * 审核中 + */ + CHECK("1", "审核中"), + + /** + * 已完成 + */ + COMPLETED("2", "已完成"), + + /** + * 驳回 + */ + OVERRULE("9", "驳回"); + + /** + * 类型 + */ + private final String status; + /** + * 描述 + */ + private final String description; +} diff --git a/pigx-config/src/main/resources/bootstrap.yml b/pigx-config/src/main/resources/bootstrap.yml index 1e4fde195..5564b817f 100644 --- a/pigx-config/src/main/resources/bootstrap.yml +++ b/pigx-config/src/main/resources/bootstrap.yml @@ -19,7 +19,7 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ # 暴露监控端点 management: diff --git a/pigx-config/src/main/resources/config/application-dev.yml b/pigx-config/src/main/resources/config/application-dev.yml index c0073c981..f0d60ca6d 100644 --- a/pigx-config/src/main/resources/config/application-dev.yml +++ b/pigx-config/src/main/resources/config/application-dev.yml @@ -6,7 +6,7 @@ jasypt: spring: redis: password: - host: 192.168.0.22 + host: localhost # 暴露监控端点 management: endpoints: @@ -94,7 +94,7 @@ swagger: ## spring security 配置 security: auth: - server: http://192.168.0.20:9999/auth/oauth + server: http://localhost:9999/auth/oauth oauth2: resource: token-info-uri: ${security.auth.server}/check_token diff --git a/pigx-config/src/main/resources/config/pigx-auth-dev.yml b/pigx-config/src/main/resources/config/pigx-auth-dev.yml index 7cd1dbdd7..6770a0507 100644 --- a/pigx-config/src/main/resources/config/pigx-auth-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-auth-dev.yml @@ -4,5 +4,5 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver username: root - password: Bjyjht2017!@# - url: jdbc:mysql://114.116.21.191:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false + password: 123456 + url: jdbc:mysql://127.0.0.1:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false diff --git a/pigx-config/src/main/resources/config/pigx-codegen-dev.yml b/pigx-config/src/main/resources/config/pigx-codegen-dev.yml index c7a86b72f..8e925f6ab 100644 --- a/pigx-config/src/main/resources/config/pigx-codegen-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-codegen-dev.yml @@ -12,8 +12,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver username: root - password: Bjyjht2017!@# - url: jdbc:mysql://114.116.21.191:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false + password: 123456 + url: jdbc:mysql://127.0.0.1:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss diff --git a/pigx-config/src/main/resources/config/pigx-daemon-dev.yml b/pigx-config/src/main/resources/config/pigx-daemon-dev.yml index 214bf42cf..5fcfbb876 100644 --- a/pigx-config/src/main/resources/config/pigx-daemon-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-daemon-dev.yml @@ -13,8 +13,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver username: root - password: Bjyjht2017!@# - url: jdbc:mysql://114.116.21.191:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false + password: 123456 + url: jdbc:mysql://127.0.0.1:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false elasticjob: # 分布式任务协调依赖zookeeper zookeeper: diff --git a/pigx-config/src/main/resources/config/pigx-upms-dev.yml b/pigx-config/src/main/resources/config/pigx-upms-dev.yml index 51e2fd711..a5252dd4b 100644 --- a/pigx-config/src/main/resources/config/pigx-upms-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-upms-dev.yml @@ -12,8 +12,8 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver username: root - password: Bjyjht2017!@# - url: jdbc:mysql://114.116.21.191:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true + password: 123456 + url: jdbc:mysql://127.0.0.1:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true # swagger相关配置,覆盖全局配置 swagger: diff --git a/pigx-eureka/src/main/resources/bootstrap.yml b/pigx-eureka/src/main/resources/bootstrap.yml index dc8b68ab0..2c36ec856 100644 --- a/pigx-eureka/src/main/resources/bootstrap.yml +++ b/pigx-eureka/src/main/resources/bootstrap.yml @@ -13,7 +13,7 @@ spring: # 类似的 redis 使用pigx-redis ,gateway 换成 pigx-gateway eureka: instance: - hostname: 192.168.0.20 + hostname: localhost prefer-ip-address: true client: register-with-eureka: false diff --git a/pigx-gateway/src/main/resources/bootstrap.yml b/pigx-gateway/src/main/resources/bootstrap.yml index f896e90d8..aeb0ffd87 100644 --- a/pigx-gateway/src/main/resources/bootstrap.yml +++ b/pigx-gateway/src/main/resources/bootstrap.yml @@ -22,6 +22,6 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java index 6a95024bf..a084ea076 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java @@ -20,6 +20,7 @@ package com.pig4cloud.pigx.admin.api.feign; import com.pig4cloud.pigx.admin.api.dto.UserInfo; +import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.factory.RemoteUserServiceFallbackFactory; import com.pig4cloud.pigx.common.core.constant.ServiceNameConstant; import com.pig4cloud.pigx.common.core.util.R; @@ -28,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestHeader; +import java.util.List; + /** * @author lengleng * @date 2018/6/22 @@ -53,4 +56,15 @@ public interface RemoteUserService { */ @GetMapping("/social/info/{inStr}") R social(@PathVariable("inStr") String inStr); + + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @param from 调用标志 + * @return R + */ + @GetMapping("/user/ancestorUsers/{username}") + R> ancestorUsers(@PathVariable("username") String username + , @RequestHeader("from") String from); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java index 37ebaba44..f7bf5c897 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java @@ -20,12 +20,15 @@ package com.pig4cloud.pigx.admin.api.feign.fallback; import com.pig4cloud.pigx.admin.api.dto.UserInfo; +import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; import com.pig4cloud.pigx.common.core.util.R; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author lengleng * @date 2018/6/26 @@ -60,4 +63,17 @@ public class RemoteUserServiceFallbackImpl implements RemoteUserService { log.error("feign 查询用户信息失败:{}", inStr, cause); return null; } + + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @param from 调用标志 + * @return R + */ + @Override + public R> ancestorUsers(String username, String from) { + log.error("feign 查询用户上级部门用户列失败:{}", username, cause); + return null; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java index 66f657eea..a19157876 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java @@ -36,14 +36,15 @@ import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.common.security.util.SecurityUtils; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; import java.util.Map; /** @@ -51,11 +52,11 @@ import java.util.Map; * @date 2017/10/28 */ @RestController +@AllArgsConstructor @RequestMapping("/user") public class UserController { private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); - @Autowired - private SysUserService userService; + private final SysUserService userService; /** * 获取当前用户信息(角色、权限) @@ -124,7 +125,7 @@ public class UserController { SysUser sysUser = new SysUser(); BeanUtils.copyProperties(userDto, sysUser); sysUser.setDelFlag(CommonConstant.STATUS_NORMAL); - sysUser.setPassword(ENCODER.encode(userDto.getNewpassword1())); + sysUser.setPassword(ENCODER.encode(userDto.getPassword())); userService.insert(sysUser); userDto.getRole().forEach(roleId -> { SysUserRole userRole = new SysUserRole(); @@ -169,4 +170,13 @@ public class UserController { public R editInfo(@Valid @RequestBody UserDTO userDto) { return userService.updateUserInfo(userDto, SecurityUtils.getUser().getUsername()); } + + /** + * @param username 用户名称 + * @return + */ + @GetMapping("/ancestorUsers/{username}") + public R> ancestorUsers(@PathVariable String username) { + return new R<>(userService.ancestorUsers(username)); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java index dfb2825b6..53c2260e2 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java @@ -28,6 +28,8 @@ import com.pig4cloud.pigx.admin.api.vo.UserVO; import com.pig4cloud.pigx.common.core.util.Query; import com.pig4cloud.pigx.common.core.util.R; +import java.util.List; + /** * @author lengleng * @date 2017/10/31 @@ -102,5 +104,11 @@ public interface SysUserService extends IService { */ Boolean deleteSysUserByUsernameAndUserId(String username, Integer userId); - + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @return R + */ + List ancestorUsers(String username); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java index a9b73ef20..e3341791e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java @@ -27,10 +27,7 @@ import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; -import com.pig4cloud.pigx.admin.api.entity.SysRole; -import com.pig4cloud.pigx.admin.api.entity.SysUser; -import com.pig4cloud.pigx.admin.api.entity.SysUserRole; +import com.pig4cloud.pigx.admin.api.entity.*; import com.pig4cloud.pigx.admin.api.vo.MenuVO; import com.pig4cloud.pigx.admin.api.vo.UserVO; import com.pig4cloud.pigx.admin.mapper.SysUserMapper; @@ -68,6 +65,7 @@ public class SysUserServiceImpl extends ServiceImpl impl private final SysMenuService sysMenuService; private final SysUserMapper sysUserMapper; private final SysRoleService sysRoleService; + private final SysDeptService sysDeptService; private final SysUserRoleService sysUserRoleService; private final SysDeptRelationService sysDeptRelationService; @@ -78,7 +76,7 @@ public class SysUserServiceImpl extends ServiceImpl impl * @return */ @Override - @Cacheable(value = "user_details", key = "#username", unless="#result == null") + @Cacheable(value = "user_details", key = "#username", unless = "#result == null") public UserInfo findUserInfo(String type, String username) { SysUser condition = new SysUser(); if (EnumLoginType.PWD.getType().equals(type)) { @@ -91,7 +89,7 @@ public class SysUserServiceImpl extends ServiceImpl impl SysUser sysUser = this.selectOne(new EntityWrapper<>(condition)); if (sysUser == null) { return null; - } + } UserInfo userInfo = new UserInfo(); userInfo.setSysUser(sysUser); @@ -224,6 +222,30 @@ public class SysUserServiceImpl extends ServiceImpl impl return Boolean.TRUE; } + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @return R + */ + @Override + public List ancestorUsers(String username) { + SysUser condition = new SysUser(); + condition.setUsername(username); + SysUser sysUser = this.selectOne(new EntityWrapper<>(condition)); + + Integer deptId = sysUser.getDeptId(); + SysDept sysDept = sysDeptService.selectById(deptId); + if (sysDept == null) { + return null; + } + + Integer parentId = sysDept.getParentId(); + SysUser condition2 = new SysUser(); + condition2.setDeptId(parentId); + return this.selectList(new EntityWrapper<>(condition2)); + } + /** * 获取当前用户的子部门信息 * diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/bootstrap.yml b/pigx-upms/pigx-upms-biz/src/main/resources/bootstrap.yml index c39153b4b..1dbe02882 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/bootstrap.yml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/bootstrap.yml @@ -23,4 +23,4 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-visual/pigx-activiti/pom.xml b/pigx-visual/pigx-activiti/pom.xml index 225e4e8db..59f2e2cc0 100644 --- a/pigx-visual/pigx-activiti/pom.xml +++ b/pigx-visual/pigx-activiti/pom.xml @@ -38,6 +38,11 @@ pigx-common-core ${pigx.version} + + com.pig4cloud + pigx-upms-api + ${pigx.version} + mysql mysql-connector-java diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/PigxActivitiApplication.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/PigxActivitiApplication.java index 04a761f79..9bc9c49b5 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/PigxActivitiApplication.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/PigxActivitiApplication.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.act; +import com.pig4cloud.pigx.common.security.feign.EnablePigxFeignClients; import org.activiti.spring.boot.SecurityAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -30,6 +31,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; */ @EnableCircuitBreaker @EnableDiscoveryClient +@EnablePigxFeignClients @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) public class PigxActivitiApplication { diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/LeaveBillController.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/LeaveBillController.java index fd8280941..e223f17eb 100755 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/LeaveBillController.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/LeaveBillController.java @@ -23,8 +23,10 @@ import com.pig4cloud.pigx.act.entity.LeaveBill; import com.pig4cloud.pigx.act.service.ActTaskService; import com.pig4cloud.pigx.act.service.LeaveBillService; import com.pig4cloud.pigx.act.service.ProcessService; +import com.pig4cloud.pigx.common.core.constant.enums.EnumTaskStatus; import com.pig4cloud.pigx.common.core.util.Query; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -78,6 +80,8 @@ public class LeaveBillController { */ @PostMapping public R save(@RequestBody LeaveBill leaveBill) { + leaveBill.setUsername(SecurityUtils.getUsername()); + leaveBill.setState(EnumTaskStatus.UNSUBMIT.getStatus()); return new R<>(leaveBillService.insert(leaveBill)); } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/dto/LeaveBillDto.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/dto/LeaveBillDto.java index ef7b60859..7f4f06852 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/dto/LeaveBillDto.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/dto/LeaveBillDto.java @@ -21,6 +21,7 @@ import com.pig4cloud.pigx.act.entity.LeaveBill; import lombok.Data; import java.util.Date; +import java.util.List; /** * @author lengleng @@ -43,4 +44,11 @@ public class LeaveBillDto extends LeaveBill { * 批准信息 */ private String comment; + + /** + * 连线信息 + */ + private List flagList; + + private String taskFlag; } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java index d38daf967..0f605135c 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java @@ -17,17 +17,48 @@ package com.pig4cloud.pigx.act.listener; +import cn.hutool.core.collection.CollUtil; +import com.pig4cloud.pigx.admin.api.entity.SysUser; +import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; +import com.pig4cloud.pigx.common.core.constant.SecurityConstants; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; +import lombok.extern.slf4j.Slf4j; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import java.util.List; +import java.util.stream.Collectors; + /** * @author lengleng * @date 2018/9/27 - * 请假流程监听器对于 + * 请假流程监听器 */ +@Slf4j public class LeaveProcessTaskListener implements TaskListener { + + /** + * 查询提交人的上级 + * + * @param delegateTask + */ @Override public void notify(DelegateTask delegateTask) { - delegateTask.addCandidateUser("admin"); + RemoteUserService userService = SpringContextHolder.getBean(RemoteUserService.class); + + R> result = userService.ancestorUsers( + SecurityUtils.getUsername(), SecurityConstants.FROM_IN); + + if (CollUtil.isEmpty(result.getData())) { + log.error("用户 {} 不存在上级,任务单由当前用户审批", SecurityUtils.getUsername()); + delegateTask.addCandidateUser(SecurityUtils.getUsername()); + } else { + List userList = result.getData().stream().map(SysUser::getUsername).collect(Collectors.toList()); + log.error("当前任务 {},由 {}处理", delegateTask.getId(), userList); + delegateTask.addCandidateUsers(userList); + } + } } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java index ba252dfb4..3ea9a76f0 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java @@ -26,6 +26,7 @@ import com.pig4cloud.pigx.act.dto.TaskDTO; import com.pig4cloud.pigx.act.entity.LeaveBill; import com.pig4cloud.pigx.act.mapper.LeaveBillMapper; import com.pig4cloud.pigx.act.service.ActTaskService; +import com.pig4cloud.pigx.common.core.constant.enums.EnumTaskStatus; import com.pig4cloud.pigx.common.security.util.SecurityUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -36,6 +37,8 @@ import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.identity.Authentication; +import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; +import org.activiti.engine.impl.pvm.process.ActivityImpl; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Comment; import org.activiti.engine.task.Task; @@ -46,10 +49,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author lengleng @@ -59,6 +59,7 @@ import java.util.Map; @Service @AllArgsConstructor public class ActTaskServiceImpl implements ActTaskService { + private static final String FLAG = "审批"; private final LeaveBillMapper leaveBillMapper; private final TaskService taskService; private final RuntimeService runtimeService; @@ -117,6 +118,8 @@ public class ActTaskServiceImpl implements ActTaskService { //截取字符串,取buniness_key小数点的第2个值 businessKey = businessKey.split("_")[1]; } + + List comeList = findOutFlagListByTaskId(task, pi); //查询请假单对象 LeaveBill leaveBill = leaveBillMapper.selectById(businessKey); @@ -124,6 +127,7 @@ public class ActTaskServiceImpl implements ActTaskService { BeanUtils.copyProperties(leaveBill, leaveBillDto); leaveBillDto.setTaskId(taskId); leaveBillDto.setTime(task.getCreateTime()); + leaveBillDto.setFlagList(comeList); return leaveBillDto; } @@ -152,8 +156,13 @@ public class ActTaskServiceImpl implements ActTaskService { Authentication.setAuthenticatedUserId(SecurityUtils.getUsername()); taskService.addComment(taskId, processInstanceId, message); + Map variables = new HashMap<>(1); + + if (!StrUtil.equals(FLAG, leaveBillDto.getTaskFlag())) { + variables.put("flag", leaveBillDto.getTaskFlag()); + } //使用任务ID,完成当前人的个人任务 - taskService.complete(taskId); + taskService.complete(taskId, variables); //在完成任务之后,判断流程是否结束 ProcessInstance pi = runtimeService.createProcessInstanceQuery() @@ -163,7 +172,9 @@ public class ActTaskServiceImpl implements ActTaskService { if (pi == null) { LeaveBill bill = new LeaveBill(); bill.setLeaveId(id); - bill.setState("2"); + bill.setState(StrUtil.equals(EnumTaskStatus.OVERRULE.getDescription() + , leaveBillDto.getTaskFlag()) ? EnumTaskStatus.OVERRULE.getStatus() + : EnumTaskStatus.COMPLETED.getStatus()); leaveBillMapper.updateById(bill); } return null; @@ -238,4 +249,20 @@ public class ActTaskServiceImpl implements ActTaskService { null, 1.0); } + + private List findOutFlagListByTaskId(Task task, ProcessInstance pi) { + //返回存放连线的名称集合 + List list = new ArrayList<>(); + //查询ProcessDefinitionEntiy对象 + ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService + .getProcessDefinition(task.getProcessDefinitionId()); + + ActivityImpl activityImpl = processDefinitionEntity.findActivity(pi.getActivityId()); + //获取当前活动完成之后连线的名称 + activityImpl.getOutgoingTransitions().forEach(pvm -> { + String name = (String) pvm.getProperty("name"); + list.add(StrUtil.isNotBlank(name) ? name : FLAG); + }); + return list; + } } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ProcessServiceImpl.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ProcessServiceImpl.java index 5be4bfcfb..4902354a8 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ProcessServiceImpl.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ProcessServiceImpl.java @@ -26,6 +26,7 @@ import com.pig4cloud.pigx.act.mapper.LeaveBillMapper; import com.pig4cloud.pigx.act.service.ProcessService; import com.pig4cloud.pigx.common.core.constant.enums.EnumProcessStatus; import com.pig4cloud.pigx.common.core.constant.enums.EnumResourceType; +import com.pig4cloud.pigx.common.core.constant.enums.EnumTaskStatus; import lombok.AllArgsConstructor; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; @@ -157,7 +158,7 @@ public class ProcessServiceImpl implements ProcessService { public Boolean saveStartProcess(Integer leaveId) { //1:获取请假单ID,使用请假单ID,查询请假单的对象LeaveBill LeaveBill leaveBill = leaveBillMapper.selectById(leaveId); - leaveBill.setState("1"); + leaveBill.setState(EnumTaskStatus.CHECK.getStatus()); //2:使用当前对象获取到流程定义的key(对象的名称就是流程定义的key) String key = leaveBill.getClass().getSimpleName(); //3: 格式:LeaveBill_id的形式(使用流程变量) diff --git a/pigx-visual/pigx-activiti/src/main/resources/bootstrap.yml b/pigx-visual/pigx-activiti/src/main/resources/bootstrap.yml index 6b4cf8e18..b4d321d53 100644 --- a/pigx-visual/pigx-activiti/src/main/resources/bootstrap.yml +++ b/pigx-visual/pigx-activiti/src/main/resources/bootstrap.yml @@ -14,9 +14,9 @@ spring: enabled: true service-id: pigx-config datasource: - url: jdbc:mysql://114.116.21.191:3306/ac?characterEncoding=UTF-8&useSSL=false + url: jdbc:mysql://127.0.0.1:3306/ac?characterEncoding=UTF-8&useSSL=false username: root - password: Bjyjht2017!@# + password: 123456 driver-class-name: com.mysql.jdbc.Driver activiti: check-process-definitions: false @@ -27,7 +27,7 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ ## spring security 配置 security: @@ -39,7 +39,7 @@ security: resource: token-info-uri: ${security.auth.server}/check_token auth: - server: http://192.168.0.20:9999/auth/oauth + server: http://localhost:9999/auth/oauth # 加解密根密码 jasypt: diff --git a/pigx-visual/pigx-codegen/src/main/resources/bootstrap.yml b/pigx-visual/pigx-codegen/src/main/resources/bootstrap.yml index c5f74c8bb..824bad919 100644 --- a/pigx-visual/pigx-codegen/src/main/resources/bootstrap.yml +++ b/pigx-visual/pigx-codegen/src/main/resources/bootstrap.yml @@ -20,4 +20,4 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-visual/pigx-daemon/src/main/resources/bootstrap.yml b/pigx-visual/pigx-daemon/src/main/resources/bootstrap.yml index fd1190311..da9accb63 100644 --- a/pigx-visual/pigx-daemon/src/main/resources/bootstrap.yml +++ b/pigx-visual/pigx-daemon/src/main/resources/bootstrap.yml @@ -20,4 +20,4 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-visual/pigx-monitor/src/main/resources/bootstrap.yml b/pigx-visual/pigx-monitor/src/main/resources/bootstrap.yml index b08ecab62..1e29612c9 100644 --- a/pigx-visual/pigx-monitor/src/main/resources/bootstrap.yml +++ b/pigx-visual/pigx-monitor/src/main/resources/bootstrap.yml @@ -20,4 +20,4 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/ diff --git a/pigx-visual/pigx-tx-manager/src/main/resources/bootstrap.yml b/pigx-visual/pigx-tx-manager/src/main/resources/bootstrap.yml index b3c74e263..50f914d85 100644 --- a/pigx-visual/pigx-tx-manager/src/main/resources/bootstrap.yml +++ b/pigx-visual/pigx-tx-manager/src/main/resources/bootstrap.yml @@ -20,5 +20,5 @@ eureka: prefer-ip-address: true client: service-url: - defaultZone: http://pig:pig@192.168.0.20:1025/eureka/ + defaultZone: http://pig:pig@localhost:1025/eureka/