Commit 31c41312 authored by fangxinjiang's avatar fangxinjiang

Merge remote-tracking branch 'origin/MVP1.7.5' into MVP1.7.5

parents f79e37a3 3076dea4
......@@ -114,6 +114,7 @@
<module>yifu-msg</module>
<module>yifu-permission</module>
<module>yifu-ekp</module>
<module>yifu-process</module>
</modules>
<dependencyManagement>
......
......@@ -42,5 +42,6 @@
<module>yifu-common-swagger</module>
<module>yifu-common-ldap</module>
<module>yifu-common-ekp</module>
<module>yifu-common-process</module>
</modules>
</project>
......@@ -108,6 +108,8 @@ public interface CacheConstants {
**/
String EVERYDAY_DISPATCH_CODE = "everyday_dispatch_code";
String EVERYDAY_UNBUY_CODE = "everyday_unbuy_code";
/**
* 区域数据--标签
*/
......@@ -202,4 +204,7 @@ public interface CacheConstants {
public static final String MVP_TOC_PHONE_CODE_PREFIX = "MVP_TOC_PHONE_CODE_";
public static final String WX_JSAPI_TICKET = "WX_JSAPI_TICKET";
// 商险不购买审批流分布式锁key InsuranceUnpurchase
public static final String INSURANCEUNPURCHASE_PROCESS_CACHE = ServiceNameConstants.SERVICE_NAME_MVP + "_" + "ProcessCache:InsuranceUnpurchase";
}
......@@ -636,4 +636,18 @@ public interface CommonConstants {
String USER_DIR = "user.dir";
String DOUBLE_LINE = "//";
public static final int THIRTY_INT = 30;
public static final int TWENTY_SEVEN_INT = 27;
/**
*未删除标志
**/
public static final String NOT_DELETE_FLAG = "0";
/**
*已删除标志
**/
public static final String DELETE_FLAG = "1";
//单条数据检索SQL
public static final String SQL_LIMIT_ONE = " limit 1 ";
}
......@@ -50,4 +50,6 @@ public interface ServiceNameConstants {
* hr b端Client id
**/
String CLIENT_ID_HR_B = "hrCustomer";
String SERVICE_NAME_MVP = "mvp";
}
......@@ -93,6 +93,37 @@ public class Common {
return false;
}
/**
* 集合不为空
*
* @param collection
* @return
*/
public static boolean isNotKong(Collection collection) {
return null != collection && collection.size() > 0;
}
/**
* obj不是null
*
* @param obj
* @return
* @author: fxj
*/
public static boolean isNotKong(Object obj) {
return null != obj;
}
/**
* 集合为空
*
* @param collection
* @return
*/
public static boolean isEmpty(Collection collection) {
return null == collection || collection.size() == 0;
}
// 金额验证
public static boolean isNumber(String str) {
// 判断小数点后2位的数字的正则表达式
......
package com.yifu.cloud.plus.v1.yifu.common.core.util.bean;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import java.util.HashSet;
import java.util.Set;
/**
* @auther wangan
* @date 2019/12/3
* bean复制,忽视空串
*/
public class BeanCopyUtils {
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for (java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null) {
emptyNames.add(pd.getName());
}
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
public static void copyProperties(Object src, Object target) {
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
}
}
......@@ -62,6 +62,18 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-process-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-process</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
......
package com.yifu.cloud.plus.v1.yifu.common.dapr.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @author chenyuxi
* @date 2025/01/09
* @version 1.7.5
*/
@Data
@Component
@PropertySource("classpath:daprConfig.properties")
@ConfigurationProperties(value = "dapr.process", ignoreInvalidFields = false)
public class DaprProcessProperties {
String appUrl;
String appId;
String appPort;
String httpPort;
String grpcPort;
String metricsPort;
}
package com.yifu.cloud.plus.v1.yifu.common.dapr.util;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprProcessProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
/**
* @Author huyc
* @Date 2022-07-18
* @Description
* @Version 1.0
*/
@Log4j2
@EnableConfigurationProperties(DaprProcessProperties.class)
public class ProcessDaprUtils {
@Autowired
private DaprProcessProperties daprProcessProperties;
}
......@@ -7,6 +7,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprSocialProperties;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonCardVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.HaveSalaryNoSocialSearchVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.HaveSalaryNoSocialVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TPaymentVo;
......@@ -157,4 +158,15 @@ public class SocialDaprUtils {
public R<Boolean> updateIncomeSettleStatus(List<EkpInsuranceViewVo> infoVo) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tincome/inner/updateIncomeSettleStatus", JSON.toJSONString(infoVo), Boolean.class, SecurityConstants.FROM_IN);
}
/**
* @Author huyc
* @Description 更新结算信息
* @Date 17:38 2022/12/26
* @Param
* @return
**/
public R<Boolean> selectExitSocialInjury(TInsuranceUnpurchasePersonCardVo cardVo) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tsocialfundinfo/inner/selectExitSocialInjury", JSON.toJSONString(cardVo), Boolean.class, SecurityConstants.FROM_IN);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>yifu-common-process</artifactId>
<packaging>jar</packaging>
<description>审批流程-工具类</description>
<dependencies>
<!-- core 工具类 -->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-core</artifactId>
</dependency>
<!--UPMS API-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-upms-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<!--swagger 注解-->
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<!--mybatis 依赖-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-mybatis</artifactId>
</dependency>
<!-- 编译表达式 -->
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>aviator</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>
package com.yifu.cloud.plus.v1.yifu.process.constant;
/**
* @auther wangan
* @date 2020/9/17
*/
public class ProcessConstants {
//审批中心各个节点类型
public static final String PROCESS_NODE_TYPE_CHOICE = "choice";
public static final String PROCESS_NODE_BEGIN = "begin";
public static final String PROCESS_NODE_END = "end";
public static final String PROCESS_NODE_EMBED = "embed";
public static final String PROCESS_NODE_SERVICE = "service";
// 【含风险项目商险不购买申请流程】条件判断审批节点名称
public static final String PROCESS_NODE_INSURANCEUNPURCHASE_REASON_TYPE = "是否为已购买社保";
public static final String PROCESS_NODE_INSURANCEUNPURCHASE_DEPT_PROPERTY = "是否属于子分公司";
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 流程处理权限表(允许多个,多个代表有主办和经办)
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_node_primission")
@Schema(description = "流程处理权限表(允许多个,多个代表有主办和经办)")
public class TNodePrimission extends Model<TNodePrimission> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@Length(max = 255, message = "指定用户处理节点不能超过255个字符")
@Schema(description = "指定用户处理节点")
private String user;
@Length(max = 255, message = "指定权限处理节点不能超过255个字符")
@Schema(description = "指定权限处理节点")
private String role;
@Length(max = 255, message = "指定职位处理节点不能超过255个字符")
@Schema(description = "指定职位处理节点")
private String post;
@Length(max = 255, message = "指定组织处理节点不能超过255个字符")
@Schema(description = "指定组织处理节点")
private String organization;
@NotBlank(message = "与流程申请人关系(0发起人部门主管/1同区域最高级/2所在单位最高级)不能为空")
@Length(max = 1, message = "与流程申请人关系(0发起人部门主管/1同区域最高级/2所在单位最高级)不能超过1个字符")
@Schema(description = "与流程申请人关系(0发起人部门主管/1同区域最高级/2所在单位最高级)")
private String realationCreateUser;
@NotBlank(message = "标识(系统自动生成MD5串)不能为空")
@Length(max = 255, message = "标识(系统自动生成MD5串)不能超过255个字符")
@Schema(description = "标识(系统自动生成MD5串)")
private String logoTitle;
@NotBlank(message = "节点ID不能为空")
@Length(max = 255, message = "节点ID不能超过255个字符")
@Schema(description = "节点ID")
private String nodeId;
@NotBlank(message = "办理类型(0主办/1经办;如果为经办,则必须有主办权限存在)不能为空")
@Length(max = 1, message = "办理类型(0主办/1经办;如果为经办,则必须有主办权限存在)不能超过1个字符")
@Schema(description = "办理类型(0主办/1经办;如果为经办,则必须有主办权限存在)")
private String dealType;
@NotBlank(message = "流程ID不能为空")
@Length(max = 255, message = "流程ID不能超过255个字符")
@Schema(description = "流程ID")
private String processId;
@NotBlank(message = "节点编码不能为空")
@Length(max = 255, message = "节点编码不能超过255个字符")
@Schema(description = "节点编码-关联节点")
private String nodeLogoTitle;
@Length(max = 1, message = "类型:不能超过1个字符")
@Schema(description = "类型:0指定职位;1与申请人关系;2指定权限;3指定用户;4指定组织;5指定角色(crm);6指定事业部配置表")
private Integer type;
@Length(max = 20, message = "指定角色id不能超过20个字符")
@Schema(description = "指定角色id")
private String approvalRole;
@Length(max = 10, message = "指定事业部配置表负责人标识不能超过10个字符")
@Schema(description = "指定事业部配置表负责人标识")
private String divisionIdentification;
@Length(max = 1, message = "是否允许直接通过不能超过1个字符")
@Schema(description = "是否允许直接通过(0:不允许,1允许)")
private String isPass;
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 流程审阅权限表(抄送/仅有查看权限)
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_node_reader_promission")
@Schema(description = "流程审阅权限表(抄送/仅有查看权限)")
public class TNodeReaderPromission extends Model<TNodeReaderPromission> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@Length(max = 255, message = "指定用户处理节点不能超过255个字符")
@Schema(description = "指定用户处理节点")
private String user;
@Length(max = 255, message = "指定权限处理节点不能超过255个字符")
@Schema(description = "指定权限处理节点")
private String role;
@Length(max = 255, message = "指定职位处理节点不能超过255个字符")
@Schema(description = "指定职位处理节点")
private String post;
@Length(max = 255, message = "指定组织处理节点不能超过255个字符")
@Schema(description = "指定组织处理节点")
private String organization;
@NotBlank(message = "与流程申请人关系(0上级/1同区域最高级/2同部门最高级)不能为空")
@Length(max = 1, message = "与流程申请人关系(0上级/1同区域最高级/2同部门最高级)不能超过1个字符")
@Schema(description = "与流程申请人关系(0上级/1同区域最高级/2同部门最高级)")
private String realationCreateUser;
@NotBlank(message = "标识(系统自动生成MD5串)不能为空")
@Length(max = 255, message = "标识(系统自动生成MD5串)不能超过255个字符")
@Schema(description = "标识(系统自动生成MD5串)")
private String logoTitle;
@NotBlank(message = "节点ID不能为空")
@Length(max = 255, message = "节点ID不能超过255个字符")
@Schema(description = "节点ID")
private String nodeId;
@NotBlank(message = "流程ID不能为空")
@Length(max = 255, message = "流程ID不能超过255个字符")
@Schema(description = "流程ID")
private String processId;
@NotBlank(message = "节点编码不能为空")
@Length(max = 255, message = "节点编码不能超过255个字符")
@Schema(description = "节点编码")
private String nodeLogoTitle;
@Length(max = 1, message = "类型:不能超过1个字符")
@Schema(description = "类型:0指定职位;1与申请人关系;2指定权限;3指定用户;4指定组织;5指定角色(crm)")
private Integer type;
@Length(max = 20, message = "指定角色id不能超过20个字符")
@Schema(description = "指定角色id")
private String approvalRole;
@Length(max = 20, message = "指定使用的代码自定义判断的标识字段不能超过20个字符")
@Schema(description = "指定使用的代码自定义判断的标识字段")
private String customizeField;
@Schema(description = "是否代码自定义")
private String isCustomize;
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.util.List;
/**
* 流程路由表(节点与节点之间的路由关系)
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_node_route")
@Schema(description = "流程路由表(节点与节点之间的路由关系)")
public class TNodeRoute extends Model<TNodeRoute> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "流程ID不能为空")
@Length(max = 255, message = "流程ID不能超过255个字符")
@Schema(description = "流程ID")
private String processId;
@Length(max = 255, message = "前置节点不能超过255个字符")
@Schema(description = "前置节点")
private String prewNode;
@NotBlank(message = "下个节点不能为空")
@Length(max = 255, message = "下个节点不能超过255个字符")
@Schema(description = "下个节点")
private String nextNode;
@Length(max = 1, message = "连线起点位置不能超过1个字符")
@Schema(description = "连线起点位置")
private String preNodeAnchor;
@Length(max = 1, message = "连线终点位置不能超过1个字符")
@Schema(description = "连线终点位置")
private String nextNodeAnchor;
@Length(max = 100, message = "元素的图形:不能超过100个字符")
@Schema(description = "元素的图形")
private String shape;
@Length(max = 255, message = "标识(系统自动生成MD5串)不能超过255个字符")
@Schema(description = "标识(系统自动生成MD5串)")
private String logoTitle;
@NotBlank(message = "创建人不能为空")
@Length(max = 255, message = "创建人不能超过255个字符")
@Schema(description = "创建人")
private String createUser;
@Schema(description = "创建时间")
private LocalDateTime createDate;
@Length(max = 255, message = "更新人不能超过255个字符")
@Schema(description = "更新人")
private String updateUser;
@Schema(description = "更新时间")
private LocalDateTime updateDate;
@NotBlank(message = "路由名称(默认为“未命名”,添加时需要保存格式为:前置节点名称(to:下一节点名称))不能为空")
@Length(max = 255, message = "路由名称(默认为“未命名”,添加时需要保存格式为:前置节点名称(to:下一节点名称))不能超过255个字符")
@Schema(description = "路由名称(默认为“未命名”,添加时需要保存格式为:前置节点名称(to:下一节点名称))")
private String name;
@Length(max = 255, message = "描述不能超过255个字符")
@Schema(description = "描述")
private String description;
@Schema(description = "顺序号")
private Integer sequenceNo;
@Length(max = 255, message = "默认意见不能超过255个字符")
@Schema(description = "默认意见")
private String opinion;
@NotBlank(message = "意见是否必填(0是/1否)不能为空")
@Length(max = 1, message = "意见是否必填(0是/1否)不能超过1个字符")
@Schema(description = "意见是否必填(0是/1否)")
private String opinionMustFlag;
@NotBlank(message = "路由类型(1默认路由/2回退路由/3转交(转交不触发活动事件))不能为空")
@Length(max = 1, message = "路由类型(1默认路由/2回退路由/3转交(转交不触发活动事件))不能超过1个字符")
@Schema(description = "路由类型(1默认路由/2回退路由/3转交(转交不触发活动事件))")
private String routeType;
@NotBlank(message = "是否优先(0是/1否:仅在分支/并列下使用,单节点路由不存在优先级)不能为空")
@Length(max = 1, message = "是否优先(0是/1否:仅在分支/并列下使用,单节点路由不存在优先级)不能超过1个字符")
@Schema(description = "是否优先(0是/1否:仅在分支/并列下使用,单节点路由不存在优先级)")
private String priorityFlag;
@NotBlank(message = "活动超时时自动流转(0是/1否)不能为空")
@Length(max = 1, message = "活动超时时自动流转(0是/1否)不能超过1个字符")
@Schema(description = "活动超时时自动流转(0是/1否)")
private String timeoutRoam;
@NotBlank(message = "与上一活动处理人相同时自动流转(0是/1否)不能为空")
@Length(max = 1, message = "与上一活动处理人相同时自动流转(0是/1否)不能超过1个字符")
@Schema(description = "与上一活动处理人相同时自动流转(0是/1否)")
private String sameForPrew;
@TableField(exist = false)
List<TNodeRouteCondition> nodeRouteConditionList;
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 流程路由条件
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_node_route_condition")
@Schema(description = "流程路由条件")
public class TNodeRouteCondition extends Model<TNodeRouteCondition> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "条件字段不能为空")
@Length(max = 255, message = "条件字段不能超过255个字符")
@Schema(description = "条件字段")
private String field;
@NotBlank(message = "判断条件:大于/等于/大于等于/小于/小于等于/不等于/包含/不包含不能为空")
@Length(max = 255, message = "判断条件:大于/等于/大于等于/小于/小于等于/不等于/包含/不包含不能超过255个字符")
@Schema(description = "判断条件:大于/等于/大于等于/小于/小于等于/不等于/包含/不包含")
private String conditions;
@NotBlank(message = "参与判定的值(可能存在类型转换)不能为空")
@Length(max = 255, message = "参与判定的值(可能存在类型转换)不能超过255个字符")
@Schema(description = "参与判定的值(可能存在类型转换)")
private String conditionValue;
@NotBlank(message = "与其他条件之间的关系(0没有关系或单独条件/1或的关系/2并且关系)不能为空")
@Length(max = 1, message = "与其他条件之间的关系(0没有关系或单独条件/1或的关系/2并且关系)不能超过1个字符")
@Schema(description = "与其他条件之间的关系(0没有关系或单独条件/1或的关系/2并且关系)")
private String realation;
@NotBlank(message = "流程路由ID不能为空")
@Length(max = 255, message = "流程路由ID不能超过255个字符")
@Schema(description = "流程路由ID")
private String nodeRouteId;
@NotBlank(message = "类型:1.正常条件 2.正则表达式'不能为空")
@Length(max = 255, message = "类型:1.正常条件 2.正则表达式255个字符")
@Schema(description = "类型:1.正常条件 2.正则表达式")
private String type;
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 流程调用配置(子流程调用)
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_node_transfer_config")
@Schema(description = "流程调用配置(子流程调用)")
public class TNodeTransferConfig extends Model<TNodeTransferConfig> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "流程节点ID不能为空")
@Length(max = 255, message = "流程节点ID不能超过255个字符")
@Schema(description = "流程节点ID")
private String nodeId;
@NotBlank(message = "流程ID不能为空")
@Length(max = 255, message = "流程ID不能超过255个字符")
@Schema(description = "流程ID")
private String processId;
@NotBlank(message = "调用方式(0同步/1异步)不能为空")
@Length(max = 1, message = "调用方式(0同步/1异步)不能超过1个字符")
@Schema(description = "调用方式(0同步/1异步)")
private String transferType;
@NotBlank(message = "是否拷贝数据(0是/1否)不能为空")
@Length(max = 1, message = "是否拷贝数据(0是/1否)不能超过1个字符")
@Schema(description = "是否拷贝数据(0是/1否)")
private String copyData;
@NotBlank(message = "是否拷贝附件(0是/1否)不能为空")
@Length(max = 1, message = "是否拷贝附件(0是/1否)不能超过1个字符")
@Schema(description = "是否拷贝附件(0是/1否)")
private String copyAtta;
@NotBlank(message = "启动者(0当前流程的启动者/1上一个活动的处理人/2指定一个启动者)不能为空")
@Length(max = 1, message = "启动者(0当前流程的启动者/1上一个活动的处理人/2指定一个启动者)不能超过1个字符")
@Schema(description = "启动者(0当前流程的启动者/1上一个活动的处理人/2指定一个启动者)")
private String starterType;
@Length(max = 255, message = "启动者(STARTER_TYPE 为2时启用)不能超过255个字符")
@Schema(description = "启动者(STARTER_TYPE 为2时启用)")
private String starter;
}
package com.yifu.cloud.plus.v1.yifu.process.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
/**
* 流程节点表
*
* @author hgw
* @date 2020-07-16 15:44:02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_process_node")
@Schema(description = "流程节点表")
public class TProcessNode extends Model<TProcessNode> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
/**
* 类型:{
* begin:开始
* end:结束
* cancel:取消
* choice:选择
* split:拆分
* parallel:并行
* merge:合并
* embed:流程调用
* delay:定时
* invoke:服务调用
* service:服务
* agent:脚本
* }
*/
@NotBlank(message = "类型:不能为空")
@Length(max = 20, message = "类型:不能超过20个字符")
@Schema(description = "类型")
private String type;
@NotBlank(message = "标识(自动生成MD5串)不能为空")
@Length(max = 255, message = "标识(自动生成MD5串)不能超过255个字符")
@Schema(description = "标识(自动生成MD5串)")
private String logoTitle;
@NotBlank(message = "节点名称不能为空")
@Length(max = 255, message = "节点名称不能超过255个字符")
@Schema(description = "节点名称")
private String name;
@Length(max = 255, message = "节点描述不能超过255个字符")
@Schema(description = "节点描述")
private String description;
@Length(max = 255, message = "表单ID不能超过255个字符")
@Schema(description = "表单ID", name = "form")
private String form;
@NotBlank(message = "是否允许调度(0是/1否)不能为空")
@Length(max = 1, message = "是否允许调度(0是/1否)不能超过1个字符")
@Schema(description = "是否允许调度(0是/1否)")
private String allowDispatch;
@NotBlank(message = "是否允许调度到此活动不能为空")
@Length(max = 1, message = "是否允许调度到此活动不能超过1个字符")
@Schema(description = "是否允许调度到此活动")
private String allowThis;
@NotBlank(message = "流程ID不能为空")
@Length(max = 255, message = "流程ID不能超过255个字符")
@Schema(description = "流程ID")
private String processId;
@NotBlank(message = "经办人是否允许办理完成后进入下一步(0允许/1不允许)不能为空")
@Length(max = 1, message = "经办人是否允许办理完成后进入下一步(0允许/1不允许)不能超过1个字符")
@Schema(description = "经办人是否允许办理完成后进入下一步(0允许/1不允许)")
private String handleAllowNext;
@NotBlank(message = "会签方式(0允许会签/1强制会签/2禁止会签)不能为空")
@Length(max = 1, message = "会签方式(0允许会签/1强制会签/2禁止会签)不能超过1个字符")
@Schema(description = "会签方式(0允许会签/1强制会签/2禁止会签)")
private String countersign;
@NotBlank(message = "回退方式(0不允许/1回退上一步/2回退至起点)不能为空")
@Length(max = 1, message = "回退方式(0不允许/1回退上一步/2回退至起点)不能超过1个字符")
@Schema(description = "回退方式(0不允许/1回退上一步/2回退至起点)")
private String backType;
@Length(max = 100, message = "元素的图形:不能超过100个字符")
@Schema(description = "元素的图形")
private String shape;
@Length(max = 100, message = "节点大小:不能超过100个字符")
@Schema(description = "节点大小")
private String size;
@Length(max = 20, message = "X坐标:不能超过20个字符")
@Schema(description = "X坐标")
private String coordinatex;
@Length(max = 20, message = "Y坐标:不能超过20个字符")
@Schema(description = "Y坐标")
private String coordinatey;
@Length(max = 50, message = "颜色:不能超过50个字符")
@Schema(description = "颜色")
private String color;
@TableField(exist = false)
private List<TNodePrimission> nodePrimissionList = new ArrayList<>();
@TableField(exist = false)
private List<TNodeReaderPromission> nodeReaderPromissionList = new ArrayList<>();
@TableField(exist = false)
private List<TNodeTransferConfig> nodeTransferConfigs;
@Schema(description = "允许加签")
private String allowAddSign;
/**
* 节点抄送权限列表(流程预览使用,将当前节点的抄送权限绑定在下一个节点上,因为当前的代码逻辑不返回抄送节点,有冲突)
* 【之后优化@TableField注解,不能在实体类里面直接用@TableField,要建一个包装类】
*/
@TableField(exist = false)
private List<TNodeReaderPromission> preNodeReaderPromissionList = new ArrayList<>();
}
package com.yifu.cloud.plus.v1.yifu.process.util;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.process.entity.TNodePrimission;
import java.util.ArrayList;
import java.util.List;
/**
* @author chenyuxi
* @date 2020/9/22
* 通用流程工具类
*/
public class CommonProcessUserUtil {
private CommonProcessUserUtil() {
}
public static final String FEGIN_USER_FAIL = "调用用户服务失败";
public static final String FEGIN_USER_RETURN_FAIL = "调用用户服务回失败";
/**
* 获取crm部门审核人
* @param nodePrimission
* @param departId
* @return List<SysUser>
**/
public static List<SysUser> getDepartAuditUser(TNodePrimission nodePrimission, String departId) {
SysUser remoteSysUser = null;
List<SysUser> remoteSysUserList = new ArrayList<>();
if (CommonConstants.THREE_INT == nodePrimission.getType().intValue()) {
//3.指定用户
if (Common.isEmpty(nodePrimission.getUser())) {
throw new CheckedException("未查询当前流程权限对应的用户");
}
// 查找当前用户
// todo 通过用户id查询用户角色
// remoteSysUser = RemoteRequestUtil.getSysUser(remoteUserService, Integer.parseInt(nodePrimission.getUser()));
remoteSysUserList.add(remoteSysUser);
} else if (CommonConstants.TWO_INT == nodePrimission.getType().intValue()) {
//2.指定角色
if (Common.isEmpty(nodePrimission.getRole())) {
throw new CheckedException("未查询当前流程对应的组织权限");
}
//如果下个节点是角色这要取下个角色是否存在
// remoteSysUser = RemoteRequestUtil.getUserManagerByRoleAndDepartId(remoteUserService, departId, nodePrimission.getRole());
remoteSysUserList.add(remoteSysUser);
} else if (CommonConstants.FIVE_INT == nodePrimission.getType().intValue()){
// 5.指定角色(crm)
if (Common.isEmpty(nodePrimission.getApprovalRole())) {
throw new CheckedException("未查询当前节点配置的审核角色");
}
// remoteSysUserList = RemoteRequestUtil.getUserByRoleIdForCrm(remoteUserService, departId, nodePrimission.getApprovalRole());
}
return remoteSysUserList;
}
}
package com.yifu.cloud.plus.v1.yifu.process.util;
import com.alibaba.fastjson.JSON;
import com.googlecode.aviator.AviatorEvaluator;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
/**
* @auther wangan
* @date 2020/9/2
* goole表达式
*/
@Slf4j
public class ExpressionUtil {
private ExpressionUtil() {
}
/**
* @param expression
* @param obj
* @Author: wangan
* @Date: 2020/9/2
* @Description: 根据表达式判断数据大小
* @return: boolean
**/
public static boolean isMatchExpression(String expression, Object obj) {
Map<String, Object> env = new HashMap<>();
if (obj instanceof BigDecimal) {
env.put("x", Double.parseDouble(obj.toString()));
} else {
env.put("x", obj.toString());
}
try {
return (Boolean) AviatorEvaluator.execute(expression, env);
} catch (Exception e) {
log.error("表达式数据{},表达式{}",expression, JSON.toJSONString(env));
log.error("执行异常",e);
throw new CheckedException("表达式执行出错");
}
}
/**
* @param expression
* @param obj1
* @param obj2
* @Author: wangan
* @Date: 2020/9/2
* @Description: 根据表达式判断数据大小
* @return: boolean
**/
public static boolean isMatchExpression(String expression, Object obj1,Object obj2) {
Map<String, Object> env = new HashMap<>();
if (obj1 instanceof BigDecimal) {
env.put("x", Double.parseDouble(obj1.toString()));
} else {
env.put("x", obj1.toString());
}
if (obj2 instanceof BigDecimal) {
env.put("y", Double.parseDouble(obj2.toString()));
} else {
env.put("y", obj2.toString());
}
try {
return (Boolean) AviatorEvaluator.execute(expression, env);
} catch (Exception e) {
log.error("表达式数据{},表达式{}",expression, JSON.toJSONString(env));
log.error("执行异常",e);
throw new CheckedException("表达式执行出错");
}
}
}
package com.yifu.cloud.plus.v1.yifu.process.vo;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* @Description: 流程需要删除的idsVo
* @Author: hgw
* @Date: 2020-7-27 11:04:13
* @return:
**/
@Getter
@Setter
public class DeleteProcessIdsVo implements Serializable {
private static final long serialVersionUID = 1L;
// 节点ids
private String[] nodeIds;
// 子流程ids
private String[] nodeTransferConfigIds;
// 线ids
private String[] roteIds;
// 线权限ids
private String[] roteConditionIds;
// 权限ids
private String[] primissionIds;
// 抄送ids
private String[] readPrimissionIds;
}
package com.yifu.cloud.plus.v1.yifu.process.vo;
import com.yifu.cloud.plus.v1.yifu.process.entity.TNodeRoute;
import com.yifu.cloud.plus.v1.yifu.process.entity.TProcessNode;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
* @Description: 流程Vo
* @Author: hgw
* @Date: 2019/10/23 15:40
* @return:
**/
@Getter
@Setter
public class ProcessVo implements Serializable {
private static final long serialVersionUID = 1L;
// 主流程id
private String processId;
private String name;
// 节点list
private List<TProcessNode> processNodeList;
// 流程路由list
private List<TNodeRoute> nodeRouteList;
// 删除的ids
private DeleteProcessIdsVo deleteIdsVo;
// 标志是否是流程预览 0是 1否
private String isPreview;
}
package com.yifu.cloud.plus.v1.yifu.process.vo;
import com.yifu.cloud.plus.v1.yifu.process.entity.TNodePrimission;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @program: yifu_cloud
* @description: 流程处理权限vo类
* @author: wangdayu
* @create: 2023-10-23 17:28
* @since:
*/
@Data
public class TNodePrimissionVo extends TNodePrimission implements Serializable {
@Schema(description = "审核人姓名")
private String userName;
}
package com.yifu.cloud.plus.v1.yifu.process.vo;
import com.yifu.cloud.plus.v1.yifu.process.entity.TNodeReaderPromission;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @program: yifu_cloud
* @description: 抄送权限vo类
* @author: wangdayu
* @create: 2023-10-23 17:30
* @since:
*/
@Data
public class TNodeReaderPromissionVo extends TNodeReaderPromission implements Serializable {
@Schema(description = "审核人姓名")
private String userName;
}
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Data
@TableName("t_approval_record")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "审批记录表")
public class TApprovalRecord extends BaseEntity {
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "流程id不能为空")
@Length(max = 32, message = "流程id不能超过32个字符")
@Schema(description = "流程id")
private String flowId;
@NotBlank(message = "实体id不能为空")
@Length(max = 32, message = "实体id不能超过32个字符")
@Schema(description = "实体id")
private String domainId;
@NotBlank(message = "节点id不能为空")
@Length(max = 32, message = "节点id不能超过32个字符")
@Schema(description = "节点id")
private String nodeId;
@NotBlank(message = "审核人id不能为空")
@Length(max = 32, message = "审核人id不能超过32个字符")
@Schema(description = "审核人id")
private String approvalMan;
@NotBlank(message = "审核人姓名不能为空")
@Length(max = 50, message = "审核人姓名不能超过50个字符")
@Schema(description = "审核人姓名")
private String approvalManName;
@Schema(description = "审核时间")
private LocalDateTime approvalTime;
@Length(max = 1, message = "审核结果0:通过1:不通过 2 待审核不能超过1个字符")
@Schema(description = "审核结果0:通过1:不通过 2 待审核 3提交")
private String approvalResult;
@Length(max = 500, message = "审核意见不能超过500个字符")
@Schema(description = "审核意见")
private String approvalOpinion;
@Length(max = 1, message = "删除表示 0未删除 1删除不能超过1个字符")
@Schema(description = "删除表示 0未删除 1删除")
@TableLogic
private String deleteFlag;
@Length(max = 1, message = "之前审核记录标识不能超过1个字符")
@Schema(description = "之前审核记录标识 0之前记录 1当前审核记录。用于当前审核流程过滤判断")
private String preFlag;
@Length(max = 32, message = "提交人id不能超过32个字符")
@Schema(description = "提交人id")
private String submitMan;
@Length(max = 32, message = "提交人姓名不能超过32个字符")
@Schema(description = "提交人姓名")
private String submitManName;
@Length(max = 500, message = "申请原因不能超过500个字符")
@Schema(description = "申请原因")
private String reason;
@Length(max = 2, message = "审核类型 0不购买商险审核不能超过2个字符")
@Schema(description = "审核类型 0不购买商险审核")
private String auditType;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Length(max = 50, message = "节点名称不能超过50个字符")
@Schema(description = "节点名称")
private String nodeName;
@Length(max = 300, message = "实体名称不能超过300个字符")
@Schema(description = "实体名称")
private String entityName;
@Schema(description = "提交时间")
private LocalDateTime submitCreateTime;
@Length(max = 1, message = "退回状态 0 未退回 1已退回不能超过1个字符")
@Schema(description = "退回状态 0 未退回 1已退回")
private String backFlag;
@Length(max = 50, message = "退回节点名称不能超过50个字符")
@Schema(description = "退回节点名称")
private String backNodeName;
@Length(max = 32, message = "退回节点Id不能超过32个字符")
@Schema(description = "退回节点Id")
private String backNodeId;
@Length(max = 32, message = "加签节点的id不能超过32个字符")
@Schema(description = "加签节点的id")
private String addSignNodeId;
}
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 审批抄送记录信息表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Data
@TableName("t_audit_copy_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "审批抄送记录信息表")
public class TAuditCopyInfo extends BaseEntity {
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "抄送人id不能为空")
@Length(max = 32, message = "抄送人id不能超过32个字符")
@Schema(description = "抄送人id")
private String auditUserId;
@NotBlank(message = "抄送人姓名不能为空")
@Length(max = 32, message = "抄送人姓名不能超过32个字符")
@Schema(description = "抄送人姓名")
private String auditUser;
@Length(max = 32, message = "实体id不能超过32个字符")
@Schema(description = "实体id")
private String domainId;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Length(max = 32, message = "流程id不能超过32个字符")
@Schema(description = "流程id")
private String flowId;
@Length(max = 32, message = "节点id不能超过32个字符")
@Schema(description = "节点id")
private String nodeId;
@Length(max = 1, message = "删除表示 0未删除 1删除不能超过1个字符")
@Schema(description = "删除表示 0未删除 1删除")
@TableLogic
private String deleteFlag;
@Length(max = 50, message = "节点名称不能超过50个字符")
@Schema(description = "节点名称")
private String nodeName;
@Length(max = 2, message = "审核类型 0不购买商险审核不能超过2个字符")
@Schema(description = "审核类型 0不购买商险审核")
private String auditType;
@Length(max = 1, message = "之前审核记录标识 不能超过1个字符")
@Schema(description = "之前审核记录标识 0之前记录 1当前审核记录。用于当前审核流程过滤判断")
private String preFlag;
@Length(max = 32, message = "提交人id不能超过32个字符")
@Schema(description = "提交人id")
private String submitMan;
@Length(max = 32, message = "提交人姓名不能超过32个字符")
@Schema(description = "提交人姓名")
private String submitManName;
@Schema(description = "提交时间")
private LocalDateTime submitCreateTime;
}
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 审批主流程记录表节点表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Data
@TableName("t_audit_node_proocess")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "审批主流程记录表节点表")
public class TAuditNodeProocess extends BaseEntity {
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
@NotBlank(message = "流程id不能为空")
@Length(max = 32, message = "流程id不能超过32个字符")
@Schema(description = "流程id")
private String processId;
@NotBlank(message = "节点id不能为空")
@Length(max = 32, message = "节点id不能超过32个字符")
@Schema(description = "节点id")
private String nodeId;
@NotBlank(message = "节点类型不能为空")
@Length(max = 32, message = "节点类型不能超过32个字符")
@Schema(description = "节点类型")
private String nodeType;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Length(max = 32, message = "实体id不能超过32个字符")
@Schema(description = "实体id")
private String domainId;
@NotBlank(message = "0主流程,1子流程不能为空")
@Length(max = 1, message = "0主流程,1子流程不能超过1个字符")
@Schema(description = "0主流程,1子流程")
private String mainType;
@Length(max = 255, message = "节点标识不能超过255个字符")
@Schema(description = "节点标识")
private String logoTitle;
@Length(max = 32, message = "节点名称不能超过32个字符")
@Schema(description = "节点名称")
private String nodeName;
@Length(max = 32, message = "流程名称不能超过32个字符")
@Schema(description = "流程名称")
private String processName;
@Length(max = 32, message = "父流程id不能超过32个字符")
@Schema(description = "父流程id")
private String parentProcessId;
@Length(max = 1, message = "删除表示 0未删除 1删除不能超过1个字符")
@Schema(description = "删除表示 0未删除 1删除")
@TableLogic
private String deleteFlag;
@Length(max = 2, message = "审核类型 0客户新增 1.客户信息变更 2合同审核流程 3合同办理 4商机审核 5报价单 6团队共享不能超过2个字符")
@Schema(description = "审核类型 0客户新增 1.客户信息变更 2合同审核流程 3合同办理 4商机审核 5报价单 6团队共享")
private String type;
@Length(max = 32, message = "加签节点的父节点id(不是加签节点的默认设置为0)不能超过32个字符")
@Schema(description = "加签节点的父节点id(不是加签节点的默认设置为0)")
private String addSignParentNodeId;
@Length(max = 32, message = "加签节点的审核部门id(不是加签节点的默认设置为0)不能超过32个字符")
@Schema(description = "加签节点的审核部门id(不是加签节点的默认设置为0)")
private String addSignDepartmentId;
@Length(max = 32, message = "实体名称不能超过32个字符")
@Schema(description = "实体名称")
private String domainName;
@Length(max = 255, message = "加签人id不能超过255个字符")
@Schema(description = "加签人id")
private String addSignApprovalMan;
@Length(max = 255, message = "加签人名字不能超过255个字符")
@Schema(description = "加签人名字")
private String addSignApprovalManName;
}
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonAddVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -58,6 +56,7 @@ public class TInsuranceUnpurchaseApply extends BaseEntity {
private String companyFlag;
@Schema(description = "是否删除 0未删除/1删除")
@TableLogic
private String deleteFlag;
@Schema(description = "申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过")
......@@ -81,7 +80,28 @@ public class TInsuranceUnpurchaseApply extends BaseEntity {
@Schema(description ="当前审核人ID")
private String auditUserId;
@Schema(description ="当前审核人ID")
private String unbuyNum;
@Schema(description ="明细数据集")
@TableField(exist = false)
private List<TInsuranceUnpurchasePerson> personList;
private List<TInsuranceUnpurchasePersonAddVo> personList;
/**
* 附件Id
*/
@TableField(exist = false)
private List<String> attaIdList;
/**
* 暂存,提交,编辑区分
*/
@TableField(exist = false)
private String saveFlag;
// /**
// * 印章附件
// */
// @TableField(exist = false)
// private List<TAttaInfo> attaInfoList;
}
......@@ -80,5 +80,4 @@ public class TInsuranceUnpurchasePerson extends BaseEntity {
@Schema(description ="服务项是否勾选商险 0 是 1 否")
private String insuranceFlag;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
*/
@Data
public class TApprovalRecordSearchVo extends TApprovalRecord {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 含风险项目不购买申请表
......@@ -19,113 +17,76 @@ import java.io.Serializable;
* @date 2025-01-10 11:24:38
*/
@Data
public class TInsuranceUnpurchaseApplyVo extends RowIndex implements Serializable {
public class TInsuranceUnpurchaseApplyVo implements Serializable {
/**
* id
* 申请编号
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 36, message = "id 不能超过36 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 36)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
@ExcelAttribute(name = "申请编号")
@Schema(description = "申请编号")
@ExcelProperty("申请编号")
private String applyNo;
/**
* 项目ID
* 项目名称
*/
@Length(max = 32, message = "项目ID 不能超过32 个字符")
@ExcelAttribute(name = "项目ID", maxLength = 32)
@Schema(description = "项目ID")
@ExcelProperty("项目ID")
private String deptId;
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
/**
* 项目编码
*/
@Length(max = 30, message = "项目编码 不能超过30 个字符")
@ExcelAttribute(name = "项目编码", maxLength = 30)
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 项目名称
*/
@Length(max = 50, message = "项目名称 不能超过50 个字符")
@ExcelAttribute(name = "项目名称", maxLength = 50)
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
/**
* 申请人所在部门
* 创建者-姓名
*/
@Length(max = 36, message = "申请人所在部门 不能超过36 个字符")
@ExcelAttribute(name = "申请人所在部门", maxLength = 36)
@Schema(description = "申请人所在部门")
@ExcelProperty("申请人所在部门")
private String createUserDeptId;
@ExcelAttribute(name = "申请人")
@Schema(description = "申请人")
@ExcelProperty("申请人")
private String createName;
/**
* 申请人所在部门名称
*/
@Length(max = 50, message = "申请人所在部门名称 不能超过50 个字符")
@ExcelAttribute(name = "申请人所在部门名称", maxLength = 50)
@Schema(description = "申请人所在部门名称")
@ExcelProperty("申请人所在部门名称")
@ExcelAttribute(name = "所属部门")
@Schema(description = "所属部门")
@ExcelProperty("所属部门")
private String createUserDeptName;
/**
* 不购买原因 1 已购买社保 2 人员已离职
*/
@Length(max = 1, message = "不购买原因 1 已购买社保 2 人员已离职 不能超过1 个字符")
@ExcelAttribute(name = "不购买原因 1 已购买社保 2 人员已离职", maxLength = 1)
@Schema(description = "不购买原因 1 已购买社保 2 人员已离职")
@ExcelProperty("不购买原因 1 已购买社保 2 人员已离职")
private String reasonType;
/**
* 原因说明
*/
@Length(max = 50, message = "原因说明 不能超过50 个字符")
@ExcelAttribute(name = "原因说明", maxLength = 50)
@Schema(description = "原因说明")
@ExcelProperty("原因说明")
private String reasonInfo;
/**
* 申请编号
*/
@Length(max = 20, message = "申请编号 不能超过20 个字符")
@ExcelAttribute(name = "申请编号", maxLength = 20)
@Schema(description = "申请编号")
@ExcelProperty("申请编号")
private String applyNo;
/**
* 项目是否有审批通过记录 0 是 1 否
*/
@Length(max = 1, message = "项目是否有审批通过记录 0 是 1 否 不能超过1 个字符")
@ExcelAttribute(name = "项目是否有审批通过记录 0 是 1 否", maxLength = 1)
@Schema(description = "项目是否有审批通过记录 0 是 1 否")
@ExcelProperty("项目是否有审批通过记录 0 是 1 否")
private String auditFlag;
/**
* 申请人是否属于子分公司 0 是 1 否
* 申请时间
*/
@Length(max = 1, message = "申请人是否属于子分公司 0 是 1 否 不能超过1 个字符")
@ExcelAttribute(name = "申请人是否属于子分公司 0 是 1 否", maxLength = 1)
@Schema(description = "申请人是否属于子分公司 0 是 1 否")
@ExcelProperty("申请人是否属于子分公司 0 是 1 否")
private String companyFlag;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@ExcelAttribute(name = "申请时间")
@Schema(description = "申请时间")
@ExcelProperty("申请时间")
private LocalDateTime createTime;
@ExcelAttribute(name = "当前审核人")
@Schema(description = "当前审核人")
@ExcelProperty("当前审核人")
private String auditUser;
/**
* 是否删除 0未删除/1删除
* 不购买原因 1 已购买社保 2 人员已离职
*/
@Length(max = 1, message = "是否删除 0未删除/1删除 不能超过1 个字符")
@ExcelAttribute(name = "是否删除 0未删除/1删除", maxLength = 1)
@Schema(description = "是否删除 0未删除/1删除")
@ExcelProperty("是否删除 0未删除/1删除")
private String deleteFlag;
@ExcelAttribute(name = "不购买原因")
@Schema(description = "不购买原因")
@ExcelProperty("不购买原因")
private String reasonType;
/**
* 申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过
*/
@Length(max = 1, message = "申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过 不能超过1 个字符")
@ExcelAttribute(name = "申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过", maxLength = 1)
@Schema(description = "申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过")
@ExcelProperty("申请状态 0 草稿 1待提交 2 待审核 3 审核通过 4 审核不通过")
@ExcelAttribute(name = "审核状态")
@Schema(description = "审核状态")
@ExcelProperty("审核状态")
private String status;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 含风险项目不购买申请明细表
*
* @author huych
* @date 2025-01-10 11:23:21
*/
@Data
public class TInsuranceUnpurchasePersonAddVo implements Serializable {
@Schema(description = "行号")
private String rowIndex;
@Schema(description = "id")
private String id;
/**
* 姓名
*/
@ExcelProperty("员工姓名")
private String empName;
@Schema(description = "身份证号")
private String empIdcardNo;
@Schema(description = "就职岗位")
private String post;
@Schema(description = "code码区分报错")
private String code;
@Schema(description = "错误信息")
private String message;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 含风险项目不购买申请明细表
*
* @author huych
* @date 2025-01-10 11:23:21
*/
@Data
public class TInsuranceUnpurchasePersonCardVo implements Serializable {
/**
* 姓名
*/
@ExcelProperty("员工姓名")
private String empName;
@Schema(description = "身份证号")
private String empIdcardNo;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 含风险项目不购买申请明细表
......@@ -19,130 +16,82 @@ import java.io.Serializable;
* @date 2025-01-10 11:23:21
*/
@Data
public class TInsuranceUnpurchasePersonVo extends RowIndex implements Serializable {
public class TInsuranceUnpurchasePersonVo implements Serializable {
/**
* id
* 明细单号
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 36, message = "id 不能超过36 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 36)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
/**
* 父级id
*/
@Length(max = 36, message = "父级id 不能超过36 个字符")
@ExcelAttribute(name = "父级id", maxLength = 36)
@Schema(description = "父级id")
@ExcelProperty("父级id")
private String parnetId;
/**
* 姓名
*/
@Length(max = 32, message = "姓名 不能超过32 个字符")
@ExcelAttribute(name = "姓名", maxLength = 32)
@Schema(description = "姓名")
@ExcelProperty("姓名")
private String empName;
/**
* 身份证号
*/
@Length(max = 32, message = "身份证号 不能超过32 个字符")
@ExcelAttribute(name = "身份证号", maxLength = 32)
@Schema(description = "身份证号")
@ExcelProperty("身份证号")
private String empIdcardNo;
/**
* 就职岗位
*/
@Length(max = 50, message = "就职岗位 不能超过50 个字符")
@ExcelAttribute(name = "就职岗位", maxLength = 50)
@Schema(description = "就职岗位")
@ExcelProperty("就职岗位")
private String post;
@ExcelAttribute(name = "明细单号")
@Schema(description = "明细单号")
@ExcelProperty("明细单号")
private String applyNoDetail;
/**
* 明细申请编
* 不购买申请流程单
*/
@Length(max = 20, message = "明细申请编号 不能超过20 个字符")
@ExcelAttribute(name = "明细申请编号", maxLength = 20)
@Schema(description = "明细申请编号")
@ExcelProperty("明细申请编号")
private String applyNoDetail;
@ExcelAttribute(name = "不购买申请流程单号")
@Schema(description = "不购买申请流程单号")
@ExcelProperty("不购买申请流程单号")
private String applyNo;
/**
* 项目ID
* 项目名称
*/
@Length(max = 32, message = "项目ID 不能超过32 个字符")
@ExcelAttribute(name = "项目ID", maxLength = 32)
@Schema(description = "项目ID")
@ExcelProperty("项目ID")
private String deptId;
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
/**
* 项目编码
*/
@Length(max = 30, message = "项目编码 不能超过30 个字符")
@ExcelAttribute(name = "项目编码", maxLength = 30)
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
@ExcelAttribute(name = "事业部")
@Schema(description = "事业部")
@ExcelProperty("事业部")
private String division;
@ExcelAttribute(name = "事业部条线")
@Schema(description = "事业部条线")
@ExcelProperty("事业部条线")
private String newLine;
/**
* 项目名称
*/
@Length(max = 50, message = "项目名称 不能超过50 个字符")
@ExcelAttribute(name = "项目名称", maxLength = 50)
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
/**
* 申请人所在部门
* 姓名
*/
@Length(max = 36, message = "申请人所在部门 不能超过36 个字符")
@ExcelAttribute(name = "申请人所在部门", maxLength = 36)
@Schema(description = "申请人所在部门")
@ExcelProperty("申请人所在部门")
private String createUserDeptId;
@ExcelAttribute(name = "员工姓名")
@Schema(description = "员工姓名")
@ExcelProperty("员工姓名")
private String empName;
/**
* 申请人所在部门名称
* 身份证号
*/
@Length(max = 50, message = "申请人所在部门名称 不能超过50 个字符")
@ExcelAttribute(name = "申请人所在部门名称", maxLength = 50)
@Schema(description = "申请人所在部门名称")
@ExcelProperty("申请人所在部门名称")
private String createUserDeptName;
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
@ExcelProperty("身份证号")
private String empIdcardNo;
/**
* 不购买原因 1 已购买社保 2 人员已离职
*/
@Length(max = 1, message = "不购买原因 1 已购买社保 2 人员已离职 不能超过1 个字符")
@ExcelAttribute(name = "不购买原因 1 已购买社保 2 人员已离职", maxLength = 1)
@Schema(description = "不购买原因 1 已购买社保 2 人员已离职")
@ExcelProperty("不购买原因 1 已购买社保 2 人员已离职")
@ExcelAttribute(name = "不购买原因")
@Schema(description = "不购买原因")
@ExcelProperty("不购买原因")
private String reasonType;
/**
* 原因说明
*/
@Length(max = 50, message = "原因说明 不能超过50 个字符")
@ExcelAttribute(name = "原因说明", maxLength = 50)
@Schema(description = "原因说明")
@ExcelProperty("原因说明")
private String reasonInfo;
/**
* 主表申请编号
*/
@Length(max = 20, message = "主表申请编号 不能超过20 个字符")
@ExcelAttribute(name = "主表申请编号", maxLength = 20)
@Schema(description = "主表申请编号")
@ExcelProperty("主表申请编号")
private String applyNo;
/**
* 社保是否在保 0 是 1 否
*/
@Length(max = 1, message = "社保是否在保 0 是 1 否 不能超过1 个字符")
@ExcelAttribute(name = "社保是否在保 0 是 1 否", maxLength = 1)
@Schema(description = "社保是否在保 0 是 1 否")
@ExcelProperty("社保是否在保 0 是 1 否")
@ExcelAttribute(name = "社保是否在保")
@Schema(description = "社保是否在保")
@ExcelProperty("社保是否在保")
private String socialStatus;
/**
* 发薪次数
*/
......@@ -151,4 +100,21 @@ public class TInsuranceUnpurchasePersonVo extends RowIndex implements Serializab
@ExcelProperty("发薪次数")
private Integer salaryNum;
/**
* 创建者-姓名
*/
@ExcelAttribute(name = "申请人")
@Schema(description = "申请人")
@ExcelProperty("申请人")
private String createName;
/**
* 申请时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@ExcelAttribute(name = "申请时间")
@Schema(description = "申请时间")
@ExcelProperty("申请时间")
private LocalDateTime createTime;
}
package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TApprovalRecordService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TApprovalRecordSearchVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tapprovalrecord" )
@Tag(name = "审批记录表管理")
public class TApprovalRecordController {
private final TApprovalRecordService tApprovalRecordService;
/**
* 简单分页查询
* @param page 分页对象
* @param tApprovalRecord 审批记录表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TApprovalRecord>> getTApprovalRecordPage(Page<TApprovalRecord> page, TApprovalRecordSearchVo tApprovalRecord) {
return new R<>(tApprovalRecordService.getTApprovalRecordPage(page,tApprovalRecord));
}
/**
* 通过实体id和审核类型查询所有的审核记录
* @param domainId 实体id
* @param auditType 审核类型 0不购买商险审核
* @return R<Map<String, Object>> key=auditInfo表示审批记录列表
**/
@Operation(description = "通过实体id查询所有的审核记录")
@GetMapping("/getAuditInfoByDomainIdAndAuditType")
public R<Map<String, Object>> getAuditInfoByDomainIdAndAuditType(@RequestParam String domainId, @RequestParam String auditType) {
if (Common.isEmpty(domainId) || Common.isEmpty(auditType)) {
return R.failed("实体id或审核类型不能为空");
}
return tApprovalRecordService.getAuditInfoByDomainIdAndAuditType(domainId, auditType);
}
/**
* 通过id查询审批记录表
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('insurances_tapprovalrecord_get')")
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tapprovalrecord_get')" )
public R<TApprovalRecord> getById(@PathVariable("id" ) String id) {
return R.ok(tApprovalRecordService.getById(id));
}
/**
* 新增审批记录表
* @param tApprovalRecord 审批记录表
* @return R
*/
@Operation(summary = "新增审批记录表", description = "新增审批记录表:hasPermission('insurances_tapprovalrecord_add')")
@SysLog("新增审批记录表" )
@PostMapping
@PreAuthorize("@pms.hasPermission('insurances_tapprovalrecord_add')" )
public R<Boolean> save(@RequestBody TApprovalRecord tApprovalRecord) {
return R.ok(tApprovalRecordService.save(tApprovalRecord));
}
/**
* 修改审批记录表
* @param tApprovalRecord 审批记录表
* @return R
*/
@Operation(summary = "修改审批记录表", description = "修改审批记录表:hasPermission('insurances_tapprovalrecord_edit')")
@SysLog("修改审批记录表" )
@PutMapping
@PreAuthorize("@pms.hasPermission('insurances_tapprovalrecord_edit')" )
public R<Boolean> updateById(@RequestBody TApprovalRecord tApprovalRecord) {
return R.ok(tApprovalRecordService.updateById(tApprovalRecord));
}
/**
* 通过id删除审批记录表
* @param id id
* @return R
*/
@Operation(summary = "通过id删除审批记录表", description = "通过id删除审批记录表:hasPermission('insurances_tapprovalrecord_del')")
@SysLog("通过id删除审批记录表" )
@DeleteMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tapprovalrecord_del')" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tApprovalRecordService.removeById(id));
}
}
package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditCopyInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TAuditCopyInfoService;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 审批抄送记录信息表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tauditcopyinfo" )
@Tag(name = "审批抄送记录信息表管理")
public class TAuditCopyInfoController {
private final TAuditCopyInfoService tAuditCopyInfoService;
/**
* 通过id查询审批抄送记录信息表
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('insurances_tauditcopyinfo_get')")
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tauditcopyinfo_get')" )
public R<TAuditCopyInfo> getById(@PathVariable("id" ) String id) {
return R.ok(tAuditCopyInfoService.getById(id));
}
/**
* 新增审批抄送记录信息表
* @param tAuditCopyInfo 审批抄送记录信息表
* @return R
*/
@Operation(summary = "新增审批抄送记录信息表", description = "新增审批抄送记录信息表:hasPermission('insurances_tauditcopyinfo_add')")
@SysLog("新增审批抄送记录信息表" )
@PostMapping
@PreAuthorize("@pms.hasPermission('insurances_tauditcopyinfo_add')" )
public R<Boolean> save(@RequestBody TAuditCopyInfo tAuditCopyInfo) {
return R.ok(tAuditCopyInfoService.save(tAuditCopyInfo));
}
/**
* 修改审批抄送记录信息表
* @param tAuditCopyInfo 审批抄送记录信息表
* @return R
*/
@Operation(summary = "修改审批抄送记录信息表", description = "修改审批抄送记录信息表:hasPermission('insurances_tauditcopyinfo_edit')")
@SysLog("修改审批抄送记录信息表" )
@PutMapping
@PreAuthorize("@pms.hasPermission('insurances_tauditcopyinfo_edit')" )
public R<Boolean> updateById(@RequestBody TAuditCopyInfo tAuditCopyInfo) {
return R.ok(tAuditCopyInfoService.updateById(tAuditCopyInfo));
}
/**
* 通过id删除审批抄送记录信息表
* @param id id
* @return R
*/
@Operation(summary = "通过id删除审批抄送记录信息表", description = "通过id删除审批抄送记录信息表:hasPermission('insurances_tauditcopyinfo_del')")
@SysLog("通过id删除审批抄送记录信息表" )
@DeleteMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tauditcopyinfo_del')" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tAuditCopyInfoService.removeById(id));
}
}
package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditNodeProocess;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TAuditNodeProocessService;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 审批主流程记录表节点表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tauditnodeproocess" )
@Tag(name = "审批主流程记录表节点表管理")
public class TAuditNodeProocessController {
private final TAuditNodeProocessService tAuditNodeProocessService;
/**
* 通过id查询审批主流程记录表节点表
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('insurances_tauditnodeproocess_get')")
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tauditnodeproocess_get')" )
public R<TAuditNodeProocess> getById(@PathVariable("id" ) String id) {
return R.ok(tAuditNodeProocessService.getById(id));
}
/**
* 新增审批主流程记录表节点表
* @param tAuditNodeProocess 审批主流程记录表节点表
* @return R
*/
@Operation(summary = "新增审批主流程记录表节点表", description = "新增审批主流程记录表节点表:hasPermission('insurances_tauditnodeproocess_add')")
@SysLog("新增审批主流程记录表节点表" )
@PostMapping
@PreAuthorize("@pms.hasPermission('insurances_tauditnodeproocess_add')" )
public R<Boolean> save(@RequestBody TAuditNodeProocess tAuditNodeProocess) {
return R.ok(tAuditNodeProocessService.save(tAuditNodeProocess));
}
/**
* 修改审批主流程记录表节点表
* @param tAuditNodeProocess 审批主流程记录表节点表
* @return R
*/
@Operation(summary = "修改审批主流程记录表节点表", description = "修改审批主流程记录表节点表:hasPermission('insurances_tauditnodeproocess_edit')")
@SysLog("修改审批主流程记录表节点表" )
@PutMapping
@PreAuthorize("@pms.hasPermission('insurances_tauditnodeproocess_edit')" )
public R<Boolean> updateById(@RequestBody TAuditNodeProocess tAuditNodeProocess) {
return R.ok(tAuditNodeProocessService.updateById(tAuditNodeProocess));
}
/**
* 通过id删除审批主流程记录表节点表
* @param id id
* @return R
*/
@Operation(summary = "通过id删除审批主流程记录表节点表", description = "通过id删除审批主流程记录表节点表:hasPermission('insurances_tauditnodeproocess_del')")
@SysLog("通过id删除审批主流程记录表节点表" )
@DeleteMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tauditnodeproocess_del')" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tAuditNodeProocessService.removeById(id));
}
}
......@@ -2,21 +2,29 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchaseApply;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceUnpurchaseApplyService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchaseApplySearchVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
......@@ -29,6 +37,7 @@ import javax.servlet.http.HttpServletResponse;
@RequiredArgsConstructor
@RequestMapping("/tinsuranceunpurchaseapply")
@Tag(name = "含风险项目不购买申请表管理")
@Slf4j
public class TInsuranceUnpurchaseApplyController {
private final TInsuranceUnpurchaseApplyService tInsuranceUnpurchaseApplyService;
......@@ -59,7 +68,7 @@ public class TInsuranceUnpurchaseApplyController {
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
public R<TInsuranceUnpurchaseApply> getById(@PathVariable("id") String id) {
return R.ok(tInsuranceUnpurchaseApplyService.getById(id));
return tInsuranceUnpurchaseApplyService.getDetailInfoById(id);
}
/**
......@@ -72,7 +81,7 @@ public class TInsuranceUnpurchaseApplyController {
@SysLog("新增含风险项目不购买申请表")
@PostMapping("/add")
public R save(@RequestBody TInsuranceUnpurchaseApply tInsuranceUnpurchaseApply) {
return new R<>(tInsuranceUnpurchaseApplyService.save(tInsuranceUnpurchaseApply));
return new R<>(tInsuranceUnpurchaseApplyService.addApply(tInsuranceUnpurchaseApply));
}
/**
......@@ -116,4 +125,118 @@ public class TInsuranceUnpurchaseApplyController {
menuUtil.setAuthSql(user, searchVo);
tInsuranceUnpurchaseApplyService.listExport(response, searchVo);
}
/**
* 审核分页查询
*
* @param page 分页对象
* @param unpurchaseApplySearchVo 不购买申请查询信息
* @param type 0待审核、1已处理、2抄送我
*
* @return R
*/
@Operation(description = "审核分页查询")
@GetMapping("/getAuditPage")
public R<IPage<TInsuranceUnpurchaseApply>> getAuditPage(Page<TInsuranceUnpurchaseApply> page,
TInsuranceUnpurchaseApplySearchVo unpurchaseApplySearchVo,String type) {
YifuUser user = SecurityUtils.getUser();
if(null == user){
return R.failed(ResultConstants.NO_USER);
}
String userId = String.valueOf(user.getId());
return R.ok(tInsuranceUnpurchaseApplyService.getAuditPage(page, unpurchaseApplySearchVo, userId, type));
}
/**
* 审核数量
*
* @return R
*/
@Operation(description = "审核数量查询")
@GetMapping("/getAuditCount")
public R<Map<String,Integer>> getAuditCount() {
YifuUser user = SecurityUtils.getUser();
if(null == user){
return R.failed(ResultConstants.NO_USER);
}
String userId = String.valueOf(user.getId());
return R.ok(tInsuranceUnpurchaseApplyService.getAuditCount(userId));
}
/**
* 提交审核
* @param id 实体id
* @return R<String>
**/
@Operation(description = "提交审核")
@SysLog("提交审核")
@PostMapping("/commitOne")
public R<String> commitOne(@RequestParam String id) {
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
if (Common.isNotKong(id)) {
String requestId;
String redisKey = CacheConstants.INSURANCEUNPURCHASE_PROCESS_CACHE.concat(id);
try {
requestId = RedisDistributedLock.getLock(redisKey,"10");
} catch (Exception e) {
log.error("获取锁失败:{}", e);
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
if (Common.isNotKong(requestId)) {
R<String> saveR = tInsuranceUnpurchaseApplyService.commitOne(id);
//主动释放锁
RedisDistributedLock.unlock(redisKey, requestId);
return saveR;
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
} else {
return R.failed("请选择提交的记录!");
}
}
/**
* 审核
* @param tApprovalRecord 审批信息
* @return R<String>
**/
@Operation(description = "审核")
@SysLog("审核")
@PostMapping("/audit")
public R<String> audit(@RequestBody TApprovalRecord tApprovalRecord) {
if (Common.isEmpty(tApprovalRecord.getApprovalResult())) {
return R.failed("审核结果不能为空!");
}
if (Common.isNotNull(tApprovalRecord.getApprovalOpinion()) && tApprovalRecord.getApprovalOpinion().length()> 100) {
return R.failed("审核意见不能超过100个字");
}
if (Common.isEmpty(tApprovalRecord.getDomainId())) {
return R.failed("id不能为空!");
}
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
TInsuranceUnpurchaseApply insuranceUnpurchaseApply = tInsuranceUnpurchaseApplyService.getById(tApprovalRecord.getDomainId());
if (Common.isEmpty(insuranceUnpurchaseApply)){
return R.failed("该实体信息不存在!");
}
String requestId;
String redisKey = CacheConstants.INSURANCEUNPURCHASE_PROCESS_CACHE.concat(tApprovalRecord.getDomainId());
try {
requestId = RedisDistributedLock.tryLockAndTime(redisKey, "10");
} catch (Exception e) {
return R.failed(ResultConstants.REQUEST_LOCK_FAIL);
}
if (Common.isNotKong(requestId)) {
return tInsuranceUnpurchaseApplyService.auditAndCommit(insuranceUnpurchaseApply, tApprovalRecord.getApprovalResult(),
tApprovalRecord.getApprovalOpinion(), user);
}
return R.failed(ResultConstants.REQUEST_LOCK_FAIL);
}
}
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchasePerson;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceUnpurchasePersonService;
......@@ -13,7 +12,6 @@ import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonSearc
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
......@@ -60,51 +58,13 @@ public class TInsuranceUnpurchasePersonController {
return R.ok(tInsuranceUnpurchasePersonService.getById(id));
}
/**
* 新增含风险项目不购买申请明细表
* @param tInsuranceUnpurchasePerson 含风险项目不购买申请明细表
* @return R
*/
@Operation(summary = "新增含风险项目不购买申请明细表", description = "新增含风险项目不购买申请明细表")
@SysLog("新增含风险项目不购买申请明细表")
@PostMapping
public R<Boolean> save(@RequestBody TInsuranceUnpurchasePerson tInsuranceUnpurchasePerson) {
return R.ok(tInsuranceUnpurchasePersonService.save(tInsuranceUnpurchasePerson));
}
/**
* 修改含风险项目不购买申请明细表
* @param tInsuranceUnpurchasePerson 含风险项目不购买申请明细表
* @return R
*/
@Operation(summary = "修改含风险项目不购买申请明细表", description = "修改含风险项目不购买申请明细表")
@SysLog("修改含风险项目不购买申请明细表")
@PutMapping
public R<Boolean> updateById(@RequestBody TInsuranceUnpurchasePerson tInsuranceUnpurchasePerson) {
return R.ok(tInsuranceUnpurchasePersonService.updateById(tInsuranceUnpurchasePerson));
}
/**
* 通过id删除含风险项目不购买申请明细表
* @param id id
* @return R
*/
@Operation(summary = "通过id删除含风险项目不购买申请明细表", description = "通过id删除含风险项目不购买申请明细表:hasPermission('insurances_tinsuranceunpurchaseperson_del')")
@SysLog("通过id删除含风险项目不购买申请明细表" )
@DeleteMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('insurances_tinsuranceunpurchaseperson_del')" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tInsuranceUnpurchasePersonService.removeById(id));
}
/**
* 含风险项目不购买申请明细表 批量导出
* @author huych
* @date 2025-01-10 11:23:21
**/
@Operation(description = "导出含风险项目不购买申请明细表 hasPermission('insurances_tinsuranceunpurchaseperson-export')")
@Operation(description = "导出含风险项目不购买申请明细表")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('insurances_tinsuranceunpurchaseperson-export')")
public void export(HttpServletResponse response, @RequestBody TInsuranceUnpurchasePersonSearchVo searchVo) {
YifuUser user = SecurityUtils.getUser();
menuUtil.setAuthSql(user, searchVo);
......
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Mapper
public interface TApprovalRecordMapper extends BaseMapper<TApprovalRecord> {
/**
* 审批记录表简单分页查询
* @param tApprovalRecord 审批记录表
* @return
*/
IPage<TApprovalRecord> getTApprovalRecordPage(Page<TApprovalRecord> page, @Param("tApprovalRecord") TApprovalRecord tApprovalRecord);
/**
* 通过实体id和审核类型查询所有的审核记录
*
* @param domainId 实体id
* @param auditType 审核类型 0不购买商险审核
* @return List<TApprovalRecord>
**/
List<TApprovalRecord> getApprovalRecordList(@Param("domainId") String domainId, @Param("auditType") String auditType);
}
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditCopyInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 审批抄送记录信息表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Mapper
public interface TAuditCopyInfoMapper extends BaseMapper<TAuditCopyInfo> {
}
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditNodeProocess;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 审批主流程记录表节点表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Mapper
public interface TAuditNodeProocessMapper extends BaseMapper<TAuditNodeProocess> {
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchaseApply;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchaseApplySearchVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchaseApplyVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -38,6 +39,56 @@ public interface TInsuranceUnpurchaseApplyMapper extends BaseMapper<TInsuranceUn
* @param tInsuranceUnpurchaseApply 含风险项目不购买申请表
* @return
*/
List<TInsuranceUnpurchaseApply> getTInsuranceUnpurchaseApplyExportList(@Param("tInsuranceUnpurchaseApply") TInsuranceUnpurchaseApplySearchVo tInsuranceUnpurchaseApply);
List<TInsuranceUnpurchaseApplyVo> getTInsuranceUnpurchaseApplyExportList(@Param("tInsuranceUnpurchaseApply") TInsuranceUnpurchaseApplySearchVo tInsuranceUnpurchaseApply);
String getMaxInusuranceCode();
String getMaxInusuranceDetailCode();
/**
* 待审核分页查询
* @param page 分页信息
* @param tInsuranceUnpurchaseApply 不购买申请查询信息
* @param userId 登录用户id
* @return IPage
*/
IPage<TInsuranceUnpurchaseApply> getAuditPage(Page<TInsuranceUnpurchaseApply> page,
@Param("tInsuranceUnpurchaseApply") TInsuranceUnpurchaseApplySearchVo tInsuranceUnpurchaseApply,
@Param("userId") String userId);
/**
* 已审核分页查询
* @param page 分页信息
* @param tInsuranceUnpurchaseApply 不购买申请查询信息
* @param userId 登录用户id
* @return IPage
*/
IPage<TInsuranceUnpurchaseApply> getHistoryHandlePage(Page<TInsuranceUnpurchaseApply> page,
@Param("tInsuranceUnpurchaseApply") TInsuranceUnpurchaseApplySearchVo tInsuranceUnpurchaseApply,
@Param("userId") String userId);
/**
* 待审核数量
* @param userId 登录用户id
* @return IPage
*/
Integer getAuditCount(@Param("userId") String userId);
/**
* 已审核数量
* @param userId 登录用户id
* @return IPage
*/
Integer getHistoryHandleCount(@Param("userId") String userId);
/**
* 抄送分页查询
* @param page 分页信息
* @param tInsuranceUnpurchaseApply 不购买申请查询信息
* @param userId 登录用户id
* @return IPage
*/
IPage<TInsuranceUnpurchaseApply> getCopyPage(Page<TInsuranceUnpurchaseApply> page,
@Param("tInsuranceUnpurchaseApply") TInsuranceUnpurchaseApplySearchVo tInsuranceUnpurchaseApply,
@Param("userId") String userId);
}
......@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchasePerson;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonSearchVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 含风险项目不购买申请明细表
*
......@@ -23,4 +26,18 @@ public interface TInsuranceUnpurchasePersonMapper extends BaseMapper<TInsuranceU
*/
IPage<TInsuranceUnpurchasePerson> getTInsuranceUnpurchasePersonPage(Page<TInsuranceUnpurchasePerson> page
, @Param("tInsuranceUnpurchasePerson") TInsuranceUnpurchasePersonSearchVo tInsuranceUnpurchasePerson);
/**
* 含风险项目不购买申请表简单分页查询
* @param tInsuranceUnpurchasePerson 含风险项目不购买申请表
* @return
*/
long getTInsuranceUnpurchaseInfoExportCount(@Param("tInsuranceUnpurchasePerson") TInsuranceUnpurchasePersonSearchVo tInsuranceUnpurchasePerson);
/**
* 含风险项目不购买申请表简单导出查询
* @param tInsuranceUnpurchasePerson 含风险项目不购买申请表
* @return
*/
List<TInsuranceUnpurchasePersonVo> getTInsuranceUnpurchaseInfoExportList(@Param("tInsuranceUnpurchasePerson") TInsuranceUnpurchasePersonSearchVo tInsuranceUnpurchasePerson);
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TApprovalRecordSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
public interface TApprovalRecordService extends IService<TApprovalRecord> {
/**
* 审批记录表简单分页查询
* @param tApprovalRecord 审批记录表
* @return
*/
IPage<TApprovalRecord> getTApprovalRecordPage(Page<TApprovalRecord> page, TApprovalRecordSearchVo tApprovalRecord);
/**
* 通过实体id和审核类型查询所有的审核记录
* @param domainId 实体id
* @param auditType 审核类型 0不购买商险审核
* @return R<Map<String, Object>> key=auditInfo表示审批记录列表
**/
R<Map<String, Object>> getAuditInfoByDomainIdAndAuditType(String domainId, String auditType);
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditCopyInfo;
/**
* 审批抄送记录信息表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
public interface TAuditCopyInfoService extends IService<TAuditCopyInfo> {
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditNodeProocess;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 审批主流程记录表节点表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
public interface TAuditNodeProocessService extends IService<TAuditNodeProocess> {
}
......@@ -3,11 +3,15 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchaseApply;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchaseApplySearchVo;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 含风险项目不购买申请表
......@@ -27,5 +31,43 @@ public interface TInsuranceUnpurchaseApplyService extends IService<TInsuranceUnp
void listExport(HttpServletResponse response, TInsuranceUnpurchaseApplySearchVo searchVo);
/**
* 审核分页
* @param page 分页信息
* @param unpurchaseApplySearchVo 不购买申请查询信息
* @param userId 登录用户id
* @param type 0待审核、1已处理、2抄送我
* @return IPage
*/
IPage<TInsuranceUnpurchaseApply> getAuditPage(Page<TInsuranceUnpurchaseApply> page,
TInsuranceUnpurchaseApplySearchVo unpurchaseApplySearchVo,
String userId, String type);
/**
* 审核数量
* @param userId 登录用户id
* @return IPage
*/
Map<String,Integer> getAuditCount(String userId);
/**
* 提交审核
* @param id 实体id
* @return R<String>
**/
R<String> commitOne(String id) throws CheckedException;
/**
* 审核
* @param insuranceUnpurchaseApply 审批信息
* @return R<String>
**/
R<String> auditAndCommit(TInsuranceUnpurchaseApply insuranceUnpurchaseApply, String approvalResult, String approvalOpinion, YifuUser user)
throws CheckedException;
@Transactional
R addApply(TInsuranceUnpurchaseApply tInsuranceUnpurchaseApply);
R<TInsuranceUnpurchaseApply> getDetailInfoById(String id);
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TApprovalRecordMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TApprovalRecordService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TApprovalRecordSearchVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.Map;
/**
* 审批记录表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Log4j2
@Service
public class TApprovalRecordServiceImpl extends ServiceImpl<TApprovalRecordMapper, TApprovalRecord> implements TApprovalRecordService {
/**
* 审批记录表简单分页查询
* @param tApprovalRecord 审批记录表
* @return
*/
@Override
public IPage<TApprovalRecord> getTApprovalRecordPage(Page<TApprovalRecord> page, TApprovalRecordSearchVo tApprovalRecord){
return baseMapper.getTApprovalRecordPage(page,tApprovalRecord);
}
/**
* 通过实体id和审核类型查询所有的审核记录
*
* @param domainId 实体id
* @param auditType 审核类型 0不购买商险审核
* @return R<Map < String, Object>> key=auditInfo表示审批记录列表
**/
@Override
public R<Map<String, Object>> getAuditInfoByDomainIdAndAuditType(String domainId, String auditType) {
Map<String, Object> resultMap = Maps.newHashMap();
// 获取审批列表
List<TApprovalRecord> auditInfoList = baseMapper.getApprovalRecordList(domainId, auditType);
resultMap.put("auditInfo", auditInfoList);
return new R<>(resultMap);
}
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditCopyInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TAuditCopyInfoMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TAuditCopyInfoService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 审批抄送记录信息表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
*/
@Log4j2
@Service
public class TAuditCopyInfoServiceImpl extends ServiceImpl<TAuditCopyInfoMapper, TAuditCopyInfo> implements TAuditCopyInfoService {
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditNodeProocess;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TAuditNodeProocessMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TAuditNodeProocessService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 审批主流程记录表节点表
*
* @author chenyuxi
* @date 2025-01-10 17:47:32
* @since 1.7.5
*/
@Log4j2
@Service
public class TAuditNodeProocessServiceImpl extends ServiceImpl<TAuditNodeProocessMapper, TAuditNodeProocess> implements TAuditNodeProocessService {
}
......@@ -13,6 +13,7 @@ import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceUnpurchasePerson;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsuranceUnpurchasePersonMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceUnpurchasePersonService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonSearchVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
......@@ -49,23 +50,21 @@ public class TInsuranceUnpurchasePersonServiceImpl extends ServiceImpl<TInsuranc
public void listExport(HttpServletResponse response, TInsuranceUnpurchasePersonSearchVo searchVo){
String fileName = "含风险项目商险不购买导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TInsuranceUnpurchasePerson> list = new ArrayList<>();
// long count = noPageCountDiy(searchVo);
long count = 0l;
List<TInsuranceUnpurchasePersonVo> list = new ArrayList<>();
long count = baseMapper.getTInsuranceUnpurchaseInfoExportCount(searchVo);
try (ServletOutputStream out = response.getOutputStream();){
response.setContentType(CommonConstants.MULTIPART_FORM_DATA);
response.setCharacterEncoding("utf-8");
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName , CommonConstants.UTF8));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
//EasyExcel.write(out, TEmpBadRecord.class).sheet("不良记录").doWrite(list);
ExcelWriter excelWriter = EasyExcel.write(out, TInsuranceUnpurchasePerson.class).build();
ExcelWriter excelWriter = EasyExcel.write(out, TInsuranceUnpurchasePersonVo.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT){
for (int i = 0; i <= count; i = i + CommonConstants.EXCEL_EXPORT_LIMIT) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
// list = noPageDiy(searchVo);
list = baseMapper.getTInsuranceUnpurchaseInfoExportList(searchVo);
if (Common.isNotNull(list)){
WriteSheet writeSheet = EasyExcel.writerSheet("含风险项目不购买申请明细表"+index).build();
excelWriter.write(list,writeSheet);
......
......@@ -35,3 +35,20 @@ ekp:
docStatus: '20'
LoginName: 'admin'
docSubject : '接口发起流程'
# spring security 配置
security:
oauth2:
resource:
loadBalanced: true
token-info-uri: http://yifu-auth/oauth/check_token
ignore: # 通用放行URL,服务个性化,请在对应配置文件覆盖
urls:
- /v3/api-docs
- /swagger-ui/**
- /tapprovalrecord/getAuditInfoByDomainIdAndAuditType
- /tinsuranceunpurchaseapply/getAuditPage
- /tinsuranceunpurchaseapply/getAuditCount
- /tinsuranceunpurchaseapply/commitOne
- /tinsuranceunpurchaseapply/audit
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TApprovalRecordMapper">
<resultMap id="tApprovalRecordMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TApprovalRecord">
<id property="id" column="id"/>
<result property="flowId" column="flow_id"/>
<result property="domainId" column="domain_id"/>
<result property="nodeId" column="node_id"/>
<result property="approvalMan" column="approval_man"/>
<result property="approvalManName" column="approval_man_name"/>
<result property="approvalTime" column="approval_time"/>
<result property="approvalResult" column="approval_result"/>
<result property="approvalOpinion" column="approval_opinion"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="preFlag" column="pre_flag"/>
<result property="submitMan" column="submit_man"/>
<result property="submitManName" column="submit_man_name"/>
<result property="reason" column="reason"/>
<result property="auditType" column="audit_type"/>
<result property="createTime" column="create_time"/>
<result property="nodeName" column="node_name"/>
<result property="entityName" column="entity_name"/>
<result property="submitCreateTime" column="submit_create_time"/>
<result property="backFlag" column="back_flag"/>
<result property="backNodeName" column="back_node_name"/>
<result property="backNodeId" column="back_node_id"/>
<result property="addSignNodeId" column="add_sign_node_id"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.flow_id,
a.domain_id,
a.node_id,
a.approval_man,
a.approval_man_name,
a.approval_time,
a.approval_result,
a.approval_opinion,
a.delete_flag,
a.pre_flag,
a.submit_man,
a.submit_man_name,
a.reason,
a.audit_type,
a.create_time,
a.node_name,
a.entity_name,
a.submit_create_time,
a.back_flag,
a.back_node_name,
a.back_node_id,
a.add_sign_node_id
</sql>
<sql id="tApprovalRecord_where">
<if test="tApprovalRecord != null">
<if test="tApprovalRecord.id != null and tApprovalRecord.id.trim() != ''">
AND a.id = #{tApprovalRecord.id}
</if>
<if test="tApprovalRecord.flowId != null and tApprovalRecord.flowId.trim() != ''">
AND a.flow_id = #{tApprovalRecord.flowId}
</if>
<if test="tApprovalRecord.domainId != null and tApprovalRecord.domainId.trim() != ''">
AND a.domain_id = #{tApprovalRecord.domainId}
</if>
<if test="tApprovalRecord.nodeId != null and tApprovalRecord.nodeId.trim() != ''">
AND a.node_id = #{tApprovalRecord.nodeId}
</if>
<if test="tApprovalRecord.approvalMan != null and tApprovalRecord.approvalMan.trim() != ''">
AND a.approval_man = #{tApprovalRecord.approvalMan}
</if>
<if test="tApprovalRecord.approvalManName != null and tApprovalRecord.approvalManName.trim() != ''">
AND a.approval_man_name = #{tApprovalRecord.approvalManName}
</if>
<if test="tApprovalRecord.approvalTime != null">
AND a.approval_time = #{tApprovalRecord.approvalTime}
</if>
<if test="tApprovalRecord.approvalResult != null and tApprovalRecord.approvalResult.trim() != ''">
AND a.approval_result = #{tApprovalRecord.approvalResult}
</if>
<if test="tApprovalRecord.approvalOpinion != null and tApprovalRecord.approvalOpinion.trim() != ''">
AND a.approval_opinion = #{tApprovalRecord.approvalOpinion}
</if>
<if test="tApprovalRecord.deleteFlag != null and tApprovalRecord.deleteFlag.trim() != ''">
AND a.delete_flag = #{tApprovalRecord.deleteFlag}
</if>
<if test="tApprovalRecord.preFlag != null and tApprovalRecord.preFlag.trim() != ''">
AND a.pre_flag = #{tApprovalRecord.preFlag}
</if>
<if test="tApprovalRecord.submitMan != null and tApprovalRecord.submitMan.trim() != ''">
AND a.submit_man = #{tApprovalRecord.submitMan}
</if>
<if test="tApprovalRecord.submitManName != null and tApprovalRecord.submitManName.trim() != ''">
AND a.submit_man_name = #{tApprovalRecord.submitManName}
</if>
<if test="tApprovalRecord.reason != null and tApprovalRecord.reason.trim() != ''">
AND a.reason = #{tApprovalRecord.reason}
</if>
<if test="tApprovalRecord.auditType != null and tApprovalRecord.auditType.trim() != ''">
AND a.audit_type = #{tApprovalRecord.auditType}
</if>
<if test="tApprovalRecord.createTime != null">
AND a.create_time = #{tApprovalRecord.createTime}
</if>
<if test="tApprovalRecord.nodeName != null and tApprovalRecord.nodeName.trim() != ''">
AND a.node_name = #{tApprovalRecord.nodeName}
</if>
<if test="tApprovalRecord.entityName != null and tApprovalRecord.entityName.trim() != ''">
AND a.entity_name = #{tApprovalRecord.entityName}
</if>
<if test="tApprovalRecord.submitCreateTime != null">
AND a.submit_create_time = #{tApprovalRecord.submitCreateTime}
</if>
<if test="tApprovalRecord.backFlag != null and tApprovalRecord.backFlag.trim() != ''">
AND a.back_flag = #{tApprovalRecord.backFlag}
</if>
<if test="tApprovalRecord.backNodeName != null and tApprovalRecord.backNodeName.trim() != ''">
AND a.back_node_name = #{tApprovalRecord.backNodeName}
</if>
<if test="tApprovalRecord.backNodeId != null and tApprovalRecord.backNodeId.trim() != ''">
AND a.back_node_id = #{tApprovalRecord.backNodeId}
</if>
<if test="tApprovalRecord.addSignNodeId != null and tApprovalRecord.addSignNodeId.trim() != ''">
AND a.add_sign_node_id = #{tApprovalRecord.addSignNodeId}
</if>
</if>
</sql>
<!--tApprovalRecord简单分页查询-->
<select id="getTApprovalRecordPage" resultMap="tApprovalRecordMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_approval_record a
<where>
1=1
<include refid="tApprovalRecord_where"/>
</where>
</select>
<!--查询审核记录数据-->
<select id="getApprovalRecordList" resultMap="tApprovalRecordMap">
SELECT
a.id,
a.flow_id,
a.domain_id,
a.node_id,
a.approval_man,
a.approval_man_name,
a.approval_time,
a.approval_result,
a.approval_opinion,
a.submit_man,
a.submit_man_name,
a.reason,
a.create_time,
a.node_name,
a.entity_name,
a.submit_create_time
FROM t_approval_record a
<where>
a.domain_id = #{domainId} AND a.audit_type = #{auditType}
AND a.delete_flag = '0'
order by a.create_time,a.id
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TAuditCopyInfoMapper">
<resultMap id="tAuditCopyInfoMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditCopyInfo">
<id property="id" column="id"/>
<result property="auditUserId" column="audit_user_id"/>
<result property="auditUser" column="audit_user"/>
<result property="domainId" column="domain_id"/>
<result property="createTime" column="create_time"/>
<result property="flowId" column="flow_id"/>
<result property="nodeId" column="node_id"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="nodeName" column="node_name"/>
<result property="auditType" column="audit_type"/>
<result property="preFlag" column="pre_flag"/>
<result property="submitMan" column="submit_man"/>
<result property="submitManName" column="submit_man_name"/>
<result property="submitCreateTime" column="submit_create_time"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.audit_user_id,
a.audit_user,
a.domain_id,
a.create_time,
a.flow_id,
a.node_id,
a.delete_flag,
a.node_name,
a.audit_type,
a.pre_flag,
a.submit_man,
a.submit_man_name,
a.submit_create_time
</sql>
<sql id="tAuditCopyInfo_where">
<if test="tAuditCopyInfo != null">
<if test="tAuditCopyInfo.id != null and tAuditCopyInfo.id.trim() != ''">
AND a.id = #{tAuditCopyInfo.id}
</if>
<if test="tAuditCopyInfo.auditUserId != null and tAuditCopyInfo.auditUserId.trim() != ''">
AND a.audit_user_id = #{tAuditCopyInfo.auditUserId}
</if>
<if test="tAuditCopyInfo.auditUser != null and tAuditCopyInfo.auditUser.trim() != ''">
AND a.audit_user = #{tAuditCopyInfo.auditUser}
</if>
<if test="tAuditCopyInfo.domainId != null and tAuditCopyInfo.domainId.trim() != ''">
AND a.domain_id = #{tAuditCopyInfo.domainId}
</if>
<if test="tAuditCopyInfo.createTime != null">
AND a.create_time = #{tAuditCopyInfo.createTime}
</if>
<if test="tAuditCopyInfo.flowId != null and tAuditCopyInfo.flowId.trim() != ''">
AND a.flow_id = #{tAuditCopyInfo.flowId}
</if>
<if test="tAuditCopyInfo.nodeId != null and tAuditCopyInfo.nodeId.trim() != ''">
AND a.node_id = #{tAuditCopyInfo.nodeId}
</if>
<if test="tAuditCopyInfo.deleteFlag != null and tAuditCopyInfo.deleteFlag.trim() != ''">
AND a.delete_flag = #{tAuditCopyInfo.deleteFlag}
</if>
<if test="tAuditCopyInfo.nodeName != null and tAuditCopyInfo.nodeName.trim() != ''">
AND a.node_name = #{tAuditCopyInfo.nodeName}
</if>
<if test="tAuditCopyInfo.auditType != null and tAuditCopyInfo.auditType.trim() != ''">
AND a.audit_type = #{tAuditCopyInfo.auditType}
</if>
<if test="tAuditCopyInfo.preFlag != null and tAuditCopyInfo.preFlag.trim() != ''">
AND a.pre_flag = #{tAuditCopyInfo.preFlag}
</if>
<if test="tAuditCopyInfo.submitMan != null and tAuditCopyInfo.submitMan.trim() != ''">
AND a.submit_man = #{tAuditCopyInfo.submitMan}
</if>
<if test="tAuditCopyInfo.submitManName != null and tAuditCopyInfo.submitManName.trim() != ''">
AND a.submit_man_name = #{tAuditCopyInfo.submitManName}
</if>
<if test="tAuditCopyInfo.submitCreateTime != null">
AND a.submit_create_time = #{tAuditCopyInfo.submitCreateTime}
</if>
</if>
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TAuditNodeProocessMapper">
<resultMap id="tAuditNodeProocessMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TAuditNodeProocess">
<id property="id" column="id"/>
<result property="processId" column="process_id"/>
<result property="nodeId" column="node_id"/>
<result property="nodeType" column="node_type"/>
<result property="createTime" column="create_time"/>
<result property="domainId" column="domain_id"/>
<result property="mainType" column="main_type"/>
<result property="logoTitle" column="logo_title"/>
<result property="nodeName" column="node_name"/>
<result property="processName" column="process_name"/>
<result property="parentProcessId" column="parent_process_id"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="type" column="type"/>
<result property="addSignParentNodeId" column="add_sign_parent_node_id"/>
<result property="addSignDepartmentId" column="add_sign_department_id"/>
<result property="domainName" column="domain_name"/>
<result property="addSignApprovalMan" column="add_sign_approval_man"/>
<result property="addSignApprovalManName" column="add_sign_approval_man_name"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.process_id,
a.node_id,
a.node_type,
a.create_time,
a.domain_id,
a.main_type,
a.logo_title,
a.node_name,
a.process_name,
a.parent_process_id,
a.delete_flag,
a.type,
a.add_sign_parent_node_id,
a.add_sign_department_id,
a.domain_name,
a.add_sign_approval_man,
a.add_sign_approval_man_name
</sql>
<sql id="tAuditNodeProocess_where">
<if test="tAuditNodeProocess != null">
<if test="tAuditNodeProocess.id != null and tAuditNodeProocess.id.trim() != ''">
AND a.id = #{tAuditNodeProocess.id}
</if>
<if test="tAuditNodeProocess.processId != null and tAuditNodeProocess.processId.trim() != ''">
AND a.process_id = #{tAuditNodeProocess.processId}
</if>
<if test="tAuditNodeProocess.nodeId != null and tAuditNodeProocess.nodeId.trim() != ''">
AND a.node_id = #{tAuditNodeProocess.nodeId}
</if>
<if test="tAuditNodeProocess.nodeType != null and tAuditNodeProocess.nodeType.trim() != ''">
AND a.node_type = #{tAuditNodeProocess.nodeType}
</if>
<if test="tAuditNodeProocess.createTime != null">
AND a.create_time = #{tAuditNodeProocess.createTime}
</if>
<if test="tAuditNodeProocess.domainId != null and tAuditNodeProocess.domainId.trim() != ''">
AND a.domain_id = #{tAuditNodeProocess.domainId}
</if>
<if test="tAuditNodeProocess.mainType != null and tAuditNodeProocess.mainType.trim() != ''">
AND a.main_type = #{tAuditNodeProocess.mainType}
</if>
<if test="tAuditNodeProocess.logoTitle != null and tAuditNodeProocess.logoTitle.trim() != ''">
AND a.logo_title = #{tAuditNodeProocess.logoTitle}
</if>
<if test="tAuditNodeProocess.nodeName != null and tAuditNodeProocess.nodeName.trim() != ''">
AND a.node_name = #{tAuditNodeProocess.nodeName}
</if>
<if test="tAuditNodeProocess.processName != null and tAuditNodeProocess.processName.trim() != ''">
AND a.process_name = #{tAuditNodeProocess.processName}
</if>
<if test="tAuditNodeProocess.parentProcessId != null and tAuditNodeProocess.parentProcessId.trim() != ''">
AND a.parent_process_id = #{tAuditNodeProocess.parentProcessId}
</if>
<if test="tAuditNodeProocess.deleteFlag != null and tAuditNodeProocess.deleteFlag.trim() != ''">
AND a.delete_flag = #{tAuditNodeProocess.deleteFlag}
</if>
<if test="tAuditNodeProocess.type != null and tAuditNodeProocess.type.trim() != ''">
AND a.type = #{tAuditNodeProocess.type}
</if>
<if test="tAuditNodeProocess.addSignParentNodeId != null and tAuditNodeProocess.addSignParentNodeId.trim() != ''">
AND a.add_sign_parent_node_id = #{tAuditNodeProocess.addSignParentNodeId}
</if>
<if test="tAuditNodeProocess.addSignDepartmentId != null and tAuditNodeProocess.addSignDepartmentId.trim() != ''">
AND a.add_sign_department_id = #{tAuditNodeProocess.addSignDepartmentId}
</if>
<if test="tAuditNodeProocess.domainName != null and tAuditNodeProocess.domainName.trim() != ''">
AND a.domain_name = #{tAuditNodeProocess.domainName}
</if>
<if test="tAuditNodeProocess.addSignApprovalMan != null and tAuditNodeProocess.addSignApprovalMan.trim() != ''">
AND a.add_sign_approval_man = #{tAuditNodeProocess.addSignApprovalMan}
</if>
<if test="tAuditNodeProocess.addSignApprovalManName != null and tAuditNodeProocess.addSignApprovalManName.trim() != ''">
AND a.add_sign_approval_man_name = #{tAuditNodeProocess.addSignApprovalManName}
</if>
</if>
</sql>
</mapper>
......@@ -30,6 +30,20 @@
<result property="auditUser" column="AUDIT_USER"/>
<result property="auditUserId" column="AUDIT_USER_ID"/>
</resultMap>
<resultMap id="tInsuranceUnpurchaseApplyExportMap"
type="com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchaseApplyVo">
<result property="deptNo" column="DEPT_NO"/>
<result property="deptName" column="DEPT_NAME"/>
<result property="createUserDeptName" column="CREATE_USER_DEPT_NAME"/>
<result property="reasonType" column="REASON_TYPE"/>
<result property="applyNo" column="APPLY_NO"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="status" column="STATUS"/>
<result property="auditUser" column="AUDIT_USER"/>
</resultMap>
<sql id="Base_Column_List">
a.ID, a.DEPT_ID, a.DEPT_NO, a.DEPT_NAME, a.CREATE_USER_DEPT_ID,
a.CREATE_USER_DEPT_NAME, a.REASON_TYPE, a.REASON_INFO, a.APPLY_NO,
......@@ -101,7 +115,7 @@
</select>
<!-- tInsuranceUnpurchaseApply简单分页查询 -->
<select id="getTInsuranceUnpurchaseApplyExportList" resultMap="tInsuranceUnpurchaseApplyMap">
<select id="getTInsuranceUnpurchaseApplyExportList" resultMap="tInsuranceUnpurchaseApplyExportMap">
SELECT
a.APPLY_NO,
a.DEPT_NAME,
......@@ -109,8 +123,8 @@
a.CREATE_NAME,
a.CREATE_USER_DEPT_NAME,
a.CREATE_TIME,
a.AUDIT_USER,
if(a.REASON_TYPE = '1','已购买社保','人员已离职') REASON_TYPE,
a.REASON_INFO,
CASE WHEN a.STATUS=0 THEN "草稿"
WHEN a.STATUS =1 THEN "待提交"
WHEN a.STATUS =2 THEN "待审核"
......@@ -119,8 +133,89 @@
ELSE a.STATUS END as "STATUS"
FROM t_insurance_unpurchase_apply a
<where>
1=1 and a.DELETE_FLAG = '0'
a.DELETE_FLAG = '0'
<include refid="tInsuranceUnpurchaseApply_where"/>
</where>
</select>
<select id="getAuditPage" resultMap="tInsuranceUnpurchaseApplyMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_insurance_unpurchase_apply a
left join t_approval_record r on a.id=r.domain_id
<where>
a.DELETE_FLAG='0' and r.approval_man= #{userId} and r.audit_type='0' and r.approval_result = '2' and r.delete_flag='0'
<include refid="tInsuranceUnpurchaseApply_where"/>
</where>
order by r.CREATE_TIME asc
</select>
<select id="getHistoryHandlePage" resultMap="tInsuranceUnpurchaseApplyMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_insurance_unpurchase_apply a
left join (
select min(approval_time) approval_time,domain_id,approval_man from t_approval_record
where approval_result in('0','1') and audit_type = '0' and delete_flag='0'
group by domain_id,approval_man
) r on a.id=r.domain_id
<where>
a.DELETE_FLAG='0' and r.approval_man= #{userId}
<include refid="tInsuranceUnpurchaseApply_where"/>
</where>
order by r.approval_time desc
</select>
<select id="getAuditCount" resultType="integer">
SELECT count(1) FROM t_insurance_unpurchase_apply a
left join t_approval_record r on a.id=r.domain_id
<where>
a.DELETE_FLAG='0' and r.approval_man= #{userId} and r.audit_type='0' and r.approval_result = '2' and r.delete_flag='0'
</where>
</select>
<select id="getHistoryHandleCount" resultType="integer">
SELECT count(1) FROM t_insurance_unpurchase_apply a
left join (
select min(approval_time) approval_time,domain_id,approval_man from t_approval_record
where approval_result in('0','1') and audit_type = '0' and delete_flag='0'
group by domain_id,approval_man
) r on a.id=r.domain_id
<where>
a.DELETE_FLAG='0' and r.approval_man= #{userId}
</where>
</select>
<select id="getCopyPage" resultMap="tInsuranceUnpurchaseApplyMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_insurance_unpurchase_apply a
left join (
select min(create_time) create_time,domain_id,audit_user_id from t_audit_copy_info
where audit_type = '0' and delete_flag = '0'
group by domain_id,audit_user_id
) r on a.id=r.domain_id
<where>
a.DELETE_FLAG='0' and r.audit_user_id= #{userId}
<include refid="tInsuranceUnpurchaseApply_where"/>
</where>
order by r.create_time desc
</select>
<!-- 获取当日最大的编码 -->
<select id="getMaxInusuranceCode" resultType="java.lang.String">
SELECT ifnull(max(right (e.APPLY_NO, 3)), 0) EMP_CODE
FROM t_insurance_unpurchase_apply e
where e.DELETE_FLAG = '0'
and e.CREATE_TIME > DATE_FORMAT(now(), '%Y-%m-%d')
</select>
<!-- 获取当日最大的编码 -->
<select id="getMaxInusuranceDetailCode" resultType="java.lang.String">
SELECT ifnull(max(right (e.APPLY_NO_DETAIL, 5)), 0) EMP_CODE
FROM t_insurance_unpurchase_person e
where e.CREATE_TIME > DATE_FORMAT(now(), '%Y-%m-%d')
</select>
</mapper>
......@@ -31,6 +31,23 @@
<result property="division" column="DIVISION"/>
<result property="insuranceFlag" column="INSURANCE_FLAG"/>
</resultMap>
<resultMap id="tInsuranceUnpurchasePersonExportMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.TInsuranceUnpurchasePersonVo">
<result property="empName" column="EMP_NAME"/>
<result property="empIdcardNo" column="EMP_IDCARD_NO"/>
<result property="applyNoDetail" column="APPLY_NO_DETAIL"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="deptName" column="DEPT_NAME"/>
<result property="reasonType" column="REASON_TYPE"/>
<result property="applyNo" column="APPLY_NO"/>
<result property="socialStatus" column="SOCIAL_STATUS"/>
<result property="salaryNum" column="SALARY_NUM"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="newLine" column="NEW_LINE"/>
<result property="division" column="DIVISION"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.PARNET_ID,
......@@ -116,7 +133,41 @@
<include refid="Base_Column_List"/>
FROM t_insurance_unpurchase_person a
<where>
1=1
1=1 and STATUS = '3'
<include refid="tInsuranceUnpurchasePerson_where"/>
</where>
</select>
<!--tInsuranceUnpurchasePerson导出条数查询-->
<select id="getTInsuranceUnpurchaseInfoExportCount" resultType="java.lang.Long">
SELECT
count(1)
FROM t_insurance_unpurchase_person a
<where>
1=1 and STATUS = '3'
<include refid="tInsuranceUnpurchasePerson_where"/>
</where>
</select>
<!--tInsuranceUnpurchasePerson导出查询-->
<select id="getTInsuranceUnpurchaseInfoExportList" resultMap="tInsuranceUnpurchasePersonExportMap">
SELECT
APPLY_NO_DETAIL,
APPLY_NO,
DEPT_NAME,
DEPT_NO,
DIVISION,
NEW_LINE,
EMP_NAME,
EMP_IDCARD_NO,
if(a.REASON_TYPE = '1','已购买社保','人员已离职') REASON_TYPE,
if(a.SOCIAL_STATUS='0','是','否') SOCIAL_STATUS,
SALARY_NUM,
CREATE_NAME,
CREATE_TIME
FROM t_insurance_unpurchase_person a
<where>
1=1 and STATUS = '3'
<include refid="tInsuranceUnpurchasePerson_where"/>
</where>
</select>
......
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>yifu</artifactId>
<groupId>com.yifu.cloud.plus.v1</groupId>
<version>1.0.0</version>
</parent>
<artifactId>yifu-process</artifactId>
<description>审批流程</description>
<packaging>pom</packaging>
<!--项目子模块-->
<modules>
<module>yifu-process-api</module>
<module>yifu-process-biz</module>
</modules>
</project>
This diff is collapsed.
package com.yifu.cloud.plus.v1.yifu.process.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @program: yifu_cloud
* @description:
* @author: wangdayu
* @create: 2023-10-25 17:10
* @since:
*/
@Data
public class CheckNodeVo implements Serializable {
private String PrewNode;
private String NextNode;
private String ProcessId;
private String NodeRouteId;
private String Field;
private String LogoTitle;
}
This diff is collapsed.
#!/usr/bin/env bash
mvn clean package -Pprd -Dmaven.test.skip=true docker:build -DpushImage
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment