Commit 008be3f9 authored by hongguangwu's avatar hongguangwu

MVP1.7.16-法大大

parent b44684ad
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
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;
/**
* 法大大编辑日志表
*
* @author hgw
* @date 2025-10-09 10:39:43
*/
@Data
@TableName("t_fasc_edit_log")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "法大大编辑日志表")
public class TFascEditLog extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 关联主表ID
*/
@ExcelAttribute(name = "关联主表ID", isNotEmpty = true, errorInfo = "关联主表ID不能为空", maxLength = 32)
@NotBlank(message = "关联主表ID不能为空")
@Length(max = 32, message = "关联主表ID不能超过32个字符")
@ExcelProperty("关联主表ID")
@Schema(description = "关联主表ID")
private String mainId;
/**
* 类型1模板2映射
*/
@ExcelAttribute(name = "类型1模板2映射", isNotEmpty = true, errorInfo = "类型1模板2映射不能为空", maxLength = 1)
@NotBlank(message = "类型1模板2映射不能为空")
@Length(max = 1, message = "类型1模板2映射不能超过1个字符")
@ExcelProperty("类型1模板2映射")
@Schema(description = "类型1模板2映射")
private String mainType;
/**
* 编辑内容
*/
@ExcelAttribute(name = "编辑内容", isNotEmpty = true, errorInfo = "编辑内容不能为空", maxLength = 100)
@NotBlank(message = "编辑内容不能为空")
@Length(max = 100, message = "编辑内容不能超过100个字符")
@ExcelProperty("编辑内容")
@Schema(description = "编辑内容")
private String editContent;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
* 法大大专业版皖信字段表
*
* @author hgw
* @date 2025-09-30 16:29:27
*/
@Data
@TableName("t_fasc_hr_field")
@Schema(description = "法大大专业版皖信字段表")
public class TFascHrField {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 皖信字段
*/
@ExcelAttribute(name = "皖信字段", maxLength = 100)
@Length(max = 100, message = "皖信字段不能超过100个字符")
@ExcelProperty("皖信字段")
@Schema(description = "皖信字段")
private String hrField;
/**
* 皖信字段ID
*/
@ExcelAttribute(name = "皖信字段ID", maxLength = 100)
@Length(max = 100, message = "皖信字段ID不能超过100个字符")
@ExcelProperty("皖信字段ID")
@Schema(description = "皖信字段ID")
private String hrFieldId;
/**
* 合同类型:标准合同、劳务协议、实习协议、非全日制、劳务派遣合同
*/
@ExcelAttribute(name = "合同类型", maxLength = 20)
@Length(max = 20, message = "合同类型不能超过20个字符")
@ExcelProperty("合同类型")
@Schema(description = "合同类型")
private String contractType;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
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;
/**
* 法大大专业版推送日志表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
@TableName("t_fasc_push_log")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "法大大专业版推送日志表")
public class TFascPushLog extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 业务参考号
*/
@ExcelAttribute(name = "业务参考号", isNotEmpty = true, errorInfo = "业务参考号不能为空", maxLength = 32)
@NotBlank(message = "业务参考号不能为空")
@Length(max = 32, message = "业务参考号不能超过32个字符")
@ExcelProperty("业务参考号")
@Schema(description = "业务参考号")
private String transReferenceId;
/**
* 返回的任务ID
*/
@ExcelAttribute(name = "返回的任务ID", maxLength = 32)
@Length(max = 32, message = "返回的任务ID不能超过32个字符")
@ExcelProperty("返回的任务ID")
@Schema(description = "返回的任务ID")
private String signTaskId;
/**
* 推送信息
*/
@ExcelAttribute(name = "推送信息")
@ExcelProperty("推送信息")
@Schema(description = "推送信息")
private String pushData;
/**
* 返回信息
*/
@ExcelAttribute(name = "返回信息")
@ExcelProperty("返回信息")
@Schema(description = "返回信息")
private String returnData;
/**
* 合同ID
*/
@ExcelAttribute(name = "合同ID", maxLength = 32)
@Length(max = 32, message = "合同ID不能超过32个字符")
@ExcelProperty("合同ID")
@Schema(description = "合同ID")
private String contractId;
/**
* 任务状态0推送中1成功2失败
*/
@ExcelAttribute(name = "任务状态0推送中1成功2失败", maxLength = 2)
@Length(max = 2, message = "任务状态0推送中1成功2失败不能超过2个字符")
@ExcelProperty("任务状态0推送中1成功2失败")
@Schema(description = "任务状态0推送中1成功2失败")
private String taskStatus;
/**
* 查询关键字
*/
@ExcelAttribute(name = "查询关键字", maxLength = 50)
@Length(max = 50, message = "查询关键字不能超过50个字符")
@ExcelProperty("查询关键字")
@Schema(description = "查询关键字")
private String typeKey;
/**
* 类型
*/
@ExcelAttribute(name = "类型", maxLength = 20)
@Length(max = 20, message = "类型不能超过20个字符")
@ExcelProperty("类型")
@Schema(description = "类型")
private String typeName;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
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.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
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 hgw
* @date 2025-09-30 16:29:28
*/
@Data
@TableName("t_fasc_template")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "法大大专业版模版表")
public class TFascTemplate extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 公司主体
*/
@ExcelAttribute(name = "公司主体", maxLength = 100)
@Length(max = 100, message = "公司主体不能超过100个字符")
@ExcelProperty("公司主体")
@Schema(description = "公司主体")
private String companyName;
/**
* 签署方
*/
@ExcelAttribute(name = "签署方", maxLength = 100)
@Length(max = 100, message = "签署方不能超过100个字符")
@ExcelProperty("签署方")
@Schema(description = "签署方")
private String signName;
/**
* 签署方Openid
*/
@ExcelAttribute(name = "签署方Openid", maxLength = 100)
@Length(max = 100, message = "签署方Openid不能超过100个字符")
@ExcelProperty("签署方Openid")
@Schema(description = "签署方Openid")
private String signOpenId;
/**
* 模版ID
*/
@ExcelAttribute(name = "模版ID", isNotEmpty = true, errorInfo = "模版ID不能为空", maxLength = 100)
@NotBlank(message = "模版ID不能为空")
@Length(max = 100, message = "模版ID不能超过100个字符")
@ExcelProperty("模版ID")
@Schema(description = "模版ID")
private String signTemplateId;
/**
* 模版名称
*/
@ExcelAttribute(name = "模版名称", maxLength = 100)
@Length(max = 100, message = "模版名称不能超过100个字符")
@ExcelProperty("模版名称")
@Schema(description = "模版名称")
private String signTemplateName;
/**
* 模版状态
* invalid: 停用;valid: 启用;creating:草稿
*/
@ExcelAttribute(name = "模版状态", maxLength = 20)
@Length(max = 20, message = "模版状态不能超过20个字符")
@ExcelProperty("模版状态")
@Schema(description = "模版状态")
private String signTemplateStatus;
/**
* 创建人
*/
@ExcelAttribute(name = "创建人", maxLength = 100)
@Length(max = 100, message = "创建人不能超过100个字符")
@ExcelProperty("创建人")
@Schema(description = "创建人")
private String creatorMemberName;
/**
* 法大大模版创建时间
*/
@ExcelAttribute(name = "法大大模版创建时间", isDate = true)
@ExcelProperty("法大大模版创建时间")
@Schema(description = "法大大模版创建时间")
private LocalDateTime fascCreateTime;
/**
* 最新更新时间
*/
@ExcelAttribute(name = "最新更新时间", isDate = true)
@ExcelProperty("最新更新时间")
@Schema(description = "最新更新时间")
private LocalDateTime fascUpdateTime;
/**
* 关联用章名称
*/
@ExcelAttribute(name = "关联用章名称", maxLength = 100)
@Length(max = 100, message = "关联用章名称不能超过100个字符")
@ExcelProperty("关联用章名称")
@Schema(description = "关联用章名称")
private String zhangName;
/**
* 是否免验证签0否1是
*/
@ExcelAttribute(name = "是否免验证签0否1是", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@Length(max = 1, message = "是否免验证签0否1是不能超过1个字符")
@ExcelProperty("是否免验证签0否1是")
@Schema(description = "是否免验证签0否1是")
private String isMianQian;
/**
* 皖信合同类型
*/
@ExcelAttribute(name = "皖信合同类型", maxLength = 32)
@Length(max = 32, message = "皖信合同类型不能超过32个字符")
@ExcelProperty("皖信合同类型")
@Schema(description = "皖信合同类型")
private String contractType;
/**
* 必填是否已配置0未配置1部分配置2已配置
*/
@ExcelAttribute(name = "必填是否已配置", maxLength = 1, isDataId = true, readConverterExp = "0=未配置,1=部分配置,2=已配置")
@Length(max = 1, message = "必填是否已配置不能超过1个字符")
@ExcelProperty("必填是否已配置0未配置1部分配置2已配置")
@Schema(description = "必填是否已配置0未配置1部分配置2已配置")
private String isMustEdit;
@TableField(exist = false)
@ExcelProperty("当前必填已配置数量")
private String isMustNow;
@TableField(exist = false)
@ExcelProperty("当前必填总数量")
private String isMustAll;
/**
* 是否删除0否1是
*/
@ExcelAttribute(name = "是否删除0否1是", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@Length(max = 1, message = "是否删除0否1是不能超过1个字符")
@ExcelProperty("是否删除0否1是")
@Schema(description = "是否删除0否1是")
private String deleteFlag;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
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;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
@TableName("t_fasc_template_detail")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "法大大专业版模板映射表")
public class TFascTemplateDetail extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 模板ID
*/
@ExcelAttribute(name = "模板ID", isNotEmpty = true, errorInfo = "模板ID不能为空", maxLength = 100)
@NotBlank(message = "模板ID不能为空")
@Length(max = 100, message = "模板ID不能超过100个字符")
@ExcelProperty("模板ID")
@Schema(description = "模板ID")
private String signTemplateId;
/**
* 法大大字段
*/
@ExcelAttribute(name = "法大大字段", maxLength = 100)
@Length(max = 100, message = "法大大字段不能超过100个字符")
@ExcelProperty("法大大字段")
@Schema(description = "法大大字段")
private String fascField;
/**
* 法大大字段ID
*/
@ExcelAttribute(name = "法大大字段ID", maxLength = 100)
@Length(max = 100, message = "法大大字段ID不能超过100个字符")
@ExcelProperty("法大大字段ID")
@Schema(description = "法大大字段ID")
private String fascFieldId;
/**
* 是否必填0否1是
*/
@ExcelAttribute(name = "是否必填0否1是", maxLength = 1 , isDataId = true, readConverterExp = "0=否,1=是")
@Length(max = 1, message = "是否必填0否1是不能超过1个字符")
@ExcelProperty("是否必填0否1是")
@Schema(description = "是否必填0否1是")
private String isMust;
/**
* 是否删除0否1是
*/
@ExcelAttribute(name = "是否删除0否1是", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@Length(max = 1, message = "是否删除0否1是不能超过1个字符")
@ExcelProperty("是否删除0否1是")
@Schema(description = "是否删除0否1是")
private String deleteFlag;
/**
* 皖信字段
*/
@ExcelAttribute(name = "皖信字段", maxLength = 100)
@Length(max = 100, message = "皖信字段不能超过100个字符")
@ExcelProperty("皖信字段")
@Schema(description = "皖信字段")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String hrField;
/**
* 皖信字段ID
*/
@ExcelAttribute(name = "皖信字段ID", maxLength = 100)
@Length(max = 100, message = "皖信字段ID不能超过100个字符")
@ExcelProperty("皖信字段ID")
@Schema(description = "皖信字段ID")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String hrFieldId;
/**
* 是否已配置0未配置1已配置
*/
@ExcelAttribute(name = "是否已配置", maxLength = 3, isDataId = true, readConverterExp = "0=未配置,1=已配置")
@Length(max = 3, message = "是否已配置不能超过3个字符")
@ExcelProperty("是否已配置")
@Schema(description = "是否已配置0未配置1已配置")
private String isEdit;
@TableField(exist = false)
@Schema(description = "模版名称")
private String signTemplateName;
// 模板状态: invalid: 停用;valid: 启用;creating:草稿
@TableField(exist = false)
@Schema(description = "模版状态")
private String signTemplateStatus;
@TableField(exist = false)
@Schema(description = "对应皖信合同类型")
private String contractType;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
* 导出-法大大专业版模版映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
@ColumnWidth(10)
public class TFascTemplateDetailExportVo {
@ExcelAttribute(name = "法大大模版名称")
@ExcelProperty("法大大模版名称")
private String signTemplateName;
@ExcelAttribute(name = "模版ID", isNotEmpty = true, errorInfo = "模版ID不能为空", maxLength = 100)
@ExcelProperty("模版ID")
private String signTemplateId;
@ExcelAttribute(name = "模版状态")
@ExcelProperty("模版状态")
private String signTemplateStatus;
/**
* 法大大字段
*/
@ExcelAttribute(name = "法大大字段", maxLength = 100)
@Length(max = 100, message = "法大大字段不能超过100个字符")
@ExcelProperty("法大大字段")
@Schema(description = "法大大字段")
private String fascField;
/**
* 法大大字段ID
*/
@ExcelAttribute(name = "法大大字段ID", maxLength = 100)
@Length(max = 100, message = "法大大字段ID不能超过100个字符")
@ExcelProperty("法大大字段ID")
@Schema(description = "法大大字段ID")
private String fascFieldId;
/**
* 是否必填0否1是
*/
@ExcelAttribute(name = "是否必填", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@ExcelProperty("是否必填")
private String isMust;
/**
* 是否删除0否1是
*/
@ExcelAttribute(name = "是否删除", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@ExcelProperty("是否删除")
private String deleteFlag;
@ExcelAttribute(name = "对应皖信合同类型")
@ExcelProperty("对应皖信合同类型")
private String contractType;
/**
* 皖信字段
*/
@ExcelAttribute(name = "皖信字段", maxLength = 100)
@ExcelProperty("皖信字段")
private String hrField;
/**
* 皖信字段ID
*/
@ExcelAttribute(name = "皖信字段ID", maxLength = 100)
@ExcelProperty("皖信字段ID")
private String hrFieldId;
/**
* 是否已配置0未配置1已配置
*/
@ExcelAttribute(name = "是否已配置", maxLength = 3, isDataId = true, readConverterExp = "0=未配置,1=已配置")
@ExcelProperty("是否已配置")
private String isEdit;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
public class TFascTemplateDetailSearchVo extends TFascTemplateDetail {
/**
* 多选导出或删除等操作
*/
@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;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
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;
/**
* 法大大专业版模版映射表_更新VO
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
public class TFascTemplateDetailUpdateVo extends RowIndex implements Serializable {
//法大大模版名称、模版ID、法大大字段、法大大字段ID、对应皖信合同类型(同一个模版ID只能对应一种类型)、对应皖信字段、对应皖信字段ID
//法大大模版名称、模版ID、法大大字段、法大大字段ID、对应皖信字段、对应皖信字段ID
// 对应皖信合同类型——去掉该字段,影响更新效果(填了不校验,也不更新,会产生误解) 2025-09-30 17:32
/**
* 模版名称
*/
@NotBlank(message = "法大大模版名称 不能为空")
@Length(max = 100, message = "法大大模版名称 不能超过100 个字符")
@ExcelAttribute(isNotEmpty = true, errorInfo = "法大大模版名称 不能为空", name = "法大大模版名称", maxLength = 100)
@Schema(description = "法大大模版名称")
@ExcelProperty("法大大模版名称")
private String signTemplateName;
/**
* 模版ID
*/
@NotBlank(message = "模版ID 不能为空")
@Length(max = 100, message = "模版ID 不能超过100 个字符")
@ExcelAttribute(name = "模版ID", isNotEmpty = true, errorInfo = "模版ID 不能为空", maxLength = 100)
@Schema(description = "模版ID")
@ExcelProperty("模版ID")
private String signTemplateId;
/**
* 法大大字段
*/
@NotBlank(message = "法大大字段 不能为空")
@Length(max = 100, message = "法大大字段 不能超过100 个字符")
@ExcelAttribute(isNotEmpty = true, errorInfo = "法大大字段 不能为空", name = "法大大字段", maxLength = 100)
@Schema(description = "法大大字段")
@ExcelProperty("法大大字段")
private String fascField;
/**
* 法大大字段ID
*/
@NotBlank(message = "法大大字段ID 不能为空")
@Length(max = 100, message = "法大大字段ID 不能超过100 个字符")
@ExcelAttribute(isNotEmpty = true, errorInfo = "法大大字段ID 不能为空", name = "法大大字段ID", maxLength = 100)
@Schema(description = "法大大字段ID")
@ExcelProperty("法大大字段ID")
private String fascFieldId;
/**
* 对应皖信字段
*/
@NotBlank(message = "对应皖信字段 不能为空")
@Length(max = 100, message = "对应皖信字段 不能超过100 个字符")
@ExcelAttribute(isNotEmpty = true, errorInfo = "对应皖信字段 不能为空", name = "对应皖信字段", maxLength = 100)
@Schema(description = "对应皖信字段")
@ExcelProperty("对应皖信字段")
private String hrField;
/**
* 对应皖信字段ID
*/
@NotBlank(message = "对应皖信字段ID 不能为空")
@Length(max = 100, message = "对应皖信字段ID 不能超过100 个字符")
@ExcelAttribute(isNotEmpty = true, errorInfo = "对应皖信字段ID 不能为空", name = "对应皖信字段ID", maxLength = 100)
@Schema(description = "对应皖信字段ID")
@ExcelProperty("对应皖信字段ID")
private String hrFieldId;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 导出-法大大专业版模版表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
@ColumnWidth(10)
public class TFascTemplateExportVo {
// 公司主体、签署方、签署方Openid、模版ID、模版名称、
/**
* 公司主体
*/
@ExcelAttribute(name = "公司主体", maxLength = 100)
@Length(max = 100, message = "公司主体不能超过100个字符")
@ExcelProperty("公司主体")
@Schema(description = "公司主体")
private String companyName;
/**
* 签署方
*/
@ExcelAttribute(name = "签署方", maxLength = 100)
@Length(max = 100, message = "签署方不能超过100个字符")
@ExcelProperty("签署方")
@Schema(description = "签署方")
private String signName;
/**
* 签署方Openid
*/
@ExcelAttribute(name = "签署方Openid", maxLength = 100)
@Length(max = 100, message = "签署方Openid不能超过100个字符")
@ExcelProperty("签署方Openid")
@Schema(description = "签署方Openid")
private String signOpenId;
/**
* 模版ID
*/
@ExcelAttribute(name = "模版ID", isNotEmpty = true, errorInfo = "模版ID不能为空", maxLength = 100)
@NotBlank(message = "模版ID不能为空")
@Length(max = 100, message = "模版ID不能超过100个字符")
@ExcelProperty("模版ID")
@Schema(description = "模版ID")
private String signTemplateId;
/**
* 模版名称
*/
@ExcelAttribute(name = "模版名称", maxLength = 100)
@Length(max = 100, message = "模版名称不能超过100个字符")
@ExcelProperty("模版名称")
@Schema(description = "模版名称")
private String signTemplateName;
// 创建人、最新更新时间、关联用章名称、模版状态、是否免验证签、皖信合同类型、必填是否已配置
/**
* 创建人
*/
@ExcelAttribute(name = "创建人", maxLength = 100)
@Length(max = 100, message = "创建人不能超过100个字符")
@ExcelProperty("创建人")
@Schema(description = "创建人")
private String creatorMemberName;
/**
* 最新更新时间
*/
@ExcelAttribute(name = "最新更新时间", isDate = true)
@ExcelProperty("最新更新时间")
@Schema(description = "最新更新时间")
private String fascUpdateTime;
/**
* 关联用章名称
*/
@ExcelAttribute(name = "关联用章名称", maxLength = 100)
@Length(max = 100, message = "关联用章名称不能超过100个字符")
@ExcelProperty("关联用章名称")
@Schema(description = "关联用章名称")
private String zhangName;
/**
* 模版状态
* invalid: 停用;valid: 启用;creating:草稿
*/
@ExcelAttribute(name = "模版状态", maxLength = 20, isDataId = true, readConverterExp = "invalid=停用,valid=启用,creating=草稿")
@Length(max = 20, message = "模版状态不能超过20个字符")
@ExcelProperty("模版状态")
@Schema(description = "模版状态")
private String signTemplateStatus;
/**
* 是否免验证签0否1是
*/
@ExcelAttribute(name = "是否免验证签", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
@Length(max = 1, message = "是否免验证签不能超过1个字符")
@ExcelProperty("是否免验证签")
@Schema(description = "是否免验证签")
private String isMianQian;
/**
* 皖信合同类型
*/
@ExcelAttribute(name = "皖信合同类型", maxLength = 32)
@Length(max = 32, message = "皖信合同类型不能超过32个字符")
@ExcelProperty("皖信合同类型")
@Schema(description = "皖信合同类型")
private String contractType;
/**
* 必填是否已配置0未配置1部分配置2已配置
*/
@ExcelAttribute(name = "必填是否已配置", maxLength = 1, isDataId = true, readConverterExp = "0=未配置,1=部分配置,2=已配置")
@Length(max = 1, message = "必填是否已配置不能超过1个字符")
@ExcelProperty("必填是否已配置")
@Schema(description = "必填是否已配置")
private String isMustEdit;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 法大大专业版模板表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
public class TFascTemplateSearchVo extends TFascTemplate {
/**
* 多选导出或删除等操作
*/
@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;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
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;
/**
* 法大大专业版模版表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Data
public class TFascTemplateUpdateVo extends RowIndex implements Serializable {
/**
* 模版ID
*/
@NotBlank(message = "模版ID 不能为空")
@Length(max = 100, message = "模版ID 不能超过100 个字符")
@ExcelAttribute(name = "模版ID", isNotEmpty = true, errorInfo = "模版ID 不能为空", maxLength = 100)
@Schema(description = "模版ID")
@ExcelProperty("模版ID")
private String signTemplateId;
/**
* 模版名称
*/
@Length(max = 100, message = "模版名称 不能超过100 个字符")
@ExcelAttribute(name = "模版名称", isNotEmpty = true, errorInfo = "模版名称 不能为空", maxLength = 100)
@Schema(description = "模版名称")
@ExcelProperty("模版名称")
private String signTemplateName;
/**
* 皖信合同类型
*/
@Length(max = 32, message = "皖信合同类型 不能超过32 个字符")
@ExcelAttribute(name = "皖信合同类型", isNotEmpty = true, errorInfo = "皖信合同类型 不能为空", maxLength = 32)
@Schema(description = "皖信合同类型")
@ExcelProperty("皖信合同类型")
private String contractType;
}
...@@ -2,14 +2,14 @@ package com.yifu.cloud.plus.v1.yifu.archives.controller; ...@@ -2,14 +2,14 @@ package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.fasc.open.api.exception.ApiException; import com.fasc.open.api.exception.ApiException;
import com.yifu.cloud.plus.v1.yifu.archives.config.FddConfigProperties;
import com.yifu.cloud.plus.v1.yifu.archives.entity.FddReqLog; import com.yifu.cloud.plus.v1.yifu.archives.entity.FddReqLog;
import com.yifu.cloud.plus.v1.yifu.archives.service.*; import com.yifu.cloud.plus.v1.yifu.archives.service.*;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException; 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.util.R;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprUpmsProperties;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -24,11 +24,11 @@ import java.util.Map; ...@@ -24,11 +24,11 @@ import java.util.Map;
* @auther huyc * @auther huyc
* @date 2022/6/29 * @date 2022/6/29
*/ */
@EnableConfigurationProperties({DaprUpmsProperties.class})
@RestController @RestController
@RequiredArgsConstructor
@RequestMapping("/fasc") @RequestMapping("/fasc")
@Tag(name = "法大大专业版接口") @Tag(name = "法大大专业版接口")
@Slf4j
@EnableConfigurationProperties(FddConfigProperties.class)
public class FascController { public class FascController {
@Autowired @Autowired
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascEditLogService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
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.List;
/**
* 法大大编辑日志表
*
* @author hgw
* @date 2025-10-09 10:39:43
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tfasceditlog")
@Tag(name = "法大大编辑日志表管理")
public class TFascEditLogController {
private final TFascEditLogService tFascEditLogService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tFascEditLog 法大大编辑日志表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TFascEditLog>> getTFascEditLogPage(Page<TFascEditLog> page, TFascEditLog tFascEditLog) {
return new R<>(tFascEditLogService.getTFascEditLogPage(page, tFascEditLog));
}
/**
* 不分页查询
*
* @param tFascEditLog 法大大编辑日志表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TFascEditLog>> getTFascEditLogList(@RequestBody TFascEditLog tFascEditLog) {
return R.ok(tFascEditLogService.getTFascEditLogList(tFascEditLog));
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascHrField;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascHrFieldService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
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.List;
/**
* 法大大专业版皖信字段表
*
* @author hgw
* @date 2025-09-30 16:29:27
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tfaschrfield")
@Tag(name = "法大大专业版皖信字段表管理")
public class TFascHrFieldController {
private final TFascHrFieldService tFascHrFieldService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tFascHrField 法大大专业版皖信字段表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TFascHrField>> getTFascHrFieldPage(Page<TFascHrField> page, TFascHrField tFascHrField) {
return new R<>(tFascHrFieldService.getTFascHrFieldPage(page, tFascHrField));
}
/**
* 不分页查询
*
* @param tFascHrField 法大大专业版皖信字段表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TFascHrField>> getTFascHrFieldNoPage(@RequestBody TFascHrField tFascHrField) {
return R.ok(tFascHrFieldService.noPageDiy(tFascHrField));
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascTemplateService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateSearchVo;
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.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 法大大专业版模板表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tfasctemplate")
@Tag(name = "法大大专业版模板表管理")
public class TFascTemplateController {
private final TFascTemplateService tFascTemplateService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tFascTemplate 法大大专业版模板表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TFascTemplate>> getTFascTemplatePage(Page<TFascTemplate> page, TFascTemplateSearchVo tFascTemplate) {
return new R<>(tFascTemplateService.getTFascTemplatePage(page, tFascTemplate));
}
/**
* 不分页查询
*
* @param tFascTemplate 法大大专业版模板表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TFascTemplate>> getTFascTemplateNoPage(@RequestBody TFascTemplateSearchVo tFascTemplate) {
return R.ok(tFascTemplateService.noPageDiy(tFascTemplate));
}
/**
* 通过id查询法大大专业版模板表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('archives_tfasctemplate_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('archives_tfasctemplate_get')")
public R<TFascTemplate> getById(@PathVariable("id") String id) {
return R.ok(tFascTemplateService.getById(id));
}
/**
* 修改法大大专业版模板表
*
* @param tFascTemplate 法大大专业版模板表
* @return R
*/
@Operation(summary = "修改法大大专业版模板表", description = "修改法大大专业版模板表:hasPermission('archives_tfasctemplate_edit')")
@SysLog("修改法大大专业版模板表")
@PutMapping
@PreAuthorize("@pms.hasPermission('archives_tfasctemplate_edit')")
public R<Boolean> updateById(@RequestBody TFascTemplate tFascTemplate) {
return R.ok(tFascTemplateService.updateById(tFascTemplate));
}
/**
* 法大大专业版模板表 批量维护合同类型
*
* @author hgw
* @date 2025-09-30 16:29:28
**/
@SneakyThrows
@Operation(description = "批量维护合同类型 hasPermission('archives_tfasctemplate-batch-update')")
@SysLog("批量维护合同类型")
@PostMapping("/batchUpdate")
public R<List<ErrorMessage>> batchUpdate(@RequestBody MultipartFile file) {
return tFascTemplateService.batchUpdate(file.getInputStream());
}
/**
* 法大大专业版模板表 批量导出
*
* @author hgw
* @date 2025-09-30 16:29:28
**/
@Operation(description = "导出法大大专业版模板表 hasPermission('archives_tfasctemplate-export')")
@PostMapping("/export")
public void export(HttpServletResponse response, @RequestBody TFascTemplateSearchVo searchVo) {
tFascTemplateService.listExport(response, searchVo);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascTemplateDetailService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailSearchVo;
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.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tfasctemplatedetail")
@Tag(name = "法大大专业版模板映射表管理")
public class TFascTemplateDetailController {
private final TFascTemplateDetailService tFascTemplateDetailService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TFascTemplateDetail>> getTFascTemplateDetailPage(Page<TFascTemplateDetail> page, TFascTemplateDetailSearchVo tFascTemplateDetail) {
return new R<>(tFascTemplateDetailService.getTFascTemplateDetailPage(page, tFascTemplateDetail));
}
/**
* @Description: 重新刷新主模板表的必填是否已填
* @Author: hgw
* @Date: 2025/10/10 16:33
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation(description = "重新刷新主模板表的必填是否已填")
@SysLog(value = "重新刷新主模板表的必填是否已填")
@GetMapping("/initFascTemplateIsMust")
public R<String> initFascTemplateIsMust(@RequestParam(required = false) String templateId) {
return tFascTemplateDetailService.initFascTemplateIsMust(templateId);
}
/**
* 不分页查询
*
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TFascTemplateDetail>> getTFascTemplateDetailNoPage(@RequestBody TFascTemplateDetailSearchVo tFascTemplateDetail) {
return R.ok(tFascTemplateDetailService.noPageDiy(tFascTemplateDetail));
}
/**
* 通过id查询法大大专业版模板映射表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('archives_tfasctemplatedetail_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('archives_tfasctemplatedetail_get')")
public R<TFascTemplateDetail> getById(@PathVariable("id") String id) {
return R.ok(tFascTemplateDetailService.getById(id));
}
/**
* 修改法大大专业版模板映射表
*
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return R
*/
@Operation(summary = "修改法大大专业版模板映射表", description = "修改法大大专业版模板映射表:hasPermission('archives_tfasctemplatedetail_edit')")
@SysLog("修改法大大专业版模板映射表")
@PutMapping
@PreAuthorize("@pms.hasPermission('archives_tfasctemplatedetail_edit')")
public R<Boolean> updateById(@RequestBody TFascTemplateDetail tFascTemplateDetail) {
return R.ok(tFascTemplateDetailService.updateById(tFascTemplateDetail));
}
/**
* 法大大专业版模板映射表 批量维护
*
* @author hgw
* @date 2025-09-30 16:29:28
**/
@SneakyThrows
@Operation(description = "批量维护法大大专业版模板映射表 hasPermission('archives_tfasctemplatedetail-batch-update')")
@SysLog("批量维护法大大专业版模板映射表")
@PostMapping("/batchUpdateFascDetail")
public R<List<ErrorMessage>> batchUpdateFascDetail(@RequestBody MultipartFile file) {
return tFascTemplateDetailService.batchUpdateFascDetail(file.getInputStream());
}
/**
* 法大大专业版模板映射表 批量导出
*
* @author hgw
* @date 2025-09-30 16:29:28
**/
@Operation(description = "导出法大大专业版模板映射表 hasPermission('archives_tfasctemplatedetail-export')")
@PostMapping("/export")
@SysLog("导出法大大专业版模板映射表")
public void export(HttpServletResponse response, @RequestBody TFascTemplateDetailSearchVo searchVo) {
tFascTemplateDetailService.listExport(response, searchVo);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
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.archives.entity.TFascEditLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 法大大编辑日志表
*
* @author hgw
* @date 2025-10-09 10:39:43
*/
@Mapper
public interface TFascEditLogMapper extends BaseMapper<TFascEditLog> {
/**
* 法大大编辑日志表简单分页查询
*
* @param tFascEditLog 法大大编辑日志表
* @return
*/
IPage<TFascEditLog> getTFascEditLogPage(Page<TFascEditLog> page, @Param("tFascEditLog") TFascEditLog tFascEditLog);
List<TFascEditLog> getTFascEditLogList(@Param("tFascEditLog") TFascEditLog tFascEditLog);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascHrField;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 法大大专业版皖信字段表
*
* @author hgw
* @date 2025-09-30 16:29:27
*/
@Mapper
public interface TFascHrFieldMapper extends BaseMapper<TFascHrField> {
/**
* 法大大专业版皖信字段表简单分页查询
* @param tFascHrField 法大大专业版皖信字段表
* @return
*/
IPage<TFascHrField> getTFascHrFieldPage(Page<TFascHrField> page, @Param("tFascHrField") TFascHrField tFascHrField);
List<TFascHrField> getTFascHrFieldList(@Param("tFascHrField") TFascHrField tFascHrField);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascPushLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 法大大专业版推送日志表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Mapper
public interface TFascPushLogMapper extends BaseMapper<TFascPushLog> {
/**
* 法大大专业版推送日志表简单分页查询
* @param tFascPushLog 法大大专业版推送日志表
* @return
*/
IPage<TFascPushLog> getTFascPushLogPage(Page<TFascPushLog> page, @Param("tFascPushLog") TFascPushLog tFascPushLog);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailExportVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Mapper
public interface TFascTemplateDetailMapper extends BaseMapper<TFascTemplateDetail> {
/**
* 法大大专业版模板映射表简单分页查询
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
IPage<TFascTemplateDetail> getTFascTemplateDetailPage(Page<TFascTemplateDetail> page, @Param("tFascTemplateDetail") TFascTemplateDetail tFascTemplateDetail);
List<TFascTemplateDetail> getTFascTemplateDetailList(@Param("tFascTemplateDetail") TFascTemplateDetail tFascTemplateDetail);
List<TFascTemplateDetailExportVo> getTFascTemplateDetailExport(@Param("tFascTemplateDetail") TFascTemplateDetailSearchVo tFascTemplateDetail, @Param("idList") List<String> idList);
Long getTFascTemplateDetailExportCount(@Param("tFascTemplateDetail") TFascTemplateDetail tFascTemplateDetail, @Param("idList") List<String> idList);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
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.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateExportVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 法大大专业版模板表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Mapper
public interface TFascTemplateMapper extends BaseMapper<TFascTemplate> {
/**
* 法大大专业版模板表简单分页查询
* @param tFascTemplate 法大大专业版模板表
* @return
*/
IPage<TFascTemplate> getTFascTemplatePage(Page<TFascTemplate> page, @Param("tFascTemplate") TFascTemplate tFascTemplate);
List<TFascTemplate> getTFascTemplateList(@Param("tFascTemplate") TFascTemplate tFascTemplate);
List<TFascTemplateExportVo> getTFascTemplateExport(@Param("tFascTemplate") TFascTemplateSearchVo tFascTemplate, @Param("idList") List<String> idList);
/**
* @param
* @Description: 获取所有要更新是否必填的模板数据
* @Author: hgw
* @Date: 2025/10/9 18:59
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate>
**/
List<TFascTemplate> getTFascTemplateResutList(@Param("templateId") String templateId);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service;
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.archives.entity.TFascEditLog;
import java.util.List;
/**
* 法大大编辑日志表
*
* @author hgw
* @date 2025-10-09 10:39:43
*/
public interface TFascEditLogService extends IService<TFascEditLog> {
/**
* 法大大编辑日志表简单分页查询
*
* @param tFascEditLog 法大大编辑日志表
* @return
*/
IPage<TFascEditLog> getTFascEditLogPage(Page<TFascEditLog> page, TFascEditLog tFascEditLog);
List<TFascEditLog> getTFascEditLogList(TFascEditLog searchVo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service;
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.archives.entity.TFascHrField;
import java.util.List;
import java.util.Map;
/**
* 法大大专业版皖信字段表
*
* @author hgw
* @date 2025-09-30 16:29:27
*/
public interface TFascHrFieldService extends IService<TFascHrField> {
/**
* 法大大专业版皖信字段表简单分页查询
*
* @param tFascHrField 法大大专业版皖信字段表
* @return
*/
IPage<TFascHrField> getTFascHrFieldPage(Page<TFascHrField> page, TFascHrField tFascHrField);
List<TFascHrField> noPageDiy(TFascHrField tFascHrField);
// 返回:合同类型,值为字段ID+_+字段 的Map
Map<String, Map<String, String>> getFieldAllMap(TFascHrField tFascHrField);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service;
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.archives.entity.TFascPushLog;
import java.util.List;
/**
* 法大大专业版推送日志表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
public interface TFascPushLogService extends IService<TFascPushLog> {
/**
* 法大大专业版推送日志表简单分页查询
*
* @param tFascPushLog 法大大专业版推送日志表
* @return
*/
IPage<TFascPushLog> getTFascPushLogPage(Page<TFascPushLog> page, TFascPushLog tFascPushLog);
List<TFascPushLog> noPageDiy(TFascPushLog searchVo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
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.archives.vo.TFascTemplateDetailSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
public interface TFascTemplateDetailService extends IService<TFascTemplateDetail> {
/**
* 法大大专业版模板映射表简单分页查询
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
IPage<TFascTemplateDetail> getTFascTemplateDetailPage(Page<TFascTemplateDetail> page, TFascTemplateDetailSearchVo tFascTemplateDetail);
// 获取列表
List<TFascTemplateDetail> getTFascTemplateDetailList(TFascTemplateDetail tFascTemplateDetail);
R<List<ErrorMessage>> batchUpdateFascDetail(InputStream inputStream);
void listExport(HttpServletResponse response, TFascTemplateDetailSearchVo searchVo);
/**
* @Description: 重新刷新主模板表的必填是否已填
* @Author: hgw
* @Date: 2025/10/10 16:35
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
R<String> initFascTemplateIsMust(String templateId);
List<TFascTemplateDetail> noPageDiy(TFascTemplateDetailSearchVo searchVo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
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.archives.vo.TFascTemplateSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 法大大专业版模板表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
public interface TFascTemplateService extends IService<TFascTemplate> {
/**
* 法大大专业版模板表简单分页查询
* @param tFascTemplate 法大大专业版模板表
* @return
*/
IPage<TFascTemplate> getTFascTemplatePage(Page<TFascTemplate> page, TFascTemplateSearchVo tFascTemplate);
R<List<ErrorMessage>> batchUpdate(InputStream inputStream);
void listExport(HttpServletResponse response, TFascTemplateSearchVo searchVo);
List<TFascTemplate> noPageDiy(TFascTemplateSearchVo searchVo);
}
...@@ -18,43 +18,143 @@ package com.yifu.cloud.plus.v1.yifu.archives.service.impl; ...@@ -18,43 +18,143 @@ package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasc.open.api.exception.ApiException; import com.fasc.open.api.exception.ApiException;
import com.fasc.open.api.v5_1.res.template.DocumentInfo;
import com.fasc.open.api.v5_1.res.template.SignTemplateListInfo; import com.fasc.open.api.v5_1.res.template.SignTemplateListInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.FddContractInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.FddContractInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.FddContractInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.FddContractInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.FascService; import com.yifu.cloud.plus.v1.yifu.archives.service.*;
import com.yifu.cloud.plus.v1.yifu.archives.utils.FascUtil; import com.yifu.cloud.plus.v1.yifu.archives.utils.FascUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 法大大合同与员工合同信息 * 法大大专业版
* @author fxj *
* @date 2022-06-29 16:21:51 * @author hgw
* @date 2025-9-29 14:37:03
*/ */
@Log4j2
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContractInfo> implements FascService { public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContractInfo> implements FascService {
@Autowired private final FascUtil fascUtil;
private FascUtil fascUtil;
private final TFascEditLogService tFascEditLogService;
private final TFascPushLogService tFascPushLogService;
private final TFascTemplateService tFascTemplateService;
private final TFascTemplateDetailService tFascTemplateDetailService;
@Override @Override
public R<String> getTemplate(String templateName) throws ApiException { public R<String> getTemplate(String templateName) throws ApiException {
// templateName 签署任务模板名称 // templateName 签署任务模板名称
List<SignTemplateListInfo> list = fascUtil.getTemplateList(templateName); List<SignTemplateListInfo> list = fascUtil.getTemplateList(templateName, tFascPushLogService);
if (list != null && !list.isEmpty()) { if (list != null && !list.isEmpty()) {
List<DocumentInfo> listDetail = fascUtil.getTemplateDetailList(list); List<TFascTemplate> tList = new ArrayList<>();
// TODO-存表里 List<TFascTemplateDetail> detailList = new ArrayList<>();
fascUtil.getTemplateDetailList(list, tList, detailList, tFascPushLogService);
// 拉取到数据再更新:
if (!tList.isEmpty() && !detailList.isEmpty()) {
String editContent1 = "定时任务同步,拉取到数据";
String editContent2 = "定时任务同步,法大大无该数据";
List<TFascTemplate> updateMain = new ArrayList<>();
List<TFascTemplateDetail> updateDetail = new ArrayList<>();
List<TFascTemplate> allMain = tFascTemplateService.noPageDiy(null);
List<TFascTemplateDetail> allDetail = tFascTemplateDetailService.getTFascTemplateDetailList(null);
List<TFascEditLog> logList = new ArrayList<>();
if (allMain == null || allMain.isEmpty()) {
// 都是新的:
tFascTemplateService.saveBatch(tList);
tFascTemplateDetailService.saveOrUpdateBatch(detailList);
for (TFascTemplate t : tList) {
this.addFascLogToList(t.getId(), CommonConstants.ONE_STRING, editContent1, logList);
}
for (TFascTemplateDetail t : detailList) {
this.addFascLogToList(t.getId(), CommonConstants.TWO_STRING, editContent1, logList);
}
} else {
// 混合老新数据
Map<String, TFascTemplate> oldMainMap = new HashMap<>();
Map<String, TFascTemplateDetail> oldDetailMap = new HashMap<>();
for (TFascTemplate t : allMain) {
oldMainMap.put(t.getSignTemplateId(), t);
}
for (TFascTemplateDetail t : allDetail) {
oldDetailMap.put(t.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + t.getFascFieldId(), t);
}
// 主表:
TFascTemplate oldMain;
for (TFascTemplate t : tList) {
oldMain = oldMainMap.get(t.getSignTemplateId());
if (oldMain != null) {
t.setId(oldMain.getId());
}
this.addFascLogToList(t.getId(), CommonConstants.ONE_STRING, editContent1, logList);
updateMain.add(t);
oldMainMap.remove(t.getSignTemplateId());
}
for (TFascTemplate t : oldMainMap.values()) {
this.addFascLogToList(t.getId(), CommonConstants.ONE_STRING, editContent2, logList);
t.setDeleteFlag(CommonConstants.DELETE_FLAG);
updateMain.add(t);
}
// 映射表:
TFascTemplateDetail oldDetail;
for (TFascTemplateDetail t : detailList) {
oldDetail = oldDetailMap.get(t.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + t.getFascFieldId());
if (oldDetail != null) {
t.setId(oldDetail.getId());
}
this.addFascLogToList(t.getId(), CommonConstants.TWO_STRING, editContent1, logList);
updateDetail.add(t);
oldDetailMap.remove(t.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + t.getFascFieldId());
}
for (TFascTemplateDetail t : oldDetailMap.values()) {
this.addFascLogToList(t.getId(), CommonConstants.TWO_STRING, editContent2, logList);
t.setDeleteFlag(CommonConstants.DELETE_FLAG);
updateDetail.add(t);
}
}
// 更新日志
if (!logList.isEmpty()) {
tFascEditLogService.saveBatch(logList);
}
// 更新模板
if (!updateMain.isEmpty()) {
tFascTemplateService.saveOrUpdateBatch(updateMain);
}
// 更新模板映射
if (!updateDetail.isEmpty()) {
tFascTemplateDetailService.saveOrUpdateBatch(updateDetail);
}
// 重新刷新主模板表的必填是否已填
tFascTemplateDetailService.initFascTemplateIsMust(null);
}
} }
return R.ok(); return R.ok();
} }
/**
* 向list里添加新日志
*/
private void addFascLogToList(String mainId, String mainType, String editContent, List<TFascEditLog> logList) {
TFascEditLog log = new TFascEditLog();
log.setMainId(mainId);
log.setMainType(mainType);
log.setEditContent(editContent);
logList.add(log);
}
} }
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascEditLogMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascEditLogService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 法大大编辑日志表
*
* @author hgw
* @date 2025-10-09 10:39:43
*/
@Log4j2
@Service
public class TFascEditLogServiceImpl extends ServiceImpl<TFascEditLogMapper, TFascEditLog> implements TFascEditLogService {
/**
* 法大大编辑日志表简单分页查询
*
* @param tFascEditLog 法大大编辑日志表
* @return
*/
@Override
public IPage<TFascEditLog> getTFascEditLogPage(Page<TFascEditLog> page, TFascEditLog tFascEditLog) {
return baseMapper.getTFascEditLogPage(page, tFascEditLog);
}
@Override
public List<TFascEditLog> getTFascEditLogList(TFascEditLog searchVo) {
return baseMapper.getTFascEditLogList(searchVo);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascHrField;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascHrFieldMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascHrFieldService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 法大大专业版皖信字段表
*
* @author hgw
* @date 2025-09-30 16:29:27
*/
@Log4j2
@Service
public class TFascHrFieldServiceImpl extends ServiceImpl<TFascHrFieldMapper, TFascHrField> implements TFascHrFieldService {
/**
* 法大大专业版皖信字段表简单分页查询
* @param tFascHrField 法大大专业版皖信字段表
* @return
*/
@Override
public IPage<TFascHrField> getTFascHrFieldPage(Page<TFascHrField> page, TFascHrField tFascHrField){
return baseMapper.getTFascHrFieldPage(page,tFascHrField);
}
@Override
public List<TFascHrField> noPageDiy(TFascHrField tFascHrField) {
return baseMapper.getTFascHrFieldList(tFascHrField);
}
@Override
public Map<String, Map<String, String>> getFieldAllMap(TFascHrField tFascHrField) {
List<TFascHrField> list = baseMapper.getTFascHrFieldList(tFascHrField);
Map<String, Map<String, String>> contractTypeMap = new HashMap<>();
Map<String, String> fieldMap;
if (list != null && !list.isEmpty()) {
for (TFascHrField f : list) {
fieldMap = contractTypeMap.get(f.getContractType());
if (fieldMap == null) {
fieldMap = new HashMap<>();
}
fieldMap.put(f.getHrFieldId() + CommonConstants.DOWN_LINE_STRING + f.getHrField(), f.getId());
contractTypeMap.put(f.getContractType(), fieldMap);
}
}
return contractTypeMap;
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascPushLog;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascPushLogMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascPushLogService;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 法大大专业版推送日志表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Log4j2
@Service
public class TFascPushLogServiceImpl extends ServiceImpl<TFascPushLogMapper, TFascPushLog> implements TFascPushLogService {
/**
* 法大大专业版推送日志表简单分页查询
* @param tFascPushLog 法大大专业版推送日志表
* @return
*/
@Override
public IPage<TFascPushLog> getTFascPushLogPage(Page<TFascPushLog> page, TFascPushLog tFascPushLog){
return baseMapper.getTFascPushLogPage(page,tFascPushLog);
}
@Override
public List<TFascPushLog> noPageDiy(TFascPushLog searchVo) {
LambdaQueryWrapper<TFascPushLog> wrapper = Wrappers.lambdaQuery();
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascTemplateDetailMapper;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascTemplateMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascEditLogService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascHrFieldService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascTemplateDetailService;
import com.yifu.cloud.plus.v1.yifu.archives.utils.FascConstants;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailExportVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailUpdateVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 法大大专业版模板映射表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Log4j2
@Service
@RequiredArgsConstructor
public class TFascTemplateDetailServiceImpl extends ServiceImpl<TFascTemplateDetailMapper, TFascTemplateDetail> implements TFascTemplateDetailService {
private final TFascEditLogService tFascEditLogService;
private final TFascHrFieldService tFascHrFieldService;
private final TFascTemplateMapper tFascTemplateMapper;
/**
* 法大大专业版模板映射表简单分页查询
*
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
@Override
public IPage<TFascTemplateDetail> getTFascTemplateDetailPage(Page<TFascTemplateDetail> page, TFascTemplateDetailSearchVo tFascTemplateDetail) {
return baseMapper.getTFascTemplateDetailPage(page, tFascTemplateDetail);
}
/**
* 法大大专业版模板映射表简单分页查询
*
* @param tFascTemplateDetail 法大大专业版模板映射表
* @return
*/
@Override
public List<TFascTemplateDetail> getTFascTemplateDetailList(TFascTemplateDetail tFascTemplateDetail) {
return baseMapper.getTFascTemplateDetailList(tFascTemplateDetail);
}
/**
* 法大大专业版模板映射表批量导出
*
* @param searchVo 法大大专业版模板映射表
* @return
*/
@Override
public void listExport(HttpServletResponse response, TFascTemplateDetailSearchVo searchVo) {
String fileName = "法大大字段映射关系表" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TFascTemplateDetailExportVo> list = new ArrayList<>();
List<String> idList = Common.getList(searchVo.getIds());
long count = baseMapper.getTFascTemplateDetailExportCount(searchVo, idList);
ServletOutputStream out = null;
try {
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,然后文件流会自动关闭
ExcelWriter excelWriter = EasyExcelFactory.write(out, TFascTemplateDetailExportVo.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
WriteSheet writeSheet;
for (int i = 0; i <= count; i += CommonConstants.EXCEL_EXPORT_LIMIT) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = baseMapper.getTFascTemplateDetailExport(searchVo, idList);
if (Common.isNotNull(list)) {
writeSheet = EasyExcelFactory.writerSheet("映射关系配置——列表字段" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
}
} else {
WriteSheet writeSheet = EasyExcelFactory.writerSheet("映射关系配置——列表字段" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
list.clear();
}
out.flush();
excelWriter.finish();
} catch (Exception e) {
log.error("执行异常", e);
} finally {
try {
if (null != out) {
out.close();
}
} catch (IOException e) {
log.error("执行异常", e);
}
}
}
@Override
public List<TFascTemplateDetail> noPageDiy(TFascTemplateDetailSearchVo searchVo) {
LambdaQueryWrapper<TFascTemplateDetail> wrapper = buildQueryWrapper(searchVo);
if (searchVo != null) {
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TFascTemplateDetail::getId, idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TFascTemplateDetailSearchVo entity) {
LambdaQueryWrapper<TFascTemplateDetail> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TFascTemplateDetail::getCreateTime, entity.getCreateTimes()[0])
.le(TFascTemplateDetail::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TFascTemplateDetail::getCreateName, entity.getCreateName());
}
return wrapper;
}
/**
* @Description: 获取模板,key是id与_与名称的组合
* @Author: hgw
* @Date: 2025/10/9 9:33
* @return: java.util.Map<java.lang.String, com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate>
**/
private Map<String, TFascTemplateDetail> getTemplateDetailMap() {
List<TFascTemplateDetail> list = baseMapper.getTFascTemplateDetailList(null);
Map<String, TFascTemplateDetail> map = new HashMap<>();
if (Common.isNotNull(list)) {
for (TFascTemplateDetail t : list) {
map.put(t.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + t.getSignTemplateName()
+ CommonConstants.DOWN_LINE_STRING + t.getFascFieldId()
+ CommonConstants.DOWN_LINE_STRING + t.getFascField(), t);
}
}
return map;
}
@Override
public R<List<ErrorMessage>> batchUpdateFascDetail(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<TFascTemplateDetailUpdateVo> util1 = new ExcelUtil<>(TFascTemplateDetailUpdateVo.class);
Map<String, TFascTemplateDetail> templateDetailMap = this.getTemplateDetailMap();
Map<String, Map<String, String>> fieldAllMap = tFascHrFieldService.getFieldAllMap(null);
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, TFascTemplateDetailUpdateVo.class, new ReadListener<TFascTemplateDetailUpdateVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<TFascTemplateDetailUpdateVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(TFascTemplateDetailUpdateVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex + 1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)) {
errorMessageList.add(errorMessage);
} else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
updateTFascTemplate(cachedDataList, errorMessageList, templateDetailMap, fieldAllMap);
log.info("存储数据库成功!");
}
}).sheet().doRead();
} catch (Exception e) {
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR, e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
for (ErrorMessage message : errorMessageList) {
if (!CommonConstants.SAVE_SUCCESS.equals(message.getMessage())) {
return R.ok(errorMessageList);
}
}
return R.ok();
}
private void updateTFascTemplate(List<TFascTemplateDetailUpdateVo> excelVOList, List<ErrorMessage> errorMessageList
, Map<String, TFascTemplateDetail> templateDetailMap, Map<String, Map<String, String>> fieldAllMap) {
TFascTemplateDetailUpdateVo excel;
TFascTemplateDetail tUpdate;
List<TFascTemplateDetail> tempUpdateList = new ArrayList<>();
List<TFascEditLog> logList = new ArrayList<>();
TFascEditLog tFascEditLog;
String editContent;
Map<String, String> fieldMap;
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
if (Common.isEmpty(excel.getHrField()) || Common.isEmpty(excel.getHrFieldId())) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "对应皖信字段、对应皖信字段ID不可为空", excel));
} else {
tUpdate = templateDetailMap.get(excel.getSignTemplateId()
+ CommonConstants.DOWN_LINE_STRING + excel.getSignTemplateName()
+ CommonConstants.DOWN_LINE_STRING + excel.getFascFieldId()
+ CommonConstants.DOWN_LINE_STRING + excel.getFascField());
if (tUpdate == null) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "根据法大大模版名称、模版ID、法大大字段、法大大字段ID,未找到映射关系", excel));
} else if (Common.isEmpty(tUpdate.getContractType())) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "该法大大模版无合同类型,请先配置模板", excel));
} else {
fieldMap = fieldAllMap.get(tUpdate.getContractType());
if (fieldMap == null) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "该合同类型“"
+ tUpdate.getContractType() + "”无字段配置,请联系管理员配置表TFascHrField", excel));
} else {
if (fieldMap.get(excel.getHrFieldId() + CommonConstants.DOWN_LINE_STRING + excel.getHrField()) == null) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "该合同类型下,未找到皖信字段", excel));
} else {
// 真正的更新:
tFascEditLog = new TFascEditLog();
tFascEditLog.setMainId(tUpdate.getId());
tFascEditLog.setMainType(CommonConstants.TWO_STRING);
if (excel.getHrField().equals(tUpdate.getHrField()) && excel.getHrFieldId().equals(tUpdate.getHrFieldId())) {
editContent = "“皖信字段”由“" + tUpdate.getHrField() + "”→“" + excel.getHrField() + "”";
} else {
if (Common.isEmpty(tUpdate.getHrFieldId())) {
editContent = "“皖信字段”由“空”→“" + excel.getHrField() + "”";
} else {
editContent = "“皖信字段”由“" + tUpdate.getHrField() + "”→“" + excel.getHrField() + "”";
}
tUpdate.setHrField(excel.getHrField());
tUpdate.setHrFieldId(excel.getHrFieldId());
if (Common.isEmpty(tUpdate.getIsEdit()) || tUpdate.getIsEdit().equals(CommonConstants.ZERO_STRING)) {
tUpdate.setIsEdit(CommonConstants.ONE_STRING);
editContent += ";“是否已配置”由“未配置”→“已配置”";
}
// 添加到更新list
tempUpdateList.add(tUpdate);
}
tFascEditLog.setEditContent(editContent);
logList.add(tFascEditLog);
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), CommonConstants.SAVE_SUCCESS));
}
}
}
}
}
if (!tempUpdateList.isEmpty()) {
this.saveBatch(tempUpdateList);
}
if (!logList.isEmpty()) {
tFascEditLogService.saveBatch(logList);
}
// 开始检测Bingo更新模板是否已配置:
this.initFascTemplateIsMust(null);
}
@Override
public R<String> initFascTemplateIsMust(String templateId) {
// 先查找:
List<TFascTemplate> tFascTemplateList = tFascTemplateMapper.getTFascTemplateResutList(templateId);
if (tFascTemplateList != null && !tFascTemplateList.isEmpty()) {
List<TFascTemplate> updateList = new ArrayList<>();
List<TFascEditLog> logList = new ArrayList<>();
TFascEditLog tFascEditLog;
String editContent;
// 0未配置1部分配置2已配置
String isMustEditNew;
for (TFascTemplate t : tFascTemplateList) {
// 改变的,需要更新
if (Common.isNotNull(t.getIsMustEdit()) && Common.isNotNull(t.getIsMustAll()) && Common.isNotNull(t.getIsMustNow())) {
// 如果必填项没了,则默认为已配置
if (CommonConstants.ZERO_STRING.equals(t.getIsMustAll()) || t.getIsMustAll().equals(t.getIsMustNow())) {
isMustEditNew = CommonConstants.TWO_STRING;
} else if (CommonConstants.ZERO_STRING.equals(t.getIsMustNow())) {
isMustEditNew = CommonConstants.ZERO_STRING;
} else {
isMustEditNew = CommonConstants.ONE_STRING;
}
// 如果结果发生了变化,则更新:
if (!t.getIsMustEdit().equals(isMustEditNew)) {
tFascEditLog = new TFascEditLog();
tFascEditLog.setMainId(t.getId());
tFascEditLog.setMainType(CommonConstants.ONE_STRING);
editContent = "“是否已配置”由“" + FascConstants.IS_MUST_EDIT_ARR[Integer.parseInt(t.getIsMustEdit())]
+ "”→“" + FascConstants.IS_MUST_EDIT_ARR[Integer.parseInt(isMustEditNew)] + "”";
tFascEditLog.setEditContent(editContent);
logList.add(tFascEditLog);
t.setIsMustEdit(isMustEditNew);
updateList.add(t);
}
}
}
if (!updateList.isEmpty()) {
for (TFascTemplate t : updateList) {
tFascTemplateMapper.updateById(t);
}
}
if (!logList.isEmpty()) {
tFascEditLogService.saveBatch(logList);
}
}
return R.ok();
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascTemplateDetailMapper;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TFascTemplateMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascEditLogService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascTemplateService;
import com.yifu.cloud.plus.v1.yifu.archives.utils.FascConstants;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateExportVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateUpdateVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 法大大专业版模板表
*
* @author hgw
* @date 2025-09-30 16:29:28
*/
@Log4j2
@Service
@RequiredArgsConstructor
public class TFascTemplateServiceImpl extends ServiceImpl<TFascTemplateMapper, TFascTemplate> implements TFascTemplateService {
private final TFascEditLogService tFascEditLogService;
private final TFascTemplateDetailMapper tFascTemplateDetailMapper;
/**
* 法大大专业版模板表简单分页查询
*
* @param tFascTemplate 法大大专业版模板表
* @return
*/
@Override
public IPage<TFascTemplate> getTFascTemplatePage(Page<TFascTemplate> page, TFascTemplateSearchVo tFascTemplate) {
return baseMapper.getTFascTemplatePage(page, tFascTemplate);
}
/**
* 法大大专业版模板表批量导出
*
* @return
*/
@Override
public void listExport(HttpServletResponse response, TFascTemplateSearchVo searchVo) {
String fileName = "法大大模版列表导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TFascTemplateExportVo> list = new ArrayList<>();
List<String> idList = Common.getList(searchVo.getIds());
long count = noPageCountDiy(searchVo, idList);
ServletOutputStream out = null;
try {
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,然后文件流会自动关闭
ExcelWriter excelWriter = EasyExcelFactory.write(out, TFascTemplateExportVo.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
WriteSheet writeSheet;
for (int i = 0; i <= count; i += CommonConstants.EXCEL_EXPORT_LIMIT) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = baseMapper.getTFascTemplateExport(searchVo, idList);
if (Common.isNotNull(list)) {
writeSheet = EasyExcelFactory.writerSheet("法大大模版列表" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
}
} else {
WriteSheet writeSheet = EasyExcelFactory.writerSheet("法大大模版列表" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
list.clear();
}
out.flush();
excelWriter.finish();
} catch (Exception e) {
log.error("执行异常", e);
} finally {
try {
if (null != out) {
out.close();
}
} catch (IOException e) {
log.error("执行异常", e);
}
}
}
@Override
public List<TFascTemplate> noPageDiy(TFascTemplateSearchVo searchVo) {
LambdaQueryWrapper<TFascTemplate> wrapper = buildQueryWrapper(searchVo);
if (searchVo != null) {
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TFascTemplate::getId, idList);
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
}
return baseMapper.selectList(wrapper);
}
private Long noPageCountDiy(TFascTemplateSearchVo searchVo, List<String> idList) {
LambdaQueryWrapper<TFascTemplate> wrapper = buildQueryWrapper(searchVo);
if (Common.isNotNull(idList)) {
wrapper.in(TFascTemplate::getId, idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TFascTemplateSearchVo entity) {
LambdaQueryWrapper<TFascTemplate> wrapper = Wrappers.lambdaQuery();
if (entity != null) {
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TFascTemplate::getCreateTime, entity.getCreateTimes()[0])
.le(TFascTemplate::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TFascTemplate::getCreateName, entity.getCreateName());
}
}
wrapper.eq(TFascTemplate::getDeleteFlag, CommonConstants.ZERO_STRING);
return wrapper;
}
/**
* @Description: 获取模板,key是id与_与名称的组合
* @Author: hgw
* @Date: 2025/10/9 9:33
* @return: java.util.Map<java.lang.String, com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate>
**/
private Map<String, TFascTemplate> getTemplateMap() {
List<TFascTemplate> list = baseMapper.getTFascTemplateList(null);
Map<String, TFascTemplate> map = new HashMap<>();
if (Common.isNotNull(list)) {
for (TFascTemplate t : list) {
map.put(t.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + t.getSignTemplateName(), t);
}
}
return map;
}
@Override
public R<List<ErrorMessage>> batchUpdate(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<TFascTemplateUpdateVo> util1 = new ExcelUtil<>(TFascTemplateUpdateVo.class);
Map<String, TFascTemplate> templateMap = this.getTemplateMap();
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, TFascTemplateUpdateVo.class, new ReadListener<TFascTemplateUpdateVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<TFascTemplateUpdateVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(TFascTemplateUpdateVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex + 1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)) {
errorMessageList.add(errorMessage);
} else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
updateTFascTemplate(cachedDataList, errorMessageList, templateMap);
log.info("存储数据库成功!");
}
}).sheet().doRead();
} catch (Exception e) {
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR, e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
for (ErrorMessage message : errorMessageList) {
if (!CommonConstants.SAVE_SUCCESS.equals(message.getMessage())) {
return R.ok(errorMessageList);
}
}
return R.ok();
}
private void updateTFascTemplate(List<TFascTemplateUpdateVo> excelVOList, List<ErrorMessage> errorMessageList
, Map<String, TFascTemplate> templateMap) {
TFascTemplateUpdateVo excel;
// 合同类型Map
Map<String, String> contractNameMap = new HashMap<>();
for (String contractName : FascConstants.CONTRACT_NAME_ARR) {
contractNameMap.put(contractName, contractName);
}
TFascTemplate tUpdate;
List<TFascTemplate> tempUpdateList = new ArrayList<>();
List<TFascEditLog> logList = new ArrayList<>();
TFascEditLog tFascEditLog;
TFascEditLog tFascEditLogDetail;
String editContent;
String detailEditContent;
List<TFascTemplateDetail> detailList;
List<TFascTemplateDetail> updateDetailList = new ArrayList<>();
TFascTemplateDetail tFascTemplateDetail;
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
if (Common.isEmpty(excel.getContractType()) || contractNameMap.get(excel.getContractType()) == null) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "皖信合同类型错误", excel));
} else {
tUpdate = templateMap.get(excel.getSignTemplateId() + CommonConstants.DOWN_LINE_STRING + excel.getSignTemplateName());
if (tUpdate == null) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), "根据模版ID、模版名称,未找到模板", excel));
} else {
tFascEditLog = new TFascEditLog();
tFascEditLog.setMainId(tUpdate.getId());
tFascEditLog.setMainType(CommonConstants.ONE_STRING);
if (excel.getContractType().equals(tUpdate.getContractType())) {
editContent = "“合同类型”由“" + tUpdate.getContractType() + "”→“" + excel.getContractType() + "”";
} else {
if (Common.isEmpty(tUpdate.getContractType())) {
editContent = "“合同类型”由“空”→“" + excel.getContractType() + "”";
} else {
editContent = "“合同类型”由“" + tUpdate.getContractType() + "”→“" + excel.getContractType() + "”";
if (Common.isNotNull(tUpdate.getIsMustEdit()) && tUpdate.getIsMustEdit().equals(CommonConstants.ONE_STRING)) {
tUpdate.setIsMustEdit(CommonConstants.ZERO_STRING);
editContent += ";“法大大必填是否已配置”由“已配置”→“未配置”";
}
// 合同类型变更,清空明细配置:
tFascTemplateDetail = new TFascTemplateDetail();
tFascTemplateDetail.setSignTemplateId(tUpdate.getSignTemplateId());
detailList = tFascTemplateDetailMapper.getTFascTemplateDetailList(tFascTemplateDetail);
if (detailList != null && !detailList.isEmpty()) {
for (TFascTemplateDetail detail : detailList) {
if (Common.isNotNull(detail.getHrField())) {
tFascEditLogDetail = new TFascEditLog();
tFascEditLogDetail.setMainId(detail.getId());
tFascEditLogDetail.setMainType(CommonConstants.TWO_STRING);
detailEditContent = "“皖信字段”由“" + detail.getHrField() + "”→“空”;“是否已配置”由“已配置”→“未配置”";
tFascEditLogDetail.setEditContent(detailEditContent);
logList.add(tFascEditLogDetail);
detail.setHrField(null);
detail.setHrFieldId(null);
detail.setIsEdit(CommonConstants.ZERO_STRING);
updateDetailList.add(detail);
}
}
}
}
tUpdate.setContractType(excel.getContractType());
// 添加到更新list
tempUpdateList.add(tUpdate);
}
tFascEditLog.setEditContent(editContent);
logList.add(tFascEditLog);
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), CommonConstants.SAVE_SUCCESS));
}
}
}
// 更新模板
if (!tempUpdateList.isEmpty()) {
this.saveBatch(tempUpdateList);
}
// 更新日志
if (!logList.isEmpty()) {
tFascEditLogService.saveBatch(logList);
}
// 更新映射表
if (!updateDetailList.isEmpty()) {
for (TFascTemplateDetail detail : updateDetailList) {
tFascTemplateDetailMapper.updateById(detail);
}
}
}
}
/*
* Copyright (c) 2020 yifu4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.yifu.cloud.plus.v1.yifu.archives.utils;
/**
* @author lengleng
* @date 2019/2/1
*/
public interface FascConstants {
/**
* 合同类型
*/
String[] CONTRACT_NAME_ARR = {"标准合同", "劳务协议", "实习协议", "非全日制", "劳务派遣合同"};
/**
* 必填是否已配置0未配置1部分配置2已配置
**/
String[] IS_MUST_EDIT_ARR = {"未配置","部分配置","已配置"};
// 控件类型是文本等,可以填写
String FIELD_TEXT_TYPE = "text_single_line,text_multi_line,number,id_card,fill_date";
// 控件类型是印章
String FIELD_ZHANG_TYPE = "corp_seal,corp_seal_cross_page";
//String FIELD_TYPE = "text_single_line,text_multi_line,number,id_card,fill_date,multi_radio,multi_checkbox,picture,select_box,table,verification_code,business_code";
}
...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.utils; ...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.utils;
import com.fasc.open.api.bean.base.BaseRes; import com.fasc.open.api.bean.base.BaseRes;
import com.fasc.open.api.bean.common.OpenId; import com.fasc.open.api.bean.common.OpenId;
import com.fasc.open.api.bean.common.TemplateField;
import com.fasc.open.api.exception.ApiException; import com.fasc.open.api.exception.ApiException;
import com.fasc.open.api.v5_1.client.OpenApiClient; import com.fasc.open.api.v5_1.client.OpenApiClient;
import com.fasc.open.api.v5_1.client.ServiceClient; import com.fasc.open.api.v5_1.client.ServiceClient;
...@@ -15,9 +16,15 @@ import com.fasc.open.api.v5_1.res.template.SignTemplateDetailRes; ...@@ -15,9 +16,15 @@ import com.fasc.open.api.v5_1.res.template.SignTemplateDetailRes;
import com.fasc.open.api.v5_1.res.template.SignTemplateListInfo; import com.fasc.open.api.v5_1.res.template.SignTemplateListInfo;
import com.fasc.open.api.v5_1.res.template.SignTemplateListRes; import com.fasc.open.api.v5_1.res.template.SignTemplateListRes;
import com.yifu.cloud.plus.v1.yifu.archives.config.FascConfig; import com.yifu.cloud.plus.v1.yifu.archives.config.FascConfig;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascPushLog;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail;
import com.yifu.cloud.plus.v1.yifu.archives.service.TFascPushLogService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants; 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.exception.CheckedException; 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.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.LocalDateTimeUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -69,49 +76,76 @@ public class FascUtil { ...@@ -69,49 +76,76 @@ public class FascUtil {
} }
/** /**
* @Description: 获取模板
* @Author: hgw * @Author: hgw
* @Date: 2025-9-25 14:11:06 * @Date: 2025/10/10 17:59
* @Description: 移除法大大专业版accossToken * @return: java.util.List<com.fasc.open.api.v5_1.res.template.SignTemplateListInfo>
* @return: java.lang.String
**/ **/
public void removeFascToken() { public List<SignTemplateListInfo> getTemplateList(String templateName, TFascPushLogService tFascPushLogService)
redisTemplate.delete(CacheConstants.FASC_ACCOSS_TOKEN); throws ApiException {
}
public List<SignTemplateListInfo> getTemplateList(String templateName) throws ApiException {
OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl()); OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl());
TemplateClient templateClient = new TemplateClient(openApiClient) ; TemplateClient templateClient = new TemplateClient(openApiClient);
String accessToken = this.getFascToken(openApiClient); String accessToken = this.getFascToken(openApiClient);
GetSignTemplateListReq getSignTemplateListReq = new GetSignTemplateListReq() ; GetSignTemplateListReq getSignTemplateListReq = new GetSignTemplateListReq();
getSignTemplateListReq.setListPageNo(1) ; getSignTemplateListReq.setListPageNo(1);
getSignTemplateListReq.setListPageSize(100) ; getSignTemplateListReq.setListPageSize(100);
OpenId ownerId = new OpenId() ; OpenId ownerId = new OpenId();
ownerId.setIdType(CacheConstants.FASC_ID_TYPE) ; ownerId.setIdType(CacheConstants.FASC_ID_TYPE);
ownerId.setOpenId(fascConfig.getOpenId()) ; ownerId.setOpenId(fascConfig.getOpenId());
getSignTemplateListReq.setOwnerId(ownerId) ; getSignTemplateListReq.setOwnerId(ownerId);
SignTemplateListFilterInfo signTemplateListFilterInfo = new SignTemplateListFilterInfo(); SignTemplateListFilterInfo signTemplateListFilterInfo = new SignTemplateListFilterInfo();
if (Common.isNotNull(templateName)) { if (Common.isNotNull(templateName)) {
// 签署任务模板名称,如果传了该参数,会根据名称模糊匹配查询,长度最大100个字符。 // 签署任务模板名称,如果传了该参数,会根据名称模糊匹配查询,长度最大100个字符。
signTemplateListFilterInfo.setSignTemplateName(templateName) ; signTemplateListFilterInfo.setSignTemplateName(templateName);
} else { } else {
signTemplateListFilterInfo.setSignTemplateName("") ; signTemplateListFilterInfo.setSignTemplateName("");
} }
getSignTemplateListReq.setListFilter(signTemplateListFilterInfo) ; getSignTemplateListReq.setListFilter(signTemplateListFilterInfo);
getSignTemplateListReq.setAccessToken(accessToken) ; getSignTemplateListReq.setAccessToken(accessToken);
// 新增推送日志
TFascPushLog pushLog = new TFascPushLog();
pushLog.setTransReferenceId(fascConfig.getOpenId());
pushLog.setPushData(getSignTemplateListReq.toString());
pushLog.setTaskStatus(CommonConstants.ZERO_STRING);
pushLog.setTypeKey("获取所有模板");
pushLog.setTypeName("获取模板");
tFascPushLogService.save(pushLog);
BaseRes<SignTemplateListRes> res = templateClient.getSignTemplateList(getSignTemplateListReq) ; BaseRes<SignTemplateListRes> res = templateClient.getSignTemplateList(getSignTemplateListReq);
List<SignTemplateListInfo> list = null; List<SignTemplateListInfo> list = null;
if (res != null && res.isSuccess() && res.getData() != null && res.getData().getSignTemplates() != null if (res != null) {
// 更新日志
pushLog.setReturnData(res.toString());
pushLog.setTaskStatus(res.isSuccess() ? CommonConstants.ONE_STRING : CommonConstants.TWO_STRING);
tFascPushLogService.updateById(pushLog);
if (res.isSuccess() && res.getData() != null && res.getData().getSignTemplates() != null
&& !res.getData().getSignTemplates().isEmpty()) { && !res.getData().getSignTemplates().isEmpty()) {
list = res.getData().getSignTemplates(); list = res.getData().getSignTemplates();
if (res.getData().getListPageCount() != null ) { if (res.getData().getListPageCount() != null) {
int listPageCount = res.getData().getListPageCount(); int listPageCount = res.getData().getListPageCount();
// 超过1页的循环查询 // 超过1页的循环查询
if (listPageCount > 1) { if (listPageCount > 1) {
for (int i=2; i<=listPageCount; i++) { for (int i = 2; i <= listPageCount; i++) {
getSignTemplateListReq.setListPageNo(i) ; getSignTemplateListReq.setListPageNo(i);
res = templateClient.getSignTemplateList(getSignTemplateListReq) ;
pushLog = new TFascPushLog();
pushLog.setTransReferenceId(fascConfig.getOpenId());
pushLog.setPushData(getSignTemplateListReq.toString());
pushLog.setTaskStatus(CommonConstants.ZERO_STRING);
pushLog.setTypeKey(pushLog.getId() + "获取所有模板" + i);
pushLog.setTypeName("分页循环获取模板");
tFascPushLogService.save(pushLog);
res = templateClient.getSignTemplateList(getSignTemplateListReq);
if (res != null) {
// 更新日志
pushLog.setReturnData(res.toString());
pushLog.setTaskStatus(res.isSuccess() ? CommonConstants.ONE_STRING : CommonConstants.TWO_STRING);
tFascPushLogService.updateById(pushLog);
if (res.getData().getSignTemplates() != null && !res.getData().getSignTemplates().isEmpty()) { if (res.getData().getSignTemplates() != null && !res.getData().getSignTemplates().isEmpty()) {
list.addAll(res.getData().getSignTemplates()); list.addAll(res.getData().getSignTemplates());
} }
...@@ -119,42 +153,142 @@ public class FascUtil { ...@@ -119,42 +153,142 @@ public class FascUtil {
} }
} }
} }
}
}
return list; return list;
} }
public List<DocumentInfo> getTemplateDetailList(List<SignTemplateListInfo> templateList) throws ApiException { /**
* @Description: 获取明细映射
* @Author: hgw
* @Date: 2025/10/10 17:59
* @return: void
**/
public void getTemplateDetailList(List<SignTemplateListInfo> templateList, List<TFascTemplate> tList
, List<TFascTemplateDetail> detailList, TFascPushLogService tFascPushLogService) throws ApiException {
OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl()); OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl());
TemplateClient templateClient = new TemplateClient(openApiClient) ; TemplateClient templateClient = new TemplateClient(openApiClient);
String accessToken = this.getFascToken(openApiClient); String accessToken = this.getFascToken(openApiClient);
OpenId openId = new OpenId() ; OpenId openId = new OpenId();
openId.setIdType(CacheConstants.FASC_ID_TYPE) ; openId.setIdType(CacheConstants.FASC_ID_TYPE);
openId.setOpenId(fascConfig.getOpenId()) ; openId.setOpenId(fascConfig.getOpenId());
List<DocumentInfo> list = null; List<DocumentInfo> list = null;
if (templateList != null && !templateList.isEmpty()) { if (templateList != null && !templateList.isEmpty()) {
// 调用查询模板详情接口 // 调用查询模板详情接口
SignTemplateDetailReq signTemplateDetailReq; SignTemplateDetailReq signTemplateDetailReq;
BaseRes<SignTemplateDetailRes> res; BaseRes<SignTemplateDetailRes> res;
for (SignTemplateListInfo signTemplateListInfo : templateList) { TFascTemplate template;
if (signTemplateListInfo != null && signTemplateListInfo.getSignTemplateId() != null) { TFascTemplateDetail detail;
String signTemplateId;
signTemplateDetailReq = new SignTemplateDetailReq() ; String fieldType;
signTemplateDetailReq.setOwnerId(openId) ; String isMust;
signTemplateDetailReq.setSignTemplateId(signTemplateListInfo.getSignTemplateId()) ; StringBuilder zhangName;
signTemplateDetailReq.setAccessToken(accessToken) ; for (SignTemplateListInfo mainInfo : templateList) {
res = templateClient.getSignTemplateDetail(signTemplateDetailReq) ; if (mainInfo != null && mainInfo.getSignTemplateId() != null) {
if (res != null && res.isSuccess() && res.getData() != null && res.getData().getDocs() != null zhangName = new StringBuilder();
template = new TFascTemplate();
signTemplateId = mainInfo.getSignTemplateId();
template.setSignTemplateId(signTemplateId);
template.setSignTemplateName(mainInfo.getSignTemplateName());
template.setSignTemplateStatus(mainInfo.getSignTemplateStatus());
template.setFascCreateTime(LocalDateTimeUtils.coverStringToLDT(mainInfo.getCreateTime()));
template.setUpdateTime(LocalDateTimeUtils.coverStringToLDT(mainInfo.getUpdateTime()));
// 有可能不对:template.setCompanyName(mainInfo.getCatalogName());
template.setCompanyName(mainInfo.getCatalogName());
template.setCreatorMemberName(mainInfo.getCreatorMemberName());
template.setDeleteFlag(CommonConstants.NOT_DELETE_FLAG);
tList.add(template);
signTemplateDetailReq = new SignTemplateDetailReq();
signTemplateDetailReq.setOwnerId(openId);
signTemplateDetailReq.setSignTemplateId(mainInfo.getSignTemplateId());
signTemplateDetailReq.setAccessToken(accessToken);
// 新增推送日志
TFascPushLog pushLog = new TFascPushLog();
pushLog.setTransReferenceId(fascConfig.getOpenId());
pushLog.setPushData(signTemplateDetailReq.toString());
pushLog.setTaskStatus(CommonConstants.ZERO_STRING);
pushLog.setTypeKey("获取所有明细映射");
pushLog.setTypeName("获取明细映射");
tFascPushLogService.save(pushLog);
res = templateClient.getSignTemplateDetail(signTemplateDetailReq);
if (res != null) {
// 更新日志
pushLog.setReturnData(res.toString());
pushLog.setTaskStatus(res.isSuccess() ? CommonConstants.ONE_STRING : CommonConstants.TWO_STRING);
tFascPushLogService.updateById(pushLog);
if (res.isSuccess() && res.getData() != null && res.getData().getDocs() != null
&& !res.getData().getDocs().isEmpty()) { && !res.getData().getDocs().isEmpty()) {
if (list == null) { if (list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
} }
list.addAll(res.getData().getDocs()); // 循环文档(1,2,3)
for (DocumentInfo doc : res.getData().getDocs()) {
if (doc.getDocFields() != null) {
// 循环文档里的字段
for (TemplateField fields : doc.getDocFields()) {
fieldType = fields.getFieldType();
if (Common.isNotNull(fieldType)) {
if (FascConstants.FIELD_TEXT_TYPE.contains(fieldType)) {
// 文本数字等控件
detail = new TFascTemplateDetail();
detail.setSignTemplateId(signTemplateId);
detail.setFascField(fields.getFieldName());
detail.setFascFieldId(fields.getFieldId());
isMust = CommonConstants.ONE_STRING;
if (this.isFieldNotRequired(fields, fieldType)) {
isMust = CommonConstants.ZERO_STRING;
}
detail.setIsMust(isMust);
detail.setDeleteFlag(CommonConstants.NOT_DELETE_FLAG);
detailList.add(detail);
} else if (FascConstants.FIELD_ZHANG_TYPE.contains(fieldType)) {
// 章控件
if (zhangName.length() > 0) {
zhangName.append(";");
}
zhangName.append(fields.getFieldName());
}
}
}
}
}
}
}
template.setZhangName(zhangName.toString());
} }
} }
} }
} }
return list; /**
* @param fields 字段属性
* @param fieldType 字段类型
* @Description: 统一判断字段是否非必填
* @Author: hgw
* @Date: 2025/10/10 16:10
* @return: boolean
**/
private boolean isFieldNotRequired(TemplateField fields, String fieldType) {
switch (fieldType) {
case "text_single_line":
return fields.getFieldTextSingleLine() != null && Boolean.FALSE.equals(fields.getFieldTextSingleLine().getRequired());
case "text_multi_line":
return fields.getFieldTextMultiLine() != null && Boolean.FALSE.equals(fields.getFieldTextMultiLine().getRequired());
case "number":
return fields.getFieldNumber() != null && Boolean.FALSE.equals(fields.getFieldNumber().getRequired());
case "id_card":
return fields.getFieldIdCard() != null && Boolean.FALSE.equals(fields.getFieldIdCard().getRequired());
case "fill_date":
return fields.getFieldFillDate() != null && Boolean.FALSE.equals(fields.getFieldFillDate().getRequired());
default:
return false;
}
} }
} }
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!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.archives.mapper.TFascEditLogMapper">
<resultMap id="tFascEditLogMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog">
<id property="id" column="id"/>
<result property="mainId" column="main_id"/>
<result property="mainType" column="main_type"/>
<result property="editContent" column="edit_content"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.main_id,
a.main_type,
a.edit_content,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tFascEditLog_where">
<if test="tFascEditLog != null">
<if test="tFascEditLog.id != null and tFascEditLog.id.trim() != ''">
AND a.id = #{tFascEditLog.id}
</if>
<if test="tFascEditLog.mainId != null and tFascEditLog.mainId.trim() != ''">
AND a.main_id = #{tFascEditLog.mainId}
</if>
<if test="tFascEditLog.mainType != null and tFascEditLog.mainType.trim() != ''">
AND a.main_type = #{tFascEditLog.mainType}
</if>
<if test="tFascEditLog.editContent != null and tFascEditLog.editContent.trim() != ''">
AND a.edit_content = #{tFascEditLog.editContent}
</if>
<if test="tFascEditLog.createBy != null and tFascEditLog.createBy.trim() != ''">
AND a.CREATE_BY = #{tFascEditLog.createBy}
</if>
<if test="tFascEditLog.createName != null and tFascEditLog.createName.trim() != ''">
AND a.CREATE_NAME = #{tFascEditLog.createName}
</if>
<if test="tFascEditLog.createTime != null">
AND a.CREATE_TIME = #{tFascEditLog.createTime}
</if>
<if test="tFascEditLog.updateBy != null and tFascEditLog.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tFascEditLog.updateBy}
</if>
<if test="tFascEditLog.updateTime != null">
AND a.UPDATE_TIME = #{tFascEditLog.updateTime}
</if>
</if>
</sql>
<!--tFascEditLog简单分页查询-->
<select id="getTFascEditLogPage" resultMap="tFascEditLogMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_edit_log a
<where>
1=1
<include refid="tFascEditLog_where"/>
</where>
order by a.CREATE_TIME desc
</select>
<!--tFascEditLog简单分页查询-->
<select id="getTFascEditLogList" resultMap="tFascEditLogMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_edit_log a
<where>
1=1
<include refid="tFascEditLog_where"/>
</where>
order by a.CREATE_TIME desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!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.archives.mapper.TFascHrFieldMapper">
<resultMap id="tFascHrFieldMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TFascHrField">
<id property="id" column="id"/>
<result property="hrField" column="hr_field"/>
<result property="hrFieldId" column="hr_field_id"/>
<result property="contractType" column="contract_type"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.hr_field,
a.hr_field_id,
a.contract_type
</sql>
<sql id="tFascHrField_where">
<if test="tFascHrField != null">
<if test="tFascHrField.id != null and tFascHrField.id.trim() != ''">
AND a.id = #{tFascHrField.id}
</if>
<if test="tFascHrField.hrField != null and tFascHrField.hrField.trim() != ''">
AND a.hr_field = #{tFascHrField.hrField}
</if>
<if test="tFascHrField.hrFieldId != null and tFascHrField.hrFieldId.trim() != ''">
AND a.hr_field_id = #{tFascHrField.hrFieldId}
</if>
<if test="tFascHrField.contractType != null and tFascHrField.contractType.trim() != ''">
AND a.contract_type = #{tFascHrField.contractType}
</if>
</if>
</sql>
<!--tFascHrField简单分页查询-->
<select id="getTFascHrFieldPage" resultMap="tFascHrFieldMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_hr_field a
<where>
1=1
<include refid="tFascHrField_where"/>
</where>
order by (a.id-0) asc
</select>
<!--tFascHrField简单分页查询-->
<select id="getTFascHrFieldList" resultMap="tFascHrFieldMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_hr_field a
<where>
1=1
<include refid="tFascHrField_where"/>
</where>
order by (a.id-0) asc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!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.archives.mapper.TFascPushLogMapper">
<resultMap id="tFascPushLogMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TFascPushLog">
<id property="id" column="id"/>
<result property="transReferenceId" column="trans_reference_id"/>
<result property="signTaskId" column="sign_task_id"/>
<result property="pushData" column="push_data"/>
<result property="returnData" column="return_data"/>
<result property="contractId" column="contract_id"/>
<result property="taskStatus" column="task_status"/>
<result property="typeKey" column="type_key"/>
<result property="typeName" column="type_name"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.trans_reference_id,
a.sign_task_id,
a.push_data,
a.return_data,
a.contract_id,
a.task_status,
a.type_key,
a.type_name,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tFascPushLog_where">
<if test="tFascPushLog != null">
<if test="tFascPushLog.id != null and tFascPushLog.id.trim() != ''">
AND a.id = #{tFascPushLog.id}
</if>
<if test="tFascPushLog.transReferenceId != null and tFascPushLog.transReferenceId.trim() != ''">
AND a.trans_reference_id = #{tFascPushLog.transReferenceId}
</if>
<if test="tFascPushLog.signTaskId != null and tFascPushLog.signTaskId.trim() != ''">
AND a.sign_task_id = #{tFascPushLog.signTaskId}
</if>
<if test="tFascPushLog.pushData != null and tFascPushLog.pushData.trim() != ''">
AND a.push_data = #{tFascPushLog.pushData}
</if>
<if test="tFascPushLog.returnData != null and tFascPushLog.returnData.trim() != ''">
AND a.return_data = #{tFascPushLog.returnData}
</if>
<if test="tFascPushLog.contractId != null and tFascPushLog.contractId.trim() != ''">
AND a.contract_id = #{tFascPushLog.contractId}
</if>
<if test="tFascPushLog.taskStatus != null and tFascPushLog.taskStatus.trim() != ''">
AND a.task_status = #{tFascPushLog.taskStatus}
</if>
<if test="tFascPushLog.typeKey != null and tFascPushLog.typeKey.trim() != ''">
AND a.type_key = #{tFascPushLog.typeKey}
</if>
<if test="tFascPushLog.typeName != null and tFascPushLog.typeName.trim() != ''">
AND a.type_name = #{tFascPushLog.typeName}
</if>
<if test="tFascPushLog.createBy != null and tFascPushLog.createBy.trim() != ''">
AND a.CREATE_BY = #{tFascPushLog.createBy}
</if>
<if test="tFascPushLog.createName != null and tFascPushLog.createName.trim() != ''">
AND a.CREATE_NAME = #{tFascPushLog.createName}
</if>
<if test="tFascPushLog.createTime != null">
AND a.CREATE_TIME = #{tFascPushLog.createTime}
</if>
<if test="tFascPushLog.updateBy != null and tFascPushLog.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tFascPushLog.updateBy}
</if>
<if test="tFascPushLog.updateTime != null">
AND a.UPDATE_TIME = #{tFascPushLog.updateTime}
</if>
</if>
</sql>
<!--tFascPushLog简单分页查询-->
<select id="getTFascPushLogPage" resultMap="tFascPushLogMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_push_log a
<where>
1=1
<include refid="tFascPushLog_where"/>
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!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.archives.mapper.TFascTemplateDetailMapper">
<resultMap id="tFascTemplateDetailMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail">
<id property="id" column="id"/>
<result property="signTemplateId" column="sign_template_id"/>
<result property="fascField" column="fasc_field"/>
<result property="fascFieldId" column="fasc_field_id"/>
<result property="isMust" column="is_must"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="hrField" column="hr_field"/>
<result property="hrFieldId" column="hr_field_id"/>
<result property="isEdit" column="is_edit"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="signTemplateName" column="sign_template_name"/>
<result property="signTemplateStatus" column="sign_template_status"/>
<result property="contractType" column="contract_type"/>
</resultMap>
<resultMap id="tFascTemplateDetailExportMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailExportVo">
<result property="signTemplateName" column="sign_template_name"/>
<result property="signTemplateId" column="sign_template_id"/>
<result property="signTemplateStatus" column="sign_template_status"/>
<result property="fascField" column="fasc_field"/>
<result property="fascFieldId" column="fasc_field_id"/>
<result property="isMust" column="is_must"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="contractType" column="contract_type"/>
<result property="hrField" column="hr_field"/>
<result property="hrFieldId" column="hr_field_id"/>
<result property="isEdit" column="is_edit"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.sign_template_id,
a.fasc_field,
a.fasc_field_id,
a.is_must,
a.delete_flag,
a.hr_field,
a.hr_field_id,
a.is_edit,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME,
b.sign_template_name,
b.sign_template_status,
b.contract_type
</sql>
<sql id="tFascTemplateDetail_where">
<if test="tFascTemplateDetail != null">
<if test="tFascTemplateDetail.id != null and tFascTemplateDetail.id.trim() != ''">
AND a.id = #{tFascTemplateDetail.id}
</if>
<if test="tFascTemplateDetail.signTemplateId != null and tFascTemplateDetail.signTemplateId.trim() != ''">
AND a.sign_template_id = #{tFascTemplateDetail.signTemplateId}
</if>
<if test="tFascTemplateDetail.fascField != null and tFascTemplateDetail.fascField.trim() != ''">
AND a.fasc_field like concat('%', #{tFascTemplateDetail.fascField}, '%')
</if>
<if test="tFascTemplateDetail.fascFieldId != null and tFascTemplateDetail.fascFieldId.trim() != ''">
AND a.fasc_field_id = #{tFascTemplateDetail.fascFieldId}
</if>
<if test="tFascTemplateDetail.isMust != null and tFascTemplateDetail.isMust.trim() != ''">
AND a.is_must = #{tFascTemplateDetail.isMust}
</if>
<if test="tFascTemplateDetail.deleteFlag != null and tFascTemplateDetail.deleteFlag.trim() != ''">
AND a.delete_flag = #{tFascTemplateDetail.deleteFlag}
</if>
<if test="tFascTemplateDetail.hrField != null and tFascTemplateDetail.hrField.trim() != ''">
AND a.hr_field like concat('%', #{tFascTemplateDetail.hrField}, '%')
</if>
<if test="tFascTemplateDetail.hrFieldId != null and tFascTemplateDetail.hrFieldId.trim() != ''">
AND a.hr_field_id = #{tFascTemplateDetail.hrFieldId}
</if>
<if test="tFascTemplateDetail.isEdit != null and tFascTemplateDetail.isEdit.trim() != ''">
AND a.is_edit = #{tFascTemplateDetail.isEdit}
</if>
<if test="tFascTemplateDetail.createBy != null and tFascTemplateDetail.createBy.trim() != ''">
AND a.CREATE_BY = #{tFascTemplateDetail.createBy}
</if>
<if test="tFascTemplateDetail.createName != null and tFascTemplateDetail.createName.trim() != ''">
AND a.CREATE_NAME = #{tFascTemplateDetail.createName}
</if>
<if test="tFascTemplateDetail.createTime != null">
AND a.CREATE_TIME = #{tFascTemplateDetail.createTime}
</if>
<if test="tFascTemplateDetail.updateBy != null and tFascTemplateDetail.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tFascTemplateDetail.updateBy}
</if>
<if test="tFascTemplateDetail.updateTime != null">
AND a.UPDATE_TIME = #{tFascTemplateDetail.updateTime}
</if>
<if test="tFascTemplateDetail.signTemplateName != null and tFascTemplateDetail.signTemplateName.trim() != ''">
AND b.sign_template_name like concat('%', #{tFascTemplateDetail.signTemplateName}, '%')
</if>
<if test="tFascTemplateDetail.signTemplateStatus != null and tFascTemplateDetail.signTemplateStatus.trim() != ''">
AND b.sign_template_status = #{tFascTemplateDetail.signTemplateStatus}
</if>
<if test="tFascTemplateDetail.contractType != null and tFascTemplateDetail.contractType.trim() != ''">
AND b.contract_type = #{tFascTemplateDetail.contractType}
</if>
</if>
</sql>
<!--tFascTemplateDetail简单分页查询-->
<select id="getTFascTemplateDetailPage" resultMap="tFascTemplateDetailMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_template_detail a
left join t_fasc_template b on a.sign_template_id = b.sign_template_id
<where>
1=1
<include refid="tFascTemplateDetail_where"/>
</where>
ORDER BY a.CREATE_TIME ASC
</select>
<!--tFascTemplateDetail简单分页查询-->
<select id="getTFascTemplateDetailList" resultMap="tFascTemplateDetailMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_template_detail a
left join t_fasc_template b on a.sign_template_id = b.sign_template_id
<where>
1=1
<include refid="tFascTemplateDetail_where"/>
</where>
ORDER BY a.CREATE_TIME ASC
</select>
<!--导出-->
<select id="getTFascTemplateDetailExport" resultMap="tFascTemplateDetailExportMap">
SELECT
b.sign_template_name,
a.sign_template_id,
if(b.sign_template_status = 'valid', '启用', if(b.sign_template_status = 'invalid', '停用', '草稿')) sign_template_status,
a.fasc_field,
a.fasc_field_id,
if(a.is_must='0','否','是') is_must,
if(a.delete_flag='0','否','是') delete_flag,
b.contract_type,
a.hr_field,
a.hr_field_id,
if(a.is_edit='1','已配置','未配置') is_edit
FROM t_fasc_template_detail a
left join t_fasc_template b on a.sign_template_id = b.sign_template_id
<where>
1=1
<include refid="tFascTemplateDetail_where"/>
<if test="idList != null and idList.size>0">
AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
</where>
ORDER BY a.CREATE_TIME ASC
<if test="tFascTemplateDetail != null">
<if test="tFascTemplateDetail.limitStart != null">
limit #{tFascTemplateDetail.limitStart},#{tFascTemplateDetail.limitEnd}
</if>
</if>
</select>
<select id="getTFascTemplateDetailExportCount" resultType="java.lang.Long">
SELECT
count(1)
FROM t_fasc_template_detail a
left join t_fasc_template b on a.sign_template_id = b.sign_template_id
<where>
1=1
<include refid="tFascTemplateDetail_where"/>
<if test="idList != null and idList.size>0">
AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!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.archives.mapper.TFascTemplateMapper">
<resultMap id="tFascTemplateMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate">
<id property="id" column="id"/>
<result property="companyName" column="company_name"/>
<result property="signName" column="sign_name"/>
<result property="signOpenId" column="sign_open_id"/>
<result property="signTemplateId" column="sign_template_id"/>
<result property="signTemplateName" column="sign_template_name"/>
<result property="signTemplateStatus" column="sign_template_status"/>
<result property="creatorMemberName" column="creator_member_name"/>
<result property="fascCreateTime" column="fasc_create_time"/>
<result property="fascUpdateTime" column="fasc_update_time"/>
<result property="zhangName" column="zhang_name"/>
<result property="isMianQian" column="is_mian_qian"/>
<result property="contractType" column="contract_type"/>
<result property="isMustEdit" column="is_must_edit"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
<!-- 非数据库字段,用来比较厚,更新日志 -->
<result property="isMustNow" column="is_must_now"/>
<result property="isMustAll" column="is_must_all"/>
</resultMap>
<resultMap id="tFascTemplateExportMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateExportVo">
<result property="companyName" column="company_name"/>
<result property="signName" column="sign_name"/>
<result property="signOpenId" column="sign_open_id"/>
<result property="signTemplateId" column="sign_template_id"/>
<result property="signTemplateName" column="sign_template_name"/>
<result property="signTemplateStatus" column="sign_template_status"/>
<result property="creatorMemberName" column="creator_member_name"/>
<result property="fascUpdateTime" column="fasc_update_time"/>
<result property="zhangName" column="zhang_name"/>
<result property="isMianQian" column="is_mian_qian"/>
<result property="contractType" column="contract_type"/>
<result property="isMustEdit" column="is_must_edit"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.company_name,
a.sign_name,
a.sign_open_id,
a.sign_template_id,
a.sign_template_name,
a.sign_template_status,
a.creator_member_name,
a.fasc_create_time,
a.fasc_update_time,
a.zhang_name,
a.is_mian_qian,
a.contract_type,
a.is_must_edit,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tFascTemplate_where">
<if test="tFascTemplate != null">
<if test="tFascTemplate.id != null and tFascTemplate.id.trim() != ''">
AND a.id = #{tFascTemplate.id}
</if>
<if test="tFascTemplate.companyName != null and tFascTemplate.companyName.trim() != ''">
AND a.company_name like concat('%', #{tFascTemplate.companyName}, '%')
</if>
<if test="tFascTemplate.signName != null and tFascTemplate.signName.trim() != ''">
AND a.sign_name like concat('%', #{tFascTemplate.signName}, '%')
</if>
<if test="tFascTemplate.signOpenId != null and tFascTemplate.signOpenId.trim() != ''">
AND a.sign_open_id = #{tFascTemplate.signOpenId}
</if>
<if test="tFascTemplate.signTemplateId != null and tFascTemplate.signTemplateId.trim() != ''">
AND a.sign_template_id = #{tFascTemplate.signTemplateId}
</if>
<if test="tFascTemplate.signTemplateName != null and tFascTemplate.signTemplateName.trim() != ''">
AND a.sign_template_name like concat('%', #{tFascTemplate.signTemplateName}, '%')
</if>
<if test="tFascTemplate.signTemplateStatus != null and tFascTemplate.signTemplateStatus.trim() != ''">
AND a.sign_template_status = #{tFascTemplate.signTemplateStatus}
</if>
<if test="tFascTemplate.creatorMemberName != null and tFascTemplate.creatorMemberName.trim() != ''">
AND a.creator_member_name like concat('%', #{tFascTemplate.creatorMemberName}, '%')
</if>
<if test="tFascTemplate.fascCreateTime != null">
AND a.fasc_create_time = #{tFascTemplate.fascCreateTime}
</if>
<if test="tFascTemplate.fascUpdateTime != null">
AND a.fasc_update_time = #{tFascTemplate.fascUpdateTime}
</if>
<if test="tFascTemplate.zhangName != null and tFascTemplate.zhangName.trim() != ''">
AND a.zhang_name like concat('%', #{tFascTemplate.zhangName}, '%')
</if>
<if test="tFascTemplate.isMianQian != null and tFascTemplate.isMianQian.trim() != ''">
AND a.is_mian_qian = #{tFascTemplate.isMianQian}
</if>
<if test="tFascTemplate.contractType != null and tFascTemplate.contractType.trim() != ''">
AND a.contract_type = #{tFascTemplate.contractType}
</if>
<if test="tFascTemplate.isMustEdit != null and tFascTemplate.isMustEdit.trim() != ''">
AND a.is_must_edit = #{tFascTemplate.isMustEdit}
</if>
<if test="tFascTemplate.createBy != null and tFascTemplate.createBy.trim() != ''">
AND a.CREATE_BY = #{tFascTemplate.createBy}
</if>
<if test="tFascTemplate.createName != null and tFascTemplate.createName.trim() != ''">
AND a.CREATE_NAME = #{tFascTemplate.createName}
</if>
<if test="tFascTemplate.createTime != null">
AND a.CREATE_TIME = #{tFascTemplate.createTime}
</if>
<if test="tFascTemplate.updateBy != null and tFascTemplate.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tFascTemplate.updateBy}
</if>
<if test="tFascTemplate.updateTime != null">
AND a.UPDATE_TIME = #{tFascTemplate.updateTime}
</if>
</if>
</sql>
<!--tFascTemplate简单分页查询-->
<select id="getTFascTemplatePage" resultMap="tFascTemplateMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_template a
<where>
a.delete_flag = '0'
<include refid="tFascTemplate_where"/>
</where>
ORDER BY a.fasc_create_time ASC
</select>
<!--tFascTemplate简单分页查询-->
<select id="getTFascTemplateList" resultMap="tFascTemplateMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_fasc_template a
<where>
a.delete_flag = '0'
<include refid="tFascTemplate_where"/>
</where>
ORDER BY a.fasc_create_time ASC
</select>
<!--导出-->
<select id="getTFascTemplateExport" resultMap="tFascTemplateExportMap">
SELECT
a.company_name,
a.sign_name,
a.sign_open_id,
a.sign_template_id,
a.sign_template_name,
a.creator_member_name,
date_format(a.fasc_update_time, '%Y-%m-%d %H:%i:%s') fasc_update_time,
a.zhang_name,
if(a.sign_template_status = 'valid', '启用', if(a.sign_template_status = 'invalid', '停用', '草稿')) sign_template_status,
if(a.is_mian_qian='0','否','是') is_mian_qian,
a.contract_type,
if(a.is_must_edit = '2', '已配置', if(a.sign_template_status = '1', '部分配置', '未配置')) is_must_edit
FROM t_fasc_template a
<where>
a.delete_flag = '0'
<include refid="tFascTemplate_where"/>
<if test="idList != null and idList.size>0">
AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
</where>
ORDER BY a.fasc_create_time ASC
<if test="tFascTemplate != null">
<if test="tFascTemplate.limitStart != null">
limit #{tFascTemplate.limitStart},#{tFascTemplate.limitEnd}
</if>
</if>
</select>
<!--获取所有要更新是否必填的模板数据-->
<select id="getTFascTemplateResutList" resultMap="tFascTemplateMap">
SELECT
A.id,
A.sign_template_id,
A.is_must_edit,
-- 统计必填且有字段ID的数量
(SELECT COUNT(*) FROM t_fasc_template_detail B
WHERE B.delete_flag='0' and B.sign_template_id = A.sign_template_id
AND B.is_must = 1 AND B.hr_field_id IS NOT NULL AND B.hr_field_id != '') as is_must_now,
-- 统计总明细数量
(SELECT COUNT(*) FROM t_fasc_template_detail B
WHERE B.delete_flag='0' and B.sign_template_id = A.sign_template_id AND B.is_must = 1) as is_must_all
FROM t_fasc_template A WHERE A.delete_flag = '0'
<if test="templateId != null and templateId.trim() != ''">
and A.sign_template_id = #{templateId}
</if>
</select>
</mapper>
...@@ -394,4 +394,27 @@ public class LocalDateTimeUtils { ...@@ -394,4 +394,27 @@ public class LocalDateTimeUtils {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN);
return dateTime.format(formatter); return dateTime.format(formatter);
} }
/**
* @param time “Unix标准时间戳”是从1970年1月1日(UTC/GMT的午夜)开始所经过的毫秒数,数据类型为整数型
* @Description: 将整数型时间毫秒数,转化为LocalDateTime
* @Author: hgw
* @Date: 2025/10/10 11:27
* @return: java.time.LocalDateTime
**/
public static LocalDateTime coverStringToLDT(String time) {
if (time == null) {
return null;
}
LocalDateTime dateTime;
try {
dateTime = Instant.ofEpochMilli(Long.parseLong(time))
.atZone(ZoneId.systemDefault()) // 使用系统默认时区
.toLocalDateTime();
// 使用a进行后续操作
} catch (NumberFormatException e) {
dateTime = null;
}
return dateTime;
}
} }
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