Commit 423c4889 authored by huyuchen's avatar huyuchen

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

parents 97370ade 7ff6d8e1
/*
* 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 fxj
* @date 2025-11-06 16:26:08
*/
@Data
@TableName("t_auto_fund_rule_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "公积金购买规则主表")
public class TAutoFundRuleInfo extends BaseEntity {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键ID")
@Schema(description = "主键ID")
private String id;
/**
* 项目配置ID
*/
@ExcelAttribute(name = "项目配置ID", errorInfo = "项目配置ID不能为空", maxLength = 32)
@NotBlank(message = "项目配置ID不能为空")
@Length(max = 32, message = "项目配置ID不能超过32个字符")
@ExcelProperty("项目配置ID")
@Schema(description = "项目配置ID")
private String mainId;
/**
* 是否自动触发派增(字典:0自动触发派增,1:手动派增)
*/
@ExcelAttribute(name = "是否自动触发派增", isNotEmpty = true, errorInfo = "是否自动触发派增不能为空", maxLength = 1)
@NotBlank(message = "是否自动触发派增不能为空")
@Length(max = 1, message = "是否自动触发派增不能超过1个字符")
@ExcelProperty("是否自动触发派增")
@Schema(description = "是否自动触发派增(字典:0自动触发派增,1:手动派增)")
private String autoFlag;
/**
* 派单发起时间(字典:0:起缴日期当日)
*/
@ExcelAttribute(name = "派单发起时间", maxLength = 2)
@Length(max = 2, message = "派单发起时间不能超过2个字符")
@ExcelProperty("派单发起时间")
@Schema(description = "派单发起时间(字典:0:起缴日期当日)")
private String startPeriod;
/**
* 派单发起具体时间字典:0:15:20
*/
@ExcelAttribute(name = "派单发起具体时间字典:0:15:20", maxLength = 10)
@Length(max = 10, message = "派单发起具体时间字典:0:15:20不能超过10个字符")
@ExcelProperty("派单发起具体时间字典:0:15:20")
@Schema(description = "派单发起具体时间字典:0:15:20")
private String startTime;
/**
* 派单确认时间,字典:0:派单发起当日
*/
@ExcelAttribute(name = "派单确认时间", maxLength = 50)
@Length(max = 50, message = "派单确认时间不能超过50个字符")
@ExcelProperty("派单确认时间")
@Schema(description = "派单确认时间,字典:0:派单发起当日")
private String confirmPeriod;
/**
* 派单确认具体时间:字典0:09:00
*/
@ExcelAttribute(name = "派单确认具体时间", maxLength = 10)
@Length(max = 10, message = "派单确认具体时间不能超过10个字符")
@ExcelProperty("派单确认具体时间")
@Schema(description = "派单确认具体时间:0:09:00")
private String confirmTime;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码", errorInfo = "项目编码不能为空", maxLength = 50)
@NotBlank(message = "项目编码不能为空")
@Length(max = 50, message = "项目编码不能超过50个字符")
@ExcelProperty("项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 项目ID
*/
@ExcelAttribute(name = "项目ID", errorInfo = "项目ID不能为空", maxLength = 50)
@NotBlank(message = "项目ID不能为空")
@Length(max = 50, message = "项目ID不能超过50个字符")
@ExcelProperty("项目ID")
@Schema(description = "项目ID")
private String deptId;
}
/*
* 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;
import java.math.BigDecimal;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
@Data
@TableName("t_auto_fund_rule_rel")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "公积金购买规则明细表")
public class TAutoFundRuleRel extends BaseEntity {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键ID")
@Schema(description = "主键ID")
private String id;
/**
* 公积金配置ID
*/
@ExcelAttribute(name = "公积金配置ID", errorInfo = "公积金配置ID不能为空", maxLength = 32)
@NotBlank(message = "公积金配置ID不能为空")
@Length(max = 32, message = "公积金配置ID不能超过32个字符")
@ExcelProperty("公积金配置ID")
@Schema(description = "公积金配置ID")
private String mainId;
/**
* 配置名称
*/
@ExcelAttribute(name = "配置名称", isNotEmpty = true, errorInfo = "配置名称不能为空", maxLength = 50)
@NotBlank(message = "配置名称不能为空")
@Length(max = 50, message = "配置名称不能超过50个字符")
@ExcelProperty("配置名称")
@Schema(description = "配置名称")
private String configName;
/**
* 公积金户ID
*/
@ExcelAttribute(name = "公积金户ID", maxLength = 50)
@Length(max = 50, message = "公积金户ID不能超过50个字符")
@ExcelProperty("公积金户ID")
@Schema(description = "公积金户ID")
private String configHouseId;
/**
* 公积金户名称
*/
@ExcelAttribute(name = "公积金户名称", maxLength = 100)
@Length(max = 100, message = "公积金户名称不能超过100个字符")
@ExcelProperty("公积金户名称")
@Schema(description = "公积金户名称")
private String configHouseName;
/**
* 公积金单位个人比例是否一致(0-是,1-否)
*/
@ExcelAttribute(name = "公积金单位个人比例是否一致)", maxLength = 1)
@Length(max = 1, message = "公积金单位个人比例是否一致不能超过1个字符")
@ExcelProperty("公积金单位个人比例是否一致")
@Schema(description = "公积金单位个人比例是否一致(0-是,1-否)")
private String fundPerFlag;
/**
* 起缴日期类型:0 入职日期 1 入职满1年次月 2 人员自定义
*/
@ExcelAttribute(name = "起缴日期类型", maxLength = 2)
@Length(max = 2, message = "起缴日期类型不能超过2个字符")
@ExcelProperty("起缴日期类型")
@Schema(description = "起缴日期类型:0 入职日期 1 入职满1年次月 2 人员自定义")
private String fundDateType;
/**
* 缴纳基数类型:0最低、1自定义、2最高、3固定基数
*/
@ExcelAttribute(name = "缴纳基数类型", maxLength = 2)
@Length(max = 2, message = "缴纳基数类型不能超过2个字符")
@ExcelProperty("缴纳基数类型")
@Schema(description = "缴纳基数类型:0最低、1自定义、2最高、3固定基数")
private String paymentType;
/**
* 公积金基数
*/
@ExcelAttribute(name = "公积金基数")
@ExcelProperty("公积金基数")
@Schema(description = "公积金基数")
private BigDecimal fundBase;
/**
* 公积金单位比例
*/
@ExcelAttribute(name = "公积金单位比例", maxLength = 30)
@Length(max = 30, message = "公积金单位比例不能超过30个字符")
@ExcelProperty("公积金单位比例")
@Schema(description = "公积金单位比例")
private String fundCompanyPer;
/**
* 公积金个人比例
*/
@ExcelAttribute(name = "公积金个人比例", maxLength = 100)
@Length(max = 100, message = "公积金个人比例不能超过100个字符")
@ExcelProperty("公积金个人比例")
@Schema(description = "公积金个人比例")
private String fundPersonalPer;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码", errorInfo = "项目编码不能为空", maxLength = 50)
@NotBlank(message = "项目编码不能为空")
@Length(max = 50, message = "项目编码不能超过50个字符")
@ExcelProperty("项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 项目ID
*/
@ExcelAttribute(name = "项目ID", errorInfo = "项目ID不能为空", maxLength = 50)
@NotBlank(message = "项目ID不能为空")
@Length(max = 50, message = "项目ID不能超过50个字符")
@ExcelProperty("项目ID")
@Schema(description = "项目ID")
private String deptId;
/**
* 缴纳地-省(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-省(社保或公积金)")
@ExcelProperty("缴纳地-省(社保或公积金)")
@Schema(description = "缴纳地-省(社保或公积金)")
private Integer province;
/**
* 缴纳地-市(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-市(社保或公积金)")
@ExcelProperty("缴纳地-市(社保或公积金)")
@Schema(description = "缴纳地-市(社保或公积金)")
private Integer city;
/**
* 缴纳地-县(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-县(社保或公积金)")
@ExcelProperty("缴纳地-县(社保或公积金)")
@Schema(description = "缴纳地-县(社保或公积金)")
private Integer town;
/**
* 基数上限(社保或公积金)
*/
@ExcelAttribute(name = "基数上限(社保或公积金)")
@ExcelProperty("基数上限(社保或公积金)")
@Schema(description = "基数上限(社保或公积金)")
private BigDecimal upperLimit;
/**
* 基数下限(社保或公积金)
*/
@ExcelAttribute(name = "基数下限(社保或公积金)")
@ExcelProperty("基数下限(社保或公积金)")
@Schema(description = "基数下限(社保或公积金)")
private BigDecimal lowerLimit;
}
/*
* 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.TAutoFundRuleInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 公积金购买规则主表
*
* @author fxj
* @date 2025-11-06 16:26:08
*/
@Data
public class TAutoFundRuleInfoSearchVo extends TAutoFundRuleInfo {
/**
* 多选导出或删除等操作
*/
@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.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
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 fxj
* @date 2025-11-06 16:26:08
*/
@Data
public class TAutoFundRuleInfoVo extends RowIndex implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "主键ID 不能为空")
@Length(max = 32, message = "主键ID 不能超过32 个字符")
@ExcelAttribute(name = "主键ID", isNotEmpty = true, errorInfo = "主键ID 不能为空", maxLength = 32)
@Schema(description = "主键ID")
@ExcelProperty("主键ID")
private String id;
/**
* 项目配置ID
*/
@NotBlank(message = "项目配置ID 不能为空")
@Length(max = 32, message = "项目配置ID 不能超过32 个字符")
@ExcelAttribute(name = "项目配置ID", isNotEmpty = true, errorInfo = "项目配置ID 不能为空", maxLength = 32)
@Schema(description = "项目配置ID")
@ExcelProperty("项目配置ID")
private String mainId;
/**
* 是否自动触发派增(字典:0自动触发派增,1:手动派增)
*/
@NotBlank(message = "是否自动触发派增(字典:0自动触发派增,1:手动派增) 不能为空")
@Length(max = 1, message = "是否自动触发派增(字典:0自动触发派增,1:手动派增) 不能超过1 个字符")
@ExcelAttribute(name = "是否自动触发派增(字典:0自动触发派增,1:手动派增)", isNotEmpty = true, errorInfo = "是否自动触发派增(字典:0自动触发派增,1:手动派增) 不能为空", maxLength = 1)
@Schema(description = "是否自动触发派增(字典:0自动触发派增,1:手动派增)")
@ExcelProperty("是否自动触发派增(字典:0自动触发派增,1:手动派增)")
private String autoFlag;
/**
* 派单发起时间(字典::0:入职满1个月...入职满6个月)
*/
@Length(max = 2, message = "派单发起时间(字典::0:入职满1个月...入职满6个月) 不能超过2 个字符")
@ExcelAttribute(name = "派单发起时间(字典::0:入职满1个月...入职满6个月)", maxLength = 2)
@Schema(description = "派单发起时间(字典::0:入职满1个月...入职满6个月)")
@ExcelProperty("派单发起时间(字典::0:入职满1个月...入职满6个月)")
private String startPeriod;
/**
* 派单发起具体时间字典:0:15:20
*/
@Length(max = 10, message = "派单发起具体时间字典:0:15:20 不能超过10 个字符")
@ExcelAttribute(name = "派单发起具体时间字典:0:15:20", maxLength = 10)
@Schema(description = "派单发起具体时间字典:0:15:20")
@ExcelProperty("派单发起具体时间字典:0:15:20")
private String startTime;
/**
* 派单确认时间,字典:0:派单发起当日
*/
@Length(max = 50, message = "派单确认时间,字典:0:派单发起当日 不能超过50 个字符")
@ExcelAttribute(name = "派单确认时间,字典:0:派单发起当日", maxLength = 50)
@Schema(description = "派单确认时间,字典:0:派单发起当日")
@ExcelProperty("派单确认时间,字典:0:派单发起当日")
private String confirmPeriod;
/**
* 派单确认具体时间
*/
@Length(max = 10, message = "派单确认具体时间 不能超过10 个字符")
@ExcelAttribute(name = "派单确认具体时间", maxLength = 10)
@Schema(description = "派单确认具体时间")
@ExcelProperty("派单确认具体时间")
private String confirmTime;
/**
* 项目编码
*/
@NotBlank(message = "项目编码 不能为空")
@Length(max = 50, message = "项目编码 不能超过50 个字符")
@ExcelAttribute(name = "项目编码", isNotEmpty = true, errorInfo = "项目编码 不能为空", maxLength = 50)
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 项目ID
*/
@NotBlank(message = "项目ID 不能为空")
@Length(max = 50, message = "项目ID 不能超过50 个字符")
@ExcelAttribute(name = "项目ID", isNotEmpty = true, errorInfo = "项目ID 不能为空", maxLength = 50)
@Schema(description = "项目ID")
@ExcelProperty("项目ID")
private String deptId;
}
/*
* 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.TAutoFundRuleRel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
@Data
public class TAutoFundRuleRelSearchVo extends TAutoFundRuleRel {
/**
* 多选导出或删除等操作
*/
@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.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
@Data
public class TAutoFundRuleRelVo extends RowIndex implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "主键ID 不能为空")
@Length(max = 32, message = "主键ID 不能超过32 个字符")
@ExcelAttribute(name = "主键ID", isNotEmpty = true, errorInfo = "主键ID 不能为空", maxLength = 32)
@Schema(description = "主键ID")
@ExcelProperty("主键ID")
private String id;
/**
* 公积金配置ID
*/
@NotBlank(message = "公积金配置ID 不能为空")
@Length(max = 32, message = "公积金配置ID 不能超过32 个字符")
@ExcelAttribute(name = "公积金配置ID", isNotEmpty = true, errorInfo = "公积金配置ID 不能为空", maxLength = 32)
@Schema(description = "公积金配置ID")
@ExcelProperty("公积金配置ID")
private String mainId;
/**
* 配置名称
*/
@NotBlank(message = "配置名称 不能为空")
@Length(max = 50, message = "配置名称 不能超过50 个字符")
@ExcelAttribute(name = "配置名称", isNotEmpty = true, errorInfo = "配置名称 不能为空", maxLength = 50)
@Schema(description = "配置名称")
@ExcelProperty("配置名称")
private String configName;
/**
* 公积金户ID
*/
@Length(max = 50, message = "公积金户ID 不能超过50 个字符")
@ExcelAttribute(name = "公积金户ID", maxLength = 50)
@Schema(description = "公积金户ID")
@ExcelProperty("公积金户ID")
private String configHouseId;
/**
* 公积金户名称
*/
@Length(max = 100, message = "公积金户名称 不能超过100 个字符")
@ExcelAttribute(name = "公积金户名称", maxLength = 100)
@Schema(description = "公积金户名称")
@ExcelProperty("公积金户名称")
private String configHouseName;
/**
* 公积金单位个人比例是否一致(0-是,1-否)
*/
@Length(max = 1, message = "公积金单位个人比例是否一致(0-是,1-否) 不能超过1 个字符")
@ExcelAttribute(name = "公积金单位个人比例是否一致(0-是,1-否)", maxLength = 1)
@Schema(description = "公积金单位个人比例是否一致(0-是,1-否)")
@ExcelProperty("公积金单位个人比例是否一致(0-是,1-否)")
private String fundPerFlag;
/**
* 起缴日期:0 入职日期
*/
@Length(max = 2, message = "起缴日期:0 入职日期 不能超过2 个字符")
@ExcelAttribute(name = "起缴日期:0 入职日期", maxLength = 2)
@Schema(description = "起缴日期:0 入职日期")
@ExcelProperty("起缴日期:0 入职日期")
private String fundDateType;
/**
* 缴纳类型:0最低、1自定义、2最高、3固定基数
*/
@Length(max = 2, message = "缴纳类型:0最低、1自定义、2最高、3固定基数 不能超过2 个字符")
@ExcelAttribute(name = "缴纳类型:0最低、1自定义、2最高、3固定基数", maxLength = 2)
@Schema(description = "缴纳类型:0最低、1自定义、2最高、3固定基数")
@ExcelProperty("缴纳类型:0最低、1自定义、2最高、3固定基数")
private String paymentType;
/**
* 公积金基数
*/
@ExcelAttribute(name = "公积金基数")
@Schema(description = "公积金基数")
@ExcelProperty("公积金基数")
private BigDecimal fundBase;
/**
* 公积金单位比例
*/
@Length(max = 30, message = "公积金单位比例 不能超过30 个字符")
@ExcelAttribute(name = "公积金单位比例", maxLength = 30)
@Schema(description = "公积金单位比例")
@ExcelProperty("公积金单位比例")
private String fundCompanyPer;
/**
* 公积金个人比例
*/
@Length(max = 100, message = "公积金个人比例 不能超过100 个字符")
@ExcelAttribute(name = "公积金个人比例", maxLength = 100)
@Schema(description = "公积金个人比例")
@ExcelProperty("公积金个人比例")
private String fundPersonalPer;
/**
* 项目编码
*/
@NotBlank(message = "项目编码 不能为空")
@Length(max = 50, message = "项目编码 不能超过50 个字符")
@ExcelAttribute(name = "项目编码", isNotEmpty = true, errorInfo = "项目编码 不能为空", maxLength = 50)
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 项目ID
*/
@NotBlank(message = "项目ID 不能为空")
@Length(max = 50, message = "项目ID 不能超过50 个字符")
@ExcelAttribute(name = "项目ID", isNotEmpty = true, errorInfo = "项目ID 不能为空", maxLength = 50)
@Schema(description = "项目ID")
@ExcelProperty("项目ID")
private String deptId;
/**
* 缴纳地-省(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-省(社保或公积金)")
@Schema(description = "缴纳地-省(社保或公积金)")
@ExcelProperty("缴纳地-省(社保或公积金)")
private Integer province;
/**
* 缴纳地-市(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-市(社保或公积金)")
@Schema(description = "缴纳地-市(社保或公积金)")
@ExcelProperty("缴纳地-市(社保或公积金)")
private Integer city;
/**
* 缴纳地-县(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-县(社保或公积金)")
@Schema(description = "缴纳地-县(社保或公积金)")
@ExcelProperty("缴纳地-县(社保或公积金)")
private Integer town;
/**
* 基数上限(社保或公积金)
*/
@ExcelAttribute(name = "基数上限(社保或公积金)")
@Schema(description = "基数上限(社保或公积金)")
@ExcelProperty("基数上限(社保或公积金)")
private BigDecimal upperLimit;
/**
* 基数下限(社保或公积金)
*/
@ExcelAttribute(name = "基数下限(社保或公积金)")
@Schema(description = "基数下限(社保或公积金)")
@ExcelProperty("基数下限(社保或公积金)")
private BigDecimal lowerLimit;
}
...@@ -52,4 +52,10 @@ public class TAutoMainRelAddVo implements Serializable { ...@@ -52,4 +52,10 @@ public class TAutoMainRelAddVo implements Serializable {
//社保规则明细表 //社保规则明细表
private List<TAutoSocialRuleRel> socialRuleRels; private List<TAutoSocialRuleRel> socialRuleRels;
//社保规则主表
private TAutoFundRuleInfo fundRuleInfo;
//社保规则明细表
private List<TAutoFundRuleRel> fundRuleRels;
} }
...@@ -65,5 +65,10 @@ public class TAutoMainRelDetailVo implements Serializable { ...@@ -65,5 +65,10 @@ public class TAutoMainRelDetailVo implements Serializable {
//社保规则明细表 //社保规则明细表
private List<TAutoSocialRuleRel> socialRuleRels; private List<TAutoSocialRuleRel> socialRuleRels;
//公积金规则表
private TAutoFundRuleInfo fundRuleInfo;
//公积金规则明细表
private List<TAutoFundRuleRel> fundRuleRels;
} }
/*
* 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.TAutoFundRuleInfo;
import com.yifu.cloud.plus.v1.yifu.archives.service.TAutoFundRuleInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleInfoSearchVo;
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 org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公积金购买规则主表
*
* @author fxj
* @date 2025-11-06 16:26:08
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tautofundruleinfo")
@Tag(name = "社保购买规则主表管理")
public class TAutoFundRuleInfoController {
private final TAutoFundRuleInfoService tAutoFundRuleInfoService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tAutoFundRuleInfo 社保购买规则主表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TAutoFundRuleInfo>> getTAutoFundRuleInfoPage(Page<TAutoFundRuleInfo> page, TAutoFundRuleInfoSearchVo tAutoFundRuleInfo) {
return new R<>(tAutoFundRuleInfoService.getTAutoFundRuleInfoPage(page, tAutoFundRuleInfo));
}
/**
* 不分页查询
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
//@PreAuthorize("@pms.hasPermission('social_tautofundruleinfo_get')" )
public R<List<TAutoFundRuleInfo>> getTAutoFundRuleInfoNoPage(@RequestBody TAutoFundRuleInfoSearchVo tAutoFundRuleInfo) {
return R.ok(tAutoFundRuleInfoService.noPageDiy(tAutoFundRuleInfo));
}
/**
* 通过id查询社保购买规则主表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('social_tautofundruleinfo_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tautofundruleinfo_get')")
public R<TAutoFundRuleInfo> getById(@PathVariable("id") String id) {
return R.ok(tAutoFundRuleInfoService.getById(id));
}
/**
* 新增社保购买规则主表
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return R
*/
@Operation(summary = "新增社保购买规则主表", description = "新增社保购买规则主表:hasPermission('social_tautofundruleinfo_add')")
@SysLog("新增社保购买规则主表")
@PostMapping
@PreAuthorize("@pms.hasPermission('social_tautofundruleinfo_add')")
public R<Boolean> save(@RequestBody TAutoFundRuleInfo tAutoFundRuleInfo) {
return R.ok(tAutoFundRuleInfoService.save(tAutoFundRuleInfo));
}
/**
* 修改社保购买规则主表
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return R
*/
@Operation(summary = "修改社保购买规则主表", description = "修改社保购买规则主表:hasPermission('social_tautofundruleinfo_edit')")
@SysLog("修改社保购买规则主表")
@PutMapping
@PreAuthorize("@pms.hasPermission('social_tautofundruleinfo_edit')")
public R<Boolean> updateById(@RequestBody TAutoFundRuleInfo tAutoFundRuleInfo) {
return R.ok(tAutoFundRuleInfoService.updateById(tAutoFundRuleInfo));
}
/**
* 通过id删除社保购买规则主表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除社保购买规则主表", description = "通过id删除社保购买规则主表:hasPermission('social_tautofundruleinfo_del')")
@SysLog("通过id删除社保购买规则主表")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tautofundruleinfo_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tAutoFundRuleInfoService.removeById(id));
}
}
/*
* 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.TAutoFundRuleRel;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleRelSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.archives.service.TAutoFundRuleRelService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tautofundrulerel")
@Tag(name = "社保购买规则明细表管理")
public class TAutoFundRuleRelController {
private final TAutoFundRuleRelService tAutoFundRuleRelService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tAutoFundRuleRel 社保购买规则明细表
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TAutoFundRuleRel>> getTAutoFundRuleRelPage(Page<TAutoFundRuleRel> page, TAutoFundRuleRelSearchVo tAutoFundRuleRel) {
return new R<>(tAutoFundRuleRelService.getTAutoFundRuleRelPage(page, tAutoFundRuleRel));
}
/**
* 不分页查询
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
//@PreAuthorize("@pms.hasPermission('social_tautofundrulerel_get')" )
public R<List<TAutoFundRuleRel>> getTAutoFundRuleRelNoPage(@RequestBody TAutoFundRuleRelSearchVo tAutoFundRuleRel) {
return R.ok(tAutoFundRuleRelService.noPageDiy(tAutoFundRuleRel));
}
/**
* 通过id查询社保购买规则明细表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('social_tautofundrulerel_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tautofundrulerel_get')")
public R<TAutoFundRuleRel> getById(@PathVariable("id") String id) {
return R.ok(tAutoFundRuleRelService.getById(id));
}
/**
* 新增社保购买规则明细表
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return R
*/
@Operation(summary = "新增社保购买规则明细表", description = "新增社保购买规则明细表:hasPermission('social_tautofundrulerel_add')")
@SysLog("新增社保购买规则明细表")
@PostMapping
@PreAuthorize("@pms.hasPermission('social_tautofundrulerel_add')")
public R<Boolean> save(@RequestBody TAutoFundRuleRel tAutoFundRuleRel) {
return R.ok(tAutoFundRuleRelService.save(tAutoFundRuleRel));
}
/**
* 修改社保购买规则明细表
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return R
*/
@Operation(summary = "修改社保购买规则明细表", description = "修改社保购买规则明细表:hasPermission('social_tautofundrulerel_edit')")
@SysLog("修改社保购买规则明细表")
@PutMapping
@PreAuthorize("@pms.hasPermission('social_tautofundrulerel_edit')")
public R<Boolean> updateById(@RequestBody TAutoFundRuleRel tAutoFundRuleRel) {
return R.ok(tAutoFundRuleRelService.updateById(tAutoFundRuleRel));
}
/**
* 通过id删除社保购买规则明细表
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除社保购买规则明细表", description = "通过id删除社保购买规则明细表:hasPermission('social_tautofundrulerel_del')")
@SysLog("通过id删除社保购买规则明细表")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tautofundrulerel_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tAutoFundRuleRelService.removeById(id));
}
}
/*
* 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.TAutoFundRuleInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 公积金购买规则主表
*
* @author fxj
* @date 2025-11-06 16:26:08
*/
@Mapper
public interface TAutoFundRuleInfoMapper extends BaseMapper<TAutoFundRuleInfo> {
/**
* 社保购买规则主表简单分页查询
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return
*/
IPage<TAutoFundRuleInfo> getTAutoFundRuleInfoPage(Page<TAutoFundRuleInfo> page, @Param("tAutoFundRuleInfo") TAutoFundRuleInfo tAutoFundRuleInfo);
}
/*
* 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.TAutoFundRuleRel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
@Mapper
public interface TAutoFundRuleRelMapper extends BaseMapper<TAutoFundRuleRel> {
/**
* 社保购买规则明细表简单分页查询
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return
*/
IPage<TAutoFundRuleRel> getTAutoFundRuleRelPage(Page<TAutoFundRuleRel> page, @Param("tAutoFundRuleRel") TAutoFundRuleRel tAutoFundRuleRel);
}
/*
* 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.TAutoFundRuleInfo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleInfoSearchVo;
import java.util.List;
/**
* 公积金购买规则主表
*
* @author fxj
* @date 2025-11-06 16:26:08
*/
public interface TAutoFundRuleInfoService extends IService<TAutoFundRuleInfo> {
/**
* 社保购买规则主表简单分页查询
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return
*/
IPage<TAutoFundRuleInfo> getTAutoFundRuleInfoPage(Page<TAutoFundRuleInfo> page, TAutoFundRuleInfoSearchVo tAutoFundRuleInfo);
List<TAutoFundRuleInfo> noPageDiy(TAutoFundRuleInfoSearchVo 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.TAutoFundRuleRel;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleRelSearchVo;
import java.util.List;
/**
* 公积金购买规则明细表
*
* @author fxj
* @date 2025-11-06 16:26:07
*/
public interface TAutoFundRuleRelService extends IService<TAutoFundRuleRel> {
/**
* 社保购买规则明细表简单分页查询
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return
*/
IPage<TAutoFundRuleRel> getTAutoFundRuleRelPage(Page<TAutoFundRuleRel> page, TAutoFundRuleRelSearchVo tAutoFundRuleRel);
List<TAutoFundRuleRel> noPageDiy(TAutoFundRuleRelSearchVo 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 cn.hutool.core.util.ArrayUtil;
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.TAutoFundRuleInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAutoFundRuleInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TAutoFundRuleInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleInfoSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
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 fxj
* @date 2025-11-06 16:26:08
*/
@Log4j2
@Service
public class TAutoFundRuleInfoServiceImpl extends ServiceImpl<TAutoFundRuleInfoMapper, TAutoFundRuleInfo> implements TAutoFundRuleInfoService {
/**
* 社保购买规则主表简单分页查询
*
* @param tAutoFundRuleInfo 社保购买规则主表
* @return
*/
@Override
public IPage<TAutoFundRuleInfo> getTAutoFundRuleInfoPage(Page<TAutoFundRuleInfo> page, TAutoFundRuleInfoSearchVo tAutoFundRuleInfo) {
return baseMapper.getTAutoFundRuleInfoPage(page, tAutoFundRuleInfo);
}
@Override
public List<TAutoFundRuleInfo> noPageDiy(TAutoFundRuleInfoSearchVo searchVo) {
LambdaQueryWrapper<TAutoFundRuleInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TAutoFundRuleInfo::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 Long noPageCountDiy(TAutoFundRuleInfoSearchVo searchVo) {
LambdaQueryWrapper<TAutoFundRuleInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TAutoFundRuleInfo::getId, idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TAutoFundRuleInfoSearchVo entity) {
LambdaQueryWrapper<TAutoFundRuleInfo> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TAutoFundRuleInfo::getCreateTime, entity.getCreateTimes()[0])
.le(TAutoFundRuleInfo::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TAutoFundRuleInfo::getCreateName, entity.getCreateName());
}
return 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.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.TAutoFundRuleRel;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TAutoFundRuleRelMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TAutoFundRuleRelService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TAutoFundRuleRelSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
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 fxj
* @date 2025-11-06 16:26:07
*/
@Log4j2
@Service
public class TAutoFundRuleRelServiceImpl extends ServiceImpl<TAutoFundRuleRelMapper, TAutoFundRuleRel> implements TAutoFundRuleRelService {
/**
* 社保购买规则明细表简单分页查询
*
* @param tAutoFundRuleRel 社保购买规则明细表
* @return
*/
@Override
public IPage<TAutoFundRuleRel> getTAutoFundRuleRelPage(Page<TAutoFundRuleRel> page, TAutoFundRuleRelSearchVo tAutoFundRuleRel) {
return baseMapper.getTAutoFundRuleRelPage(page, tAutoFundRuleRel);
}
@Override
public List<TAutoFundRuleRel> noPageDiy(TAutoFundRuleRelSearchVo searchVo) {
LambdaQueryWrapper<TAutoFundRuleRel> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TAutoFundRuleRel::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 Long noPageCountDiy(TAutoFundRuleRelSearchVo searchVo) {
LambdaQueryWrapper<TAutoFundRuleRel> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TAutoFundRuleRel::getId, idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TAutoFundRuleRelSearchVo entity) {
LambdaQueryWrapper<TAutoFundRuleRel> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TAutoFundRuleRel::getCreateTime, entity.getCreateTimes()[0])
.le(TAutoFundRuleRel::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TAutoFundRuleRel::getCreateName, entity.getCreateName());
}
return wrapper;
}
}
...@@ -108,6 +108,14 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -108,6 +108,14 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
@Autowired @Autowired
private TAutoSocialRuleRelMapper autoSocialRuleRelMapper; private TAutoSocialRuleRelMapper autoSocialRuleRelMapper;
// 公积金规则主表Mapper
@Autowired
private TAutoFundRuleInfoMapper autoFundRuleInfoMapper;
// 公积金规则明细表Mapper
@Autowired
private TAutoFundRuleRelMapper autoFundRuleRelMapper;
@Autowired @Autowired
private SocialDaprUtils socialDaprUtils; private SocialDaprUtils socialDaprUtils;
...@@ -292,6 +300,12 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -292,6 +300,12 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
//社保规则配置明细表 //社保规则配置明细表
detailVo.setSocialRuleRels(autoSocialRuleRelMapper.selectList(Wrappers.<TAutoSocialRuleRel>query().lambda() detailVo.setSocialRuleRels(autoSocialRuleRelMapper.selectList(Wrappers.<TAutoSocialRuleRel>query().lambda()
.eq(TAutoSocialRuleRel::getDeptId,mainRel.getDeptId()))); .eq(TAutoSocialRuleRel::getDeptId,mainRel.getDeptId())));
//公积金规则配置表
detailVo.setFundRuleInfo(autoFundRuleInfoMapper.selectOne(Wrappers.<TAutoFundRuleInfo>query().lambda()
.eq(TAutoFundRuleInfo::getMainId,id)));
//公积金规则配置明细表
detailVo.setFundRuleRels(autoFundRuleRelMapper.selectList(Wrappers.<TAutoFundRuleRel>query().lambda()
.eq(TAutoFundRuleRel::getDeptId,mainRel.getDeptId())));
return R.ok(detailVo); return R.ok(detailVo);
} }
/** /**
...@@ -388,6 +402,23 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -388,6 +402,23 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
if (PARAM_IS_NOT_ERROR != null){ if (PARAM_IS_NOT_ERROR != null){
return PARAM_IS_NOT_ERROR; return PARAM_IS_NOT_ERROR;
} }
//校验公积金规则主表信息
TAutoFundRuleInfo autoFundRuleInfo = entity.getFundRuleInfo();
if (Common.isNotNull(autoFundRuleInfo)){
ExcelUtil<TAutoFundRuleInfo> excelUtil = new ExcelUtil<>(TAutoFundRuleInfo.class);
ErrorMessage errorMessage = excelUtil.checkEntity(autoFundRuleInfo,0);
if (Common.isNotNull(errorMessage)){
return R.failed(errorMessage.getMessage());
}
}
//校验公积金规则明细表信息
List<TAutoFundRuleRel> fundRuleRels = entity.getFundRuleRels();
PARAM_IS_NOT_ERROR = checkFundRuleRels(fundRuleRels);
if (PARAM_IS_NOT_ERROR != null){
return PARAM_IS_NOT_ERROR;
}
//新增主表 //新增主表
autoMainRel.setRuleUpdatePerson(user.getNickname()); autoMainRel.setRuleUpdatePerson(user.getNickname());
autoMainRel.setRuleUpdateTime(DateUtil.getCurrentDateTime()); autoMainRel.setRuleUpdateTime(DateUtil.getCurrentDateTime());
...@@ -467,6 +498,28 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -467,6 +498,28 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
autoSocialRuleRelMapper.insert(rel); autoSocialRuleRelMapper.insert(rel);
} }
} }
//新增公积金规则主表
if (Common.isNotNull(autoFundRuleInfo)){
autoFundRuleInfo.setDeptNo(autoMainRel.getDeptNo());
autoFundRuleInfo.setDeptId(autoMainRel.getDeptId());
autoFundRuleInfo.setMainId(autoMainRel.getId());
autoFundRuleInfo.setCreateBy(user.getId());
autoFundRuleInfo.setCreateTime(LocalDateTime.now());
autoFundRuleInfo.setCreateName(user.getNickname());
autoFundRuleInfoMapper.insert(autoFundRuleInfo);
}
//新增公积金规则明细表
if (Common.isNotNull(fundRuleRels)){
for (TAutoFundRuleRel rel:fundRuleRels){
rel.setMainId(autoFundRuleInfo.getId());
rel.setDeptNo(autoMainRel.getDeptNo());
rel.setDeptId(autoMainRel.getDeptId());
rel.setCreateBy(user.getId());
rel.setCreateTime(LocalDateTime.now());
rel.setCreateName(user.getNickname());
autoFundRuleRelMapper.insert(rel);
}
}
return R.ok(); return R.ok();
}catch (Exception e){ }catch (Exception e){
// 捕获异常并返回友好提示 // 捕获异常并返回友好提示
...@@ -736,6 +789,31 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -736,6 +789,31 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
return PARAM_IS_NOT_ERROR; return PARAM_IS_NOT_ERROR;
} }
//校验公积金规则主表信息
TAutoFundRuleInfo autoFundRuleNew = entity.getFundRuleInfo();
TAutoFundRuleInfo autoFundRuleOld = null;
if (Common.isNotNull(autoFundRuleNew)){
// 检查公积金规则信息的有效性
ExcelUtil<TAutoFundRuleInfo> excelUtil = new ExcelUtil<>(TAutoFundRuleInfo.class);
ErrorMessage errorMessage = excelUtil.checkEntity(autoFundRuleNew,0);
if (Common.isNotNull(errorMessage)){
return R.failed(errorMessage.getMessage());
}
// 根据ID查询原有的公积金规则信息
autoFundRuleOld = autoFundRuleInfoMapper.selectOne(Wrappers.<TAutoFundRuleInfo>query().lambda()
.eq(TAutoFundRuleInfo::getMainId,autoMainRel.getId()).last(CommonConstants.LAST_ONE_SQL));
}
//公积金规则明细是否更新标识 false 未更新 true 更新
boolean fundFlag = false;
List<TAutoFundRuleRel> fundRuleRelsOld = null;
//校验公积金规则明细
List<TAutoFundRuleRel> fundRuleRels = entity.getFundRuleRels();
PARAM_IS_NOT_ERROR = checkFundRuleRels(fundRuleRels);
if (PARAM_IS_NOT_ERROR != null){
return PARAM_IS_NOT_ERROR;
}
//保存商险规则 //保存商险规则
if (Common.isNotNull(autoInsurRuleNew)){ if (Common.isNotNull(autoInsurRuleNew)){
if (Common.isNotNull(autoInsurRuleNew.getId())){ if (Common.isNotNull(autoInsurRuleNew.getId())){
...@@ -870,6 +948,64 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -870,6 +948,64 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
// 判断数据对象是否都在页面传的对象里,有不在的数据,则返回true 目的是判断是否更新了 // 判断数据对象是否都在页面传的对象里,有不在的数据,则返回true 目的是判断是否更新了
socialFlag = checkSocialRuleRelForNotIn(socialRuleRelsOld,socialRuleRels); socialFlag = checkSocialRuleRelForNotIn(socialRuleRelsOld,socialRuleRels);
}
//保存公积金规则配置
if (Common.isNotNull(autoFundRuleNew)){
if (Common.isNotNull(autoFundRuleNew.getId())){
autoFundRuleNew.setUpdateBy(user.getId());
autoFundRuleNew.setUpdateTime(LocalDateTime.now());
autoContractRuleNew.setMainId(autoMainRel.getId());
autoFundRuleInfoMapper.updateById(autoFundRuleNew);
}else {
autoFundRuleNew.setDeptNo(autoMainRel.getDeptNo());
autoFundRuleNew.setDeptId(autoMainRel.getDeptId());
autoFundRuleNew.setMainId(autoMainRel.getId());
autoFundRuleNew.setCreateBy(user.getId());
autoFundRuleNew.setCreateTime(LocalDateTime.now());
autoFundRuleNew.setCreateName(user.getNickname());
autoFundRuleInfoMapper.insert(autoFundRuleNew);
}
//获取旧的公积金规则明细
if (Common.isNotNull(autoFundRuleNew.getId())){
//获取旧的公积金规则明细
fundRuleRelsOld = autoFundRuleRelMapper.selectList(Wrappers
.<TAutoFundRuleRel>query().lambda().eq(TAutoFundRuleRel::getMainId,autoFundRuleNew.getId()));
//先删除后面再批增
autoFundRuleRelMapper.delete(Wrappers.<TAutoFundRuleRel>query().lambda().eq(TAutoFundRuleRel::getMainId,autoFundRuleNew.getId()));
}
//保存公积金规则明细
if (Common.isNotNull(fundRuleRels)){
TAutoFundRuleRel temp = null;
for (TAutoFundRuleRel rel:fundRuleRels){
//存在新增的直接fundFlag =true 后面不在判断此种场景
if (!Common.isNotNull(rel.getId())){
fundFlag =true;
}
rel.setMainId(autoFundRuleNew.getId());
rel.setDeptNo(autoMainRel.getDeptNo());
rel.setDeptId(autoMainRel.getDeptId());
rel.setCreateBy(user.getId());
rel.setCreateTime(LocalDateTime.now());
rel.setCreateName(user.getNickname());
if (Common.isNotNull(rel.getId())){
temp = autoFundRuleRelMapper.selectById(rel.getId());
if (null != temp){
autoFundRuleRelMapper.updateById(rel);
}else {
autoFundRuleRelMapper.insert(rel);
}
}else {
autoFundRuleRelMapper.insert(rel);
}
}
}
// 判断数据对象是否都在页面传的对象里,有不在的数据,则返回true 目的是判断是否更新了
fundFlag = checkFundRuleRelForNotIn(fundRuleRelsOld,fundRuleRels);
} }
// 更新主表 // 更新主表
autoMainRel.setRuleUpdatePerson(user.getNickname()); autoMainRel.setRuleUpdatePerson(user.getNickname());
...@@ -1046,6 +1182,46 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu ...@@ -1046,6 +1182,46 @@ public class TAutoMainRelServiceImpl extends ServiceImpl<TAutoMainRelMapper, TAu
newMap.put("newSocialRuleRels",socialRuleRels); newMap.put("newSocialRuleRels",socialRuleRels);
} }
} }
//处理公积金规则日志 (更新时不存在规则删除的场景)
if (Common.isNotNull(autoFundRuleNew) && Common.isNotNull(autoFundRuleOld)){
differenceKey = HrEquator.comparisonValueIgnoreField(autoFundRuleOld, autoFundRuleNew,ignoreFields);
if (!Common.isEmpty(differenceKey)){
diffKeyMap.put("fundRule",differenceKey);
oldMap.put("oldFundRule",autoFundRuleOld);
newMap.put("newFundRule",autoFundRuleNew);
}
//处理公积金规则明细日志
diffKeys = new StringBuilder();
if (Common.isNotNull(fundRuleRels)){
Map<String,TAutoFundRuleRel> map;
// 不为空且无新增数据,为空前面校验过了,这里不处理
if (Common.isNotNull(fundRuleRels) && !fundFlag){
map = fundRuleRels.stream().collect(Collectors.toMap(TAutoFundRuleRel::getId, v->v));
if (Common.isNotNull(autoFundRuleOld)){
TAutoFundRuleRel newTemp;
for (TAutoFundRuleRel old:fundRuleRelsOld){
// 如果存在,则比较,不存在则标记为更新
newTemp = map.get(old.getId());
if (Common.isEmpty(newTemp)){
fundFlag = true;
newTemp = new TAutoFundRuleRel();
}
differenceKey = HrEquator.comparisonValueIgnoreField(old, newTemp,ignoreFields);
if (!Common.isEmpty(differenceKey)){
diffKeys.append(differenceKey);
fundFlag = true;
}
}
}
}
}
if (fundFlag){
diffKeyMap.put("fundRuleRel","fundRuleRels");
oldMap.put("oldFundRuleRels",fundRuleRelsOld);
newMap.put("newFundRuleRels",fundRuleRels);
}
}
// 插入变更日志 // 插入变更日志
insertLog(autoMainRel, diffKeyMap, oldMap, newMap); insertLog(autoMainRel, diffKeyMap, oldMap, newMap);
// 返回更新成功的响应 // 返回更新成功的响应
...@@ -1437,6 +1613,71 @@ private R<Boolean> checkItemRepeat(List<SysAutoDictItem> autoDictItems, Map<Stri ...@@ -1437,6 +1613,71 @@ private R<Boolean> checkItemRepeat(List<SysAutoDictItem> autoDictItems, Map<Stri
return false; // 所有数据都在现有集合中,无需额外处理 return false; // 所有数据都在现有集合中,无需额外处理
} }
/**
* @Author fxj
* @Description 校验公积金规则
* @Date 10:24 2025/6/11
**/
private R<Boolean> checkFundRuleRels(List<TAutoFundRuleRel> fundRuleRels) {
if (Common.isNotNull(fundRuleRels)){
ExcelUtil<TAutoFundRuleRel> excelUtil = new ExcelUtil<>(TAutoFundRuleRel.class);
ErrorMessage errorMessage;
for (TAutoFundRuleRel rel: fundRuleRels){
errorMessage = excelUtil.checkEntity(rel,0);
if (Common.isNotNull(errorMessage)){
return R.failed(errorMessage.getMessage());
}
//初始化最高最低基数及省市县
if (!Common.isNotNull(rel.getConfigHouseId())){
return R.failed("公积金户不可为空");
}
R<SysBaseSetInfoVo> resR = socialDaprUtils.getSocialHouseBaseSet(rel.getConfigHouseId());
if (Common.isNotNull(resR) && resR.getData() != null) {
SysBaseSetInfoVo setInfo = resR.getData();
rel.setLowerLimit(setInfo.getLowerLimit());
rel.setUpperLimit(setInfo.getUpperLimit());
rel.setProvince(setInfo.getProvince());
rel.setCity(setInfo.getCity());
rel.setTown(setInfo.getTown());
}else {
return R.failed("获取公积金配置信息失败!");
}
}
// 校验fundRuleRels 配置名称是否重复
Set<String> names = fundRuleRels.stream().map(TAutoFundRuleRel::getConfigName).collect(Collectors.toSet());
if (names.size() != fundRuleRels.size()) {
return R.failed(schemeNameRepeat);
}
}
return null;
}
/**
* @Author fxj
* @Description 校验公积金规则明细是否不在已存在的集合中
* @Date 10:24 2025/6/11
**/
private boolean checkFundRuleRelForNotIn(List<TAutoFundRuleRel> fundRuleRels, List<TAutoFundRuleRel> existingRuleRels) {
if (Common.isEmpty(fundRuleRels) && !Common.isEmpty(existingRuleRels)) {
return true; // 数据库数据无 新增有 返回true
}
if (!Common.isEmpty(fundRuleRels) && Common.isEmpty(existingRuleRels)) {
return true; // 数据库有 新增无返回 true
}
// 不为空判断
if (!Common.isEmpty(fundRuleRels) && !Common.isEmpty(existingRuleRels)) {
Set<String> existingKeys = existingRuleRels.stream()
.map(standard -> Optional.ofNullable(standard.getId()).orElse(""))
.collect(Collectors.toSet());
for (TAutoFundRuleRel standard : fundRuleRels) {
if (!existingKeys.contains(standard.getId())) {
return true; // 存在不在现有集合中的数据,表示需要处理
}
}
}
return false; // 所有数据都在现有集合中,无需额外处理
}
@Override @Override
public R<Boolean> updateAutoFlagById(String id, String autoFlag) { public R<Boolean> updateAutoFlagById(String id, String autoFlag) {
if (Common.isEmpty(id) if (Common.isEmpty(id)
......
<?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.TAutoFundRuleInfoMapper">
<resultMap id="tAutoFundRuleInfoMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TAutoFundRuleInfo">
<id property="id" column="ID"/>
<result property="mainId" column="MAIN_ID"/>
<result property="autoFlag" column="AUTO_FLAG"/>
<result property="startPeriod" column="START_PERIOD"/>
<result property="startTime" column="START_TIME"/>
<result property="confirmPeriod" column="CONFIRM_PERIOD"/>
<result property="confirmTime" column="CONFIRM_TIME"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="deptId" column="DEPT_ID"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="createBy" column="CREATE_BY"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.MAIN_ID,
a.AUTO_FLAG,
a.START_PERIOD,
a.START_TIME,
a.CONFIRM_PERIOD,
a.CONFIRM_TIME,
a.DEPT_NO,
a.DEPT_ID,
a.CREATE_TIME,
a.UPDATE_TIME,
a.CREATE_BY,
a.UPDATE_BY,
a.CREATE_NAME
</sql>
<sql id="tAutoFundRuleInfo_where">
<if test="tAutoFundRuleInfo != null">
<if test="tAutoFundRuleInfo.id != null and tAutoFundRuleInfo.id.trim() != ''">
AND a.ID = #{tAutoFundRuleInfo.id}
</if>
<if test="tAutoFundRuleInfo.mainId != null and tAutoFundRuleInfo.mainId.trim() != ''">
AND a.MAIN_ID = #{tAutoFundRuleInfo.mainId}
</if>
<if test="tAutoFundRuleInfo.autoFlag != null and tAutoFundRuleInfo.autoFlag.trim() != ''">
AND a.AUTO_FLAG = #{tAutoFundRuleInfo.autoFlag}
</if>
<if test="tAutoFundRuleInfo.startPeriod != null and tAutoFundRuleInfo.startPeriod.trim() != ''">
AND a.START_PERIOD = #{tAutoFundRuleInfo.startPeriod}
</if>
<if test="tAutoFundRuleInfo.startTime != null and tAutoFundRuleInfo.startTime.trim() != ''">
AND a.START_TIME = #{tAutoFundRuleInfo.startTime}
</if>
<if test="tAutoFundRuleInfo.confirmPeriod != null and tAutoFundRuleInfo.confirmPeriod.trim() != ''">
AND a.CONFIRM_PERIOD = #{tAutoFundRuleInfo.confirmPeriod}
</if>
<if test="tAutoFundRuleInfo.confirmTime != null and tAutoFundRuleInfo.confirmTime.trim() != ''">
AND a.CONFIRM_TIME = #{tAutoFundRuleInfo.confirmTime}
</if>
<if test="tAutoFundRuleInfo.deptNo != null and tAutoFundRuleInfo.deptNo.trim() != ''">
AND a.DEPT_NO = #{tAutoFundRuleInfo.deptNo}
</if>
<if test="tAutoFundRuleInfo.deptId != null and tAutoFundRuleInfo.deptId.trim() != ''">
AND a.DEPT_ID = #{tAutoFundRuleInfo.deptId}
</if>
<if test="tAutoFundRuleInfo.createTime != null">
AND a.CREATE_TIME = #{tAutoFundRuleInfo.createTime}
</if>
<if test="tAutoFundRuleInfo.updateTime != null">
AND a.UPDATE_TIME = #{tAutoFundRuleInfo.updateTime}
</if>
<if test="tAutoFundRuleInfo.createBy != null and tAutoFundRuleInfo.createBy.trim() != ''">
AND a.CREATE_BY = #{tAutoFundRuleInfo.createBy}
</if>
<if test="tAutoFundRuleInfo.updateBy != null and tAutoFundRuleInfo.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tAutoFundRuleInfo.updateBy}
</if>
<if test="tAutoFundRuleInfo.createName != null and tAutoFundRuleInfo.createName.trim() != ''">
AND a.CREATE_NAME = #{tAutoFundRuleInfo.createName}
</if>
</if>
</sql>
<!--tAutoFundRuleInfo简单分页查询-->
<select id="getTAutoFundRuleInfoPage" resultMap="tAutoFundRuleInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_auto_fund_rule_info a
<where>
1=1
<include refid="tAutoFundRuleInfo_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.TAutoFundRuleRelMapper">
<resultMap id="tAutoFundRuleRelMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TAutoFundRuleRel">
<id property="id" column="ID"/>
<result property="mainId" column="MAIN_ID"/>
<result property="configName" column="CONFIG_NAME"/>
<result property="configHouseId" column="CONFIG_HOUSE_ID"/>
<result property="configHouseName" column="CONFIG_HOUSE_NAME"/>
<result property="fundPerFlag" column="FUND_PER_FLAG"/>
<result property="fundDateType" column="FUND_DATE_TYPE"/>
<result property="paymentType" column="PAYMENT_TYPE"/>
<result property="fundBase" column="FUND_BASE"/>
<result property="fundCompanyPer" column="FUND_COMPANY_PER"/>
<result property="fundPersonalPer" column="FUND_PERSONAL_PER"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="deptId" column="DEPT_ID"/>
<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="province" column="PROVINCE"/>
<result property="city" column="CITY"/>
<result property="town" column="TOWN"/>
<result property="upperLimit" column="UPPER_LIMIT"/>
<result property="lowerLimit" column="LOWER_LIMIT"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.MAIN_ID,
a.CONFIG_NAME,
a.CONFIG_HOUSE_ID,
a.CONFIG_HOUSE_NAME,
a.FUND_PER_FLAG,
a.FUND_DATE_TYPE,
a.PAYMENT_TYPE,
a.FUND_BASE,
a.FUND_COMPANY_PER,
a.FUND_PERSONAL_PER,
a.DEPT_NO,
a.DEPT_ID,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME,
a.PROVINCE,
a.CITY,
a.TOWN,
a.UPPER_LIMIT,
a.LOWER_LIMIT
</sql>
<sql id="tAutoFundRuleRel_where">
<if test="tAutoFundRuleRel != null">
<if test="tAutoFundRuleRel.id != null and tAutoFundRuleRel.id.trim() != ''">
AND a.ID = #{tAutoFundRuleRel.id}
</if>
<if test="tAutoFundRuleRel.mainId != null and tAutoFundRuleRel.mainId.trim() != ''">
AND a.MAIN_ID = #{tAutoFundRuleRel.mainId}
</if>
<if test="tAutoFundRuleRel.configName != null and tAutoFundRuleRel.configName.trim() != ''">
AND a.CONFIG_NAME = #{tAutoFundRuleRel.configName}
</if>
<if test="tAutoFundRuleRel.configHouseId != null and tAutoFundRuleRel.configHouseId.trim() != ''">
AND a.CONFIG_HOUSE_ID = #{tAutoFundRuleRel.configHouseId}
</if>
<if test="tAutoFundRuleRel.configHouseName != null and tAutoFundRuleRel.configHouseName.trim() != ''">
AND a.CONFIG_HOUSE_NAME = #{tAutoFundRuleRel.configHouseName}
</if>
<if test="tAutoFundRuleRel.fundPerFlag != null and tAutoFundRuleRel.fundPerFlag.trim() != ''">
AND a.FUND_PER_FLAG = #{tAutoFundRuleRel.fundPerFlag}
</if>
<if test="tAutoFundRuleRel.fundDateType != null and tAutoFundRuleRel.fundDateType.trim() != ''">
AND a.FUND_DATE_TYPE = #{tAutoFundRuleRel.fundDateType}
</if>
<if test="tAutoFundRuleRel.paymentType != null and tAutoFundRuleRel.paymentType.trim() != ''">
AND a.PAYMENT_TYPE = #{tAutoFundRuleRel.paymentType}
</if>
<if test="tAutoFundRuleRel.fundBase != null">
AND a.FUND_BASE = #{tAutoFundRuleRel.fundBase}
</if>
<if test="tAutoFundRuleRel.fundCompanyPer != null and tAutoFundRuleRel.fundCompanyPer.trim() != ''">
AND a.FUND_COMPANY_PER = #{tAutoFundRuleRel.fundCompanyPer}
</if>
<if test="tAutoFundRuleRel.fundPersonalPer != null and tAutoFundRuleRel.fundPersonalPer.trim() != ''">
AND a.FUND_PERSONAL_PER = #{tAutoFundRuleRel.fundPersonalPer}
</if>
<if test="tAutoFundRuleRel.deptNo != null and tAutoFundRuleRel.deptNo.trim() != ''">
AND a.DEPT_NO = #{tAutoFundRuleRel.deptNo}
</if>
<if test="tAutoFundRuleRel.deptId != null and tAutoFundRuleRel.deptId.trim() != ''">
AND a.DEPT_ID = #{tAutoFundRuleRel.deptId}
</if>
<if test="tAutoFundRuleRel.createBy != null and tAutoFundRuleRel.createBy.trim() != ''">
AND a.CREATE_BY = #{tAutoFundRuleRel.createBy}
</if>
<if test="tAutoFundRuleRel.createName != null and tAutoFundRuleRel.createName.trim() != ''">
AND a.CREATE_NAME = #{tAutoFundRuleRel.createName}
</if>
<if test="tAutoFundRuleRel.createTime != null">
AND a.CREATE_TIME = #{tAutoFundRuleRel.createTime}
</if>
<if test="tAutoFundRuleRel.updateBy != null and tAutoFundRuleRel.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tAutoFundRuleRel.updateBy}
</if>
<if test="tAutoFundRuleRel.updateTime != null">
AND a.UPDATE_TIME = #{tAutoFundRuleRel.updateTime}
</if>
<if test="tAutoFundRuleRel.province != null">
AND a.PROVINCE = #{tAutoFundRuleRel.province}
</if>
<if test="tAutoFundRuleRel.city != null">
AND a.CITY = #{tAutoFundRuleRel.city}
</if>
<if test="tAutoFundRuleRel.town != null">
AND a.TOWN = #{tAutoFundRuleRel.town}
</if>
<if test="tAutoFundRuleRel.upperLimit != null">
AND a.UPPER_LIMIT = #{tAutoFundRuleRel.upperLimit}
</if>
<if test="tAutoFundRuleRel.lowerLimit != null">
AND a.LOWER_LIMIT = #{tAutoFundRuleRel.lowerLimit}
</if>
</if>
</sql>
<!--tAutoFundRuleRel简单分页查询-->
<select id="getTAutoFundRuleRelPage" resultMap="tAutoFundRuleRelMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_auto_fund_rule_rel a
<where>
1=1
<include refid="tAutoFundRuleRel_where"/>
</where>
</select>
</mapper>
...@@ -266,6 +266,10 @@ public interface CommonConstants { ...@@ -266,6 +266,10 @@ public interface CommonConstants {
char DOWN_LINE_CHAR ='_'; char DOWN_LINE_CHAR ='_';
// 冒号 : // 冒号 :
String COLON_STRING =":"; String COLON_STRING =":";
// 分号 ;
String SEMICOLON_STRING = ";";
// - 横 分割线 中 // - 横 分割线 中
String CENTER_SPLIT_LINE_STRING = "-"; String CENTER_SPLIT_LINE_STRING = "-";
// 斜杠 // 斜杠
......
...@@ -217,4 +217,13 @@ public class ExcelAttributeConstants { ...@@ -217,4 +217,13 @@ public class ExcelAttributeConstants {
public static final String GZ_PROBATION = "gz_probation"; public static final String GZ_PROBATION = "gz_probation";
// 瓜子的星座 // 瓜子的星座
public static final String GZ_CONSTEL = "gz_constel"; public static final String GZ_CONSTEL = "gz_constel";
// 社保缴纳月份
public static final String SOCIAL_MONTH_TYPE = "social_month_type";
// 社保可补交月份
public static final String SOCIAL_OVERPAY_MOTH = "social_overpay_month";
// 公积金单边小数点
public static final String FUND_POINT_TYPE = "fund_point_type";
} }
...@@ -766,4 +766,48 @@ public class Common { ...@@ -766,4 +766,48 @@ public class Common {
} }
return R.ok(errorMessageList); return R.ok(errorMessageList);
} }
/**
* 创建一个包含指定元素的Set集合
*
* @param elements 要包含在Set中的元素
* @param <T> 元素类型
* @return 包含指定元素的Set集合
*/
public static <T> Set<T> getSet(T... elements) {
Set<T> set = new HashSet<>();
if (elements != null) {
Collections.addAll(set, elements);
}
return set;
}
/**
* 校验字符串是否符合格式 10,10;12,13
* @param str 待校验的字符串
* @return 符合格式返回true,否则返回false
*/
public static boolean validateFormat(String str) {
// 如果字符串为空或null,则不符合格式
if (str == null || str.isEmpty()) {
return false;
}
// 使用正则表达式匹配格式
// 格式要求: 数字,数字;数字,数字;...
// 其中数字为一个或多个数字字符
return str.matches("\\d+,\\d+(;\\d+,\\d+)*");
}
/**
* 校验字符串是否符合格式 2025-11
* @param str 待校验的字符串
* @return 符合格式返回true,否则返回false
*/
public static boolean validateFormatYearMonth(String str) {
// 如果字符串为空或null,则不符合格式
if (str == null || str.isEmpty()) {
return false;
}
return str.matches("\\d{4}-\\d{2}");
}
} }
...@@ -1201,6 +1201,52 @@ public class DateUtil { ...@@ -1201,6 +1201,52 @@ public class DateUtil {
return str; return str;
} }
/**
* 获取指定月份
* @Author fxj
* @Date 2019-10-16
* @param yearMonth 格式 :LocalDateTime
* @param i
* @return
* @Description (获取指定日期后指定 ( i)个月的时间YYYYMM)
**/
public static String getYearAndMonth(Date yearMonth, int i){
String str ="";
if(yearMonth != null) {
Calendar c1 = Calendar.getInstance();
c1.setTime(yearMonth);
c1.set(Calendar.DAY_OF_MONTH, 1);
c1.set(Calendar.MONTH, c1.get(Calendar.MONTH) + i);
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH) + 1; // Calendar month is 0-based, convert to 1-based
str = year + (month < 10 ? "0" + month : Integer.toString(month));
}
return str;
}
/**
* 获取指定月份
* @Author fxj
* @Date 2019-10-16
* @param yearMonth 格式 :LocalDateTime
* @param i
* @return
* @Description (获取指定日期后指定 ( i)个月的时间YYYYMM)
**/
public static String getYearAndMonth(Date yearMonth, int i,String split){
String str ="";
if(yearMonth != null) {
Calendar c1 = Calendar.getInstance();
c1.setTime(yearMonth);
c1.set(Calendar.DAY_OF_MONTH, 1);
c1.set(Calendar.MONTH, c1.get(Calendar.MONTH) + i);
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH) + 1; // Calendar month is 0-based, convert to 1-based
str = year +split+ (month < 10 ? "0" + month : Integer.toString(month));
}
return str;
}
/** /**
* @param i 加减年份 * @param i 加减年份
* @Description: 获取当前年月,对年月加减(yyyyMM) * @Description: 获取当前年月,对年月加减(yyyyMM)
......
...@@ -53,7 +53,7 @@ public class TSocialFriendReduceSet { ...@@ -53,7 +53,7 @@ public class TSocialFriendReduceSet {
@Schema(description = "减少原因") @Schema(description = "减少原因")
private String reduceReasonName; private String reduceReasonName;
/** /**
* 中断原因 * 中断原因(池州特殊减员映射1:减员原因
*/ */
@ExcelAttribute(name = "中断原因", maxLength = 32) @ExcelAttribute(name = "中断原因", maxLength = 32)
@Length(max = 32, message = "中断原因不能超过32个字符") @Length(max = 32, message = "中断原因不能超过32个字符")
...@@ -61,7 +61,7 @@ public class TSocialFriendReduceSet { ...@@ -61,7 +61,7 @@ public class TSocialFriendReduceSet {
@Schema(description = "中断原因") @Schema(description = "中断原因")
private String tbyy; private String tbyy;
/** /**
* 劳动用工备案解除/终止原因 * 劳动用工备案解除/终止原因(池州特殊减员映射2:劳动用工备案解除/终止原因
*/ */
@ExcelAttribute(name = "劳动用工备案解除/终止原因", maxLength = 32) @ExcelAttribute(name = "劳动用工备案解除/终止原因", maxLength = 32)
@Length(max = 32, message = "劳动用工备案解除/终止原因不能超过32个字符") @Length(max = 32, message = "劳动用工备案解除/终止原因不能超过32个字符")
...@@ -86,12 +86,12 @@ public class TSocialFriendReduceSet { ...@@ -86,12 +86,12 @@ public class TSocialFriendReduceSet {
@Schema(description = "离职原因") @Schema(description = "离职原因")
private String mvpKey; private String mvpKey;
/** /**
* 类型1:社保;2:医保 * 类型1:社保;2:医保;3池州特殊减员映射
*/ */
@ExcelAttribute(name = "类型", maxLength = 32) @ExcelAttribute(name = "类型", maxLength = 32)
@Length(max = 32, message = "类型") @Length(max = 32, message = "类型")
@ExcelProperty("类型") @ExcelProperty("类型")
@Schema(description = "类型1:社保;2:医保") @Schema(description = "类型1:社保;2:医保;3池州特殊减员映射")
private String mvpType; private String mvpType;
} }
...@@ -2,6 +2,9 @@ package com.yifu.cloud.plus.v1.yifu.social.vo; ...@@ -2,6 +2,9 @@ package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
...@@ -201,4 +204,18 @@ public class SociaFriendYgsAddVo implements Serializable { ...@@ -201,4 +204,18 @@ public class SociaFriendYgsAddVo implements Serializable {
@ExcelProperty("是否强制停保" ) @ExcelProperty("是否强制停保" )
private String sfqztb; private String sfqztb;
// 池州特殊减员映射1:减员原因
@ExcelProperty("池州特殊减员映射1:减员原因")
private String chiZhouTbyy;
// 池州特殊减员映射2:劳动用工备案解除/终止原因
@ExcelProperty("池州特殊减员映射2:劳动用工备案解除/终止原因")
private String chiZhouZzyy;
@ExcelProperty("身份证省" )
private String idCardProvince;
@ExcelProperty("身份证市" )
private String idCardCity;
@ExcelProperty("身份证县" )
private String idCardTown;
} }
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysPayProportion;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author fxj
* @Date 2025/10/11
* @Description
* @Version 1.0
*/
@Data
public class SysBaseSetFundExportVo implements Serializable {
/**
* 公积金户
*/
@ExcelAttribute(name = "公积金户",isNotEmpty = true)
@Schema(description = "公积金户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金户")
private String departName;
/**
* 公积金类型 0.市直 1. 省直
*/
@ExcelAttribute(name = "公积金类型",isNotEmpty = true,readConverterExp = "0=市直,1=省直")
@Schema(description = "公积金类型 0.市直 1. 省直")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金类型")
private String fundPayType;
/**
* 公积金缴纳地:安徽省-合肥市-肥东县
*/
@ExcelAttribute(name = "公积金缴纳地",isNotEmpty = true)
@Schema(description = "公积金缴纳地")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳地")
private String provinceStr;
/**
* 0.在用1.终止2过期
*/
@ExcelAttribute(name = "状态",readConverterExp = "0=在用,1=终止,2=过期")
@Schema(description = "状态")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("状态")
private String status;
/**
* 适用周期
*/
@ExcelAttribute(name = "适用周期")
@Schema(description = "适用周期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("适用周期")
private String applyStartDate;
/**
* 执行月份
*/
@ExcelAttribute(name = "执行月份",isNotEmpty = true)
@Schema(description = "执行月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("执行月份")
private String doMonth;
/**
* 基数下限
*/
@ExcelAttribute(name = "基数下限",isNotEmpty = true)
@Schema(description = "基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数下限")
private BigDecimal lowerLimit;
/**
* 基数上限
*/
@ExcelAttribute(name = "基数上限",isNotEmpty = true)
@Schema(description = "基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数上限")
private BigDecimal upperLimit;
/**
* 单边小数点:1:四舍五入取整 2:元以下舍去 3:见角进元 4:保留两位小数 5:保留一位小数 6:见分进元
*/
@ExcelAttribute(name = "单边小数点",isNotEmpty = true,readConverterExp = "1=四舍五入取整,2=元以下舍去,3=见角进元,4=保留两位小数,5=保留一位小数,6=见分进元")
@Schema(description = "单边小数点")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单边小数点")
private String fundPayPoint;
/**
* 单位公积金比例,个人公积金比例:10,10;12,13
*/
@ExcelAttribute(name = "单位公积金比例,个人公积金比例",isNotEmpty = true)
@Schema(description = "单位公积金比例,个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位公积金比例,个人公积金比例")
private String housingFundPro;
/**
* 是否可以补缴: 0:是,1:否
*/
@ExcelAttribute(name = "是否可补缴",isNotEmpty = true,readConverterExp = "0=是,1=否")
@Schema(description = "是否可补缴: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否可补缴")
private String canOverpay;
/**
* 最大补缴期限:1:一月、2:二月 ...... 12:十二月
*/
@ExcelAttribute(name = "最大补缴期限",readConverterExp = "1=一个月,2=二个月,3=三个月,4=四个月,5=五个月,6=六个月,7=七个月,8=八个月,9=九个月,10=十个月,11=十一个月,12=十二个月")
@Schema(description = "最大补缴期限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("最大补缴期限")
private String overpayNumber;
/**
* 是否含起缴当月: 0:是,1:否
*/
@ExcelAttribute(name = "是否含起缴当月",readConverterExp = "0=是,1=否")
@Schema(description = "是否含起缴当月: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否含起缴当月")
private String haveThisMonth;
/**
* 补缴基数:0:最新基数、1:当期基数
*/
@ExcelAttribute(name = "补缴基数",readConverterExp = "0=最新基数,1=当期基数")
@Schema(description = "补缴基数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴基数")
private String insuranceIsLatestCardinality;
/**
* 补缴政策
*/
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
private String payPolicy;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysPayProportion;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author fxj
* @Date 2025/11/14
* @Description
* @Version 1.0
*/
@Data
public class SysBaseSetFundInsertVo extends RowIndex implements Serializable {
/**
* 公积金户
*/
@ExcelAttribute(name = "公积金户",isNotEmpty = true)
@Schema(description = "公积金户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金户")
private String departName;
/**
* 公积金缴纳地:安徽省-合肥市-肥东县
*/
@ExcelAttribute(name = "公积金缴纳地",isNotEmpty = true)
@Schema(description = "公积金缴纳地")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳地")
private String provinceStr;
/**
* 公积金类型 0.市直 1. 省直
*/
@ExcelAttribute(name = "公积金类型",isNotEmpty = true,readConverterExp = "0=市直,1=省直")
@Schema(description = "公积金类型 0.市直 1. 省直")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金类型")
private String fundPayType;
/**
* 适用起始月份
*/
@ExcelAttribute(name = "适用起始月份",isNotEmpty = true)
@Schema(description = "适用起始月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("适用起始月份")
private String applyStartDate;
/**
* 执行月份
*/
@ExcelAttribute(name = "执行月份",isNotEmpty = true)
@Schema(description = "执行月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("执行月份")
private String doMonth;
/**
* 基数上限
*/
@ExcelAttribute(name = "基数上限",isNotEmpty = true)
@Schema(description = "基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数上限")
private BigDecimal upperLimit;
/**
* 基数下限
*/
@ExcelAttribute(name = "基数下限",isNotEmpty = true)
@Schema(description = "基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数下限")
private BigDecimal lowerLimit;
/**
* 单边小数点:1:四舍五入取整 2:元以下舍去 3:见角进元 4:保留两位小数 5:保留一位小数 6:见分进元
*/
@ExcelAttribute(name = "单边小数点",isDataId = true,dataType = ExcelAttributeConstants.FUND_POINT_TYPE,isNotEmpty = true,readConverterExp = "1=四舍五入取整,2=元以下舍去,3=见角进元,4=保留两位小数,5=保留一位小数,6=见分进元")
@Schema(description = "单边小数点")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单边小数点")
private String fundPayPoint;
/**
* 单位公积金比例,个人公积金比例:10,10;12,13
*/
@ExcelAttribute(name = "单位公积金比例,个人公积金比例",isNotEmpty = true)
@Schema(description = "单位公积金比例,个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位公积金比例,个人公积金比例")
private String housingFundPro;
/**
* 是否可以补缴: 0:是,1:否
*/
@ExcelAttribute(name = "是否可补缴",isNotEmpty = true,readConverterExp = "0=是,1=否")
@Schema(description = "是否可补缴: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否可补缴")
private String canOverpay;
/**
* 最大补缴期限:1:一月、2:二月 ...... 12:十二月
*/
@ExcelAttribute(name = "最大补缴期限",isDataId = true,dataType = ExcelAttributeConstants.SOCIAL_OVERPAY_MOTH,readConverterExp = "1=一个月,2=二个月,3=三个月,4=四个月,5=五个月,6=六个月,7=七个月,8=八个月,9=九个月,10=十个月,11=十一个月,12=十二个月")
@Schema(description = "最大补缴期限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("最大补缴期限")
private String overpayNumber;
/**
* 是否含起缴当月: 0:是,1:否
*/
@ExcelAttribute(name = "是否含起缴当月",readConverterExp = "0=是,1=否")
@Schema(description = "是否含起缴当月: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否含起缴当月")
private String haveThisMonth;
/**
* 补缴基数:0:最新基数、1:当期基数
*/
@ExcelAttribute(name = "补缴基数",readConverterExp = "0=最新基数,1=当期基数")
@Schema(description = "补缴基数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴基数")
private String insuranceIsLatestCardinality;
/**
* 补缴政策
*/
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
private String payPolicy;
}
/*
* 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.social.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 基数设置表
*
* @author fxj
* @date 2025-11-04 14:50:51
*/
@Data
public class SysBaseSetInfoSearchVo extends SysBaseSetInfo{
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysPayProportion;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author fxj
* @Date 2025/10/11
* @Description
* @Version 1.0
*/
@Data
public class SysBaseSetSocialExportVo implements Serializable {
/**
* 社保户
*/
@ExcelAttribute(name = "社保户")
@Schema(description = "社保户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保户")
private String departName;
/**
* 社保缴纳地
*/
@ExcelAttribute(name = "社保缴纳地")
@Schema(description = "社保缴纳地")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地")
private String province;
/**
* 0.在用1.终止2过期
*/
@ExcelAttribute(name = "状态",readConverterExp = "0=在用,1=终止,2=过期")
@Schema(description = "状态")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("状态")
private String status;
/**
* 适用周期
*/
@ExcelAttribute(name = "适用周期")
@Schema(description = "适用周期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("适用周期")
private String applyStartDate;
/**
* 执行月份
*/
@ExcelAttribute(name = "执行月份")
@Schema(description = "执行月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("执行月份")
private String doMonth;
/**
* 是否同一基数上下限: 0是;1否
*/
@ExcelAttribute(name = "是否同一基数上下限",readConverterExp = "0=是,1=否")
@Schema(description = "是否同一基数上下限: 0是;1否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否同一基数上下限")
private String isSameBase;
/**
* 养老基数下限
*/
@ExcelAttribute(name = "养老基数下限")
@Schema(description = "养老基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老基数下限")
private BigDecimal lowerPersion;
/**
* 养老基数上限
*/
@ExcelAttribute(name = "养老基数上限")
@Schema(description = "养老基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老基数上限")
private BigDecimal upPersion;
/**
* 工伤基数下限
*/
@ExcelAttribute(name = "工伤基数下限")
@Schema(description = "工伤基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤基数下限")
private BigDecimal lowerInjury;
/**
* 工伤基数上限
*/
@ExcelAttribute(name = "工伤基数上限")
@Schema(description = "工伤基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤基数上限")
private BigDecimal upInjury;
/**
* 医疗基数下限
*/
@ExcelAttribute(name = "医疗基数下限")
@Schema(description = "医疗基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗基数下限")
private BigDecimal lowerMedical;
/**
* 医疗基数上限
*/
@ExcelAttribute(name = "医疗基数上限")
@Schema(description = "医疗基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗基数上限")
private BigDecimal upMedical;
/**
* 生育基数下限
*/
@ExcelAttribute(name = "生育基数下限")
@Schema(description = "生育基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育基数下限")
private BigDecimal lowerBirth;
/**
* 生育基数上限
*/
@ExcelAttribute(name = "生育基数上限")
@Schema(description = "生育基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育基数上限")
private BigDecimal upBirth;
/**
* 失业基数下限
*/
@ExcelAttribute(name = "失业基数下限")
@Schema(description = "失业基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业基数下限")
private BigDecimal lowerUnemployment;
/**
* 失业基数上限
*/
@ExcelAttribute(name = "失业基数上限")
@Schema(description = "失业基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业基数上限")
private BigDecimal upUnemployment;
/**
* 大病基数下限
*/
@ExcelAttribute(name = "大病基数下限")
@Schema(description = "大病基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病基数下限")
private BigDecimal lowerBig;
/**
* 大病基数上限
*/
@ExcelAttribute(name = "大病基数上限",isDouble = true)
@Schema(description = "大病基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病基数上限")
private BigDecimal upBig;
/**
* 是否大病: 0收取;1不收取
*/
@ExcelAttribute(name = "大病是否收费",readConverterExp = "0=收取,1=不收取")
@Schema(description = "大病是否收费: 0收取;1不收取")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病是否收费")
private String isIllness;
/**
* 大病缴纳周期:收取方式 0.按年 1.按月
*/
@ExcelAttribute(name = "大病缴纳周期",readConverterExp = "0=按年,1=按月")
@Schema(description = "大病缴纳周期:收取方式 0.按年 1.按月")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病缴纳周期")
private String collectType;
/**
* 收费模式: 0=立即收费,1=次年起收
*/
@ExcelAttribute(name = "收费模式",readConverterExp = "0=立即收费,1=次年起收")
@Schema(description = "收费模式: 0=立即收费,1=次年起收")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("收费模式")
private String isChargePersonal;
/**
* 缴纳月份:周期为年--收取月份 1到12月份
*/
@ExcelAttribute(name = "缴纳月份",readConverterExp = "1=一月,2=二月,3=三月,4=四月,5=五月,6=六月,7=七月,8=八月,9=九月,10=十月,11=十一月,12=十二月")
@Schema(description = "缴纳月份:周期为年--收取月份 1到12月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳月份")
private String collectMoth;
/**
* 缴纳方式:周期为月--取值方式 0.按定值1按比例
*/
@ExcelAttribute(name = "缴纳方式",readConverterExp = "0=按定值,1=按比例")
@Schema(description = "缴纳方式")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳方式")
private String valueType;
/**
* 单位大病金额(元/人)--按定值
*/
@ExcelAttribute(name = "单位大病金额")
@Schema(description = "单位大病金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位大病金额")
private BigDecimal chargeCompany;
/**
* 个人大病金额(元/人)--按定值
*/
@ExcelAttribute(name = "个人大病金额")
@Schema(description = "个人大病金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病金额")
private BigDecimal chargePersonal;
/**
* 单位医疗缴纳比例
*/
@ExcelAttribute(name = "单位医疗比例")
@Schema(description = "单位医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位医疗比例")
private BigDecimal unitMedicalPro;
/**
* 个人医疗比例
*/
@ExcelAttribute(name = "个人医疗比例")
@Schema(description = "个人医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人医疗比例")
private BigDecimal personalMedicalPro;
/**
* 单位生育缴纳比例
*/
@ExcelAttribute(name = "单位生育比例")
@Schema(description = "单位生育比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位生育比例")
private BigDecimal unitBirthPro;
/**
* 单位养老缴纳比例
*/
@ExcelAttribute(name = "单位养老比例")
@Schema(description = "单位养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位养老比例")
private BigDecimal unitPersionPro;
/**
* 个人养老比例
*/
@ExcelAttribute(name = "个人养老比例")
@Schema(description = "个人养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人养老比例")
private BigDecimal personalPersionPro;
/**
* 单位工伤缴纳比例
*/
@ExcelAttribute(name = "单位工伤比例")
@Schema(description = "单位工伤比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位工伤比例")
private BigDecimal unitInjuryPro;
/**
* 单位失业缴纳比例
*/
@ExcelAttribute(name = "单位失业比例")
@Schema(description = "单位失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位失业比例")
private BigDecimal unitUnemploymentPro;
/**
* 个人失业比例
*/
@ExcelAttribute(name = "个人失业比例")
@Schema(description = "个人失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人失业比例")
private BigDecimal personalUnemploymentPro;
/**
* 单位大病比例
*/
@ExcelAttribute(name = "单位大病比例")
@Schema(description = "单位大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位大病比例")
private BigDecimal payCompanyPro;
/**
* 个人大病比例
*/
@ExcelAttribute(name = "个人大病比例")
@Schema(description = "个人大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病比例")
private BigDecimal payPersonalPro;
/**
* 是否可以补缴: 0:是,1:否
*/
@ExcelAttribute(name = "是否可以补缴",readConverterExp = "0=是,1=否")
@Schema(description = "是否可以补缴: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否可以补缴")
private String canOverpay;
/**
* 单位比例合计
*/
@ExcelAttribute(name = "单位比例合计")
@Schema(description = "单位比例合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位比例合计")
private BigDecimal unitProSum;
/**
* 个人比例合计
*/
@ExcelAttribute(name = "个人比例合计")
@Schema(description = "个人比例合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人比例合计")
private BigDecimal personalProSum;
/**
* 补缴险种-整合字段
*/
@ExcelAttribute(name = "补缴险种")
@Schema(description = "补缴险种")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴险种")
private String insurancePension;
/**
* 最大补缴期限
*/
@ExcelAttribute(name = "最大补缴期限", readConverterExp = "1=一个月,2=二个月,3=三个月,4=四个月,5=五个月,6=六个月,7=七个月,8=八个月,9=九个月,10=十个月,11=十一个月,12=十二个月")
@Schema(description = "最大补缴期限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("最大补缴期限")
private String overpayNumber;
/**
* 是否含起缴当月: 0:是,1:否
*/
@ExcelAttribute(name = "是否含起缴当月",readConverterExp = "0=是,1=否")
@Schema(description = "是否含起缴当月: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否含起缴当月")
private String haveThisMonth;
/**
* 补缴险种-补缴是否采用最新基数0是1否
*/
@ExcelAttribute(name = "补缴基数", readConverterExp = "0=最新基数,1=当期基数")
@Schema(description = "补缴基数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴基数")
private String insuranceIsLatestCardinality;
/**
* 补缴政策(社保或公积金)
*/
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
private String payPolicy;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author fxj
* @Date 2025/11/04
* @Description
* @Version 1.0
*/
@Data
public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 社保户
*/
@ExcelAttribute(name = "社保户", isNotEmpty = true)
@Schema(description = "社保户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保户")
private String departName;
/**
* 社保缴纳地
*/
@ExcelAttribute(name = "社保缴纳地", isNotEmpty = true)
@Schema(description = "社保缴纳地")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地")
private String provinceStr;
/**
* 适用起始月份
*/
@ExcelAttribute(name = "适用起始月份", isNotEmpty = true)
@Schema(description = "适用起始月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("适用起始月份")
private String applyStartDate;
/**
* 执行月份
*/
@ExcelAttribute(name = "执行月份", isNotEmpty = true)
@Schema(description = "执行月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("执行月份")
private String doMonth;
/**
* 是否同一基数上下限: 0是;1否
*/
@ExcelAttribute(name = "是否同一基数上下限", isNotEmpty = true, readConverterExp = "0=是,1=否")
@Schema(description = "是否同一基数上下限: 0是;1否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否同一基数上下限")
private String isSameBase;
/**
* 养老基数上限
*/
@ExcelAttribute(name = "养老基数上限", isNotEmpty = true,isDouble = true)
@Schema(description = "养老基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老基数上限")
private BigDecimal upPersion;
/**
* 养老基数下限
*/
@ExcelAttribute(name = "养老基数下限", isNotEmpty = true,isDouble = true)
@Schema(description = "养老基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老基数下限")
private BigDecimal lowerPersion;
/**
* 工伤基数上限
*/
@ExcelAttribute(name = "工伤基数上限",isDouble = true)
@Schema(description = "工伤基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤基数上限")
private BigDecimal upInjury;
/**
* 工伤基数下限
*/
@ExcelAttribute(name = "工伤基数下限",isDouble = true)
@Schema(description = "工伤基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤基数下限")
private BigDecimal lowerInjury;
/**
* 医疗基数上限
*/
@ExcelAttribute(name = "医疗基数上限",isDouble = true)
@Schema(description = "医疗基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗基数上限")
private BigDecimal upMedical;
/**
* 医疗基数下限
*/
@ExcelAttribute(name = "医疗基数下限",isDouble = true)
@Schema(description = "医疗基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗基数下限")
private BigDecimal lowerMedical;
/**
* 生育基数上限
*/
@ExcelAttribute(name = "生育基数上限",isDouble = true)
@Schema(description = "生育基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育基数上限")
private BigDecimal upBirth;
/**
* 生育基数下限
*/
@ExcelAttribute(name = "生育基数下限",isDouble = true)
@Schema(description = "生育基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育基数下限")
private BigDecimal lowerBirth;
/**
* 失业基数上限
*/
@ExcelAttribute(name = "失业基数上限",isDouble = true)
@Schema(description = "失业基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业基数上限")
private BigDecimal upUnemployment;
/**
* 失业基数下限
*/
@ExcelAttribute(name = "失业基数下限",isDouble = true)
@Schema(description = "失业基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业基数下限")
private BigDecimal lowerUnemployment;
/**
* 大病基数上限
*/
@ExcelAttribute(name = "大病基数上限",isDouble = true)
@Schema(description = "大病基数上限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病基数上限")
private BigDecimal upBig;
/**
* 大病基数下限
*/
@ExcelAttribute(name = "大病基数下限",isDouble = true)
@Schema(description = "大病基数下限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病基数下限")
private BigDecimal lowerBig;
/**
* 大病是否收费: 0收取;1不收取
*/
@ExcelAttribute(name = "大病是否收费", isNotEmpty = true, readConverterExp = "0=是,1=否")
@Schema(description = "大病是否收费: 0是;1否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病是否收费")
private String isIllness;
/**
* 大病缴纳周期:收取方式 0.按年 1.按月
*/
@ExcelAttribute(name = "大病缴纳周期", readConverterExp = "0=按年,1=按月")
@Schema(description = "大病缴纳周期:收取方式 0.按年 1.按月")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病缴纳周期")
private String collectType;
/**
* 收费模式: 0.立即收费 1.次年起收
*/
@ExcelAttribute(name = "收费模式", readConverterExp = "0=立即收费,1=次年起收")
@Schema(description = "收费模式: 0.立即收费 1.次年起收")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("收费模式")
private String collectTypeSub;
/**
* 缴纳月份:周期为年--收取月份 1到12月份
*/
@ExcelAttribute(name = "缴纳月份",isDataId = true,dataType = ExcelAttributeConstants.SOCIAL_MONTH_TYPE, readConverterExp = "1=一月,2=二月,3=三月,4=四月,5=五月,6=六月,7=七月,8=八月,9=九月,10=十月,11=十一月,12=十二月")
@Schema(description = "缴纳月份:周期为年--收取月份 1到12月份")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳月份")
private String collectMoth;
/**
* 缴纳方式:周期为月--取值方式 0.按定值1按比例
*/
@ExcelAttribute(name = "缴纳方式", readConverterExp = "0=按定值,1=按比例")
@Schema(description = "缴纳方式:周期为月--取值方式 0.按定值1比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳方式")
private String valueType;
/**
* 单位大病金额
*/
@ExcelAttribute(name = "单位大病金额",isDouble = true)
@Schema(description = "单位大病金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位大病金额")
private BigDecimal chargeCompany;
/**
* 个人大病金额
*/
@ExcelAttribute(name = "个人大病金额",isDouble = true)
@Schema(description = "个人大病金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病金额")
private BigDecimal chargePersonal;
/**
* 单位医疗缴纳比例
*/
@ExcelAttribute(name = "单位医疗比例", isNotEmpty = true,isDouble = true)
@Schema(description = "单位医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位医疗比例")
private BigDecimal unitMedicalPro;
/**
* 个人医疗比例
*/
@ExcelAttribute(name = "个人医疗比例", isNotEmpty = true,isDouble = true)
@Schema(description = "个人医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人医疗比例")
private BigDecimal personalMedicalPro;
/**
* 单位生育缴纳比例
*/
@ExcelAttribute(name = "单位生育比例", isNotEmpty = true,isDouble = true)
@Schema(description = "单位生育比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位生育比例")
private BigDecimal unitBirthPro;
/**
* 单位养老缴纳比例
*/
@ExcelAttribute(name = "单位养老比例", isNotEmpty = true,isDouble = true)
@Schema(description = "单位养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位养老比例")
private BigDecimal unitPersionPro;
/**
* 个人养老比例
*/
@ExcelAttribute(name = "个人养老比例", isNotEmpty = true,isDouble = true)
@Schema(description = "个人养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人养老比例")
private BigDecimal personalPersionPro;
/**
* 单位工伤缴纳比例
*/
@ExcelAttribute(name = "单位工伤比例", isNotEmpty = true,isDouble = true)
@Schema(description = "单位工伤比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位工伤比例")
private BigDecimal unitInjuryPro;
/**
* 单位失业缴纳比例
*/
@ExcelAttribute(name = "单位失业比例", isNotEmpty = true,isDouble = true)
@Schema(description = "单位失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位失业比例")
private BigDecimal unitUnemploymentPro;
/**
* 个人失业比例
*/
@ExcelAttribute(name = "个人失业比例", isNotEmpty = true,isDouble = true)
@Schema(description = "个人失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人失业比例")
private BigDecimal personalUnemploymentPro;
/**
* 单位大病比例
*/
@ExcelAttribute(name = "单位大病比例",isDouble = true)
@Schema(description = "单位大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位大病比例")
private BigDecimal payCompanyPro;
/**
* 个人大病比例
*/
@ExcelAttribute(name = "个人大病比例",isDouble = true)
@Schema(description = "个人大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病比例")
private BigDecimal payPersonalPro;
/**
* 是否可补缴: 0:是,1:否
*/
@ExcelAttribute(name = "是否可补缴", readConverterExp = "0=是,1=否")
@Schema(description = "是否可补缴: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否可补缴")
private String canOverpay;
/**
* 补缴险种 0是1否 养老、医疗、失业、工伤、生育、大病
*/
@ExcelAttribute(name = "补缴险种")
@Schema(description = "补缴险种")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴险种")
private String insurancePension;
/**
* 最大补缴期限 1:一月、2:二月 ...... 12:十二月
*/
@ExcelAttribute(name = "最大补缴期限",isDataId = true,dataType = ExcelAttributeConstants.SOCIAL_OVERPAY_MOTH, readConverterExp = "1=一个月,2=二个月,3=三个月,4=四个月,5=五个月,6=六个月,7=七个月,8=八个月,9=九个月,10=十个月,11=十一个月,12=十二个月")
@Schema(description = "最大补缴期限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("最大补缴期限")
private String overpayNumber;
/**
* 是否含起缴当月: 0:是,1:否
*/
@ExcelAttribute(name = "是否含起缴当月", readConverterExp = "0=是,1=否")
@Schema(description = "是否含起缴当月: 0:是,1:否")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否含起缴当月")
private String haveThisMonth;
/**
* 补缴基数:0最新基数1当期基数
*/
@ExcelAttribute(name = "补缴基数", readConverterExp = "0=最新基数,1=当期基数")
@Schema(description = "补缴基数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴基数")
private String insuranceIsLatestCardinality;
/**
* 补缴政策
*/
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
private String payPolicy;
}
...@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
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.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.bean.BeanCopyUtils; import com.yifu.cloud.plus.v1.yifu.common.core.util.bean.BeanCopyUtils;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
...@@ -30,13 +31,17 @@ import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo; ...@@ -30,13 +31,17 @@ import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysPayProportion; import com.yifu.cloud.plus.v1.yifu.social.entity.SysPayProportion;
import com.yifu.cloud.plus.v1.yifu.social.service.SysBaseSetInfoService; import com.yifu.cloud.plus.v1.yifu.social.service.SysBaseSetInfoService;
import com.yifu.cloud.plus.v1.yifu.social.service.SysPayProportionService; import com.yifu.cloud.plus.v1.yifu.social.service.SysPayProportionService;
import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetInfoSearchVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetInfoVo; import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetInfoVo;
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.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
...@@ -194,4 +199,53 @@ public class SysBaseSetInfoController { ...@@ -194,4 +199,53 @@ public class SysBaseSetInfoController {
BeanCopyUtils.copyProperties(baseSetInfo,sysBaseSetInfoVo); BeanCopyUtils.copyProperties(baseSetInfo,sysBaseSetInfoVo);
return sysBaseSetInfoVo; return sysBaseSetInfoVo;
} }
/**
* 基数设置表 批量导入社保基数
*
* @author fxj
* @Date 2025-11-04 14:50:51
**/
@SneakyThrows
@Operation(description = "批量新增社保基数设置表")
@SysLog("批量新增社保基数设置表")
@PostMapping("/importListAddSocial")
public R<List<ErrorMessage>> importListAddSocial(@RequestBody MultipartFile file){
return sysBaseSetInfoService.importSocialDiy(file.getInputStream());
}
/**
* 基数设置表 批量导出社保基数
* @author fxj
* @Date 2025-11-04 14:50:51
**/
@Operation(description = "导出社保基数设置表")
@PostMapping("/exportSocial")
public void exportSocial(HttpServletResponse response, @RequestBody SysBaseSetInfo searchVo) {
sysBaseSetInfoService.listSocialExport(response,searchVo);
}
/**
* 基数设置表 批量导入公积金基数
*
* @author fxj
* @Date 2025-11-04 14:50:51
**/
@SneakyThrows
@Operation(description = "批量新增公积金基数设置表")
@SysLog("批量新增公积金基数设置表")
@PostMapping("/importListAddFund")
public R<List<ErrorMessage>> importListAddFund(@RequestBody MultipartFile file){
return sysBaseSetInfoService.importFundDiy(file.getInputStream());
}
/**
* 基数设置表 批量导出公积金基数
* @author fxj
* @Date 2025-11-04 14:50:51
**/
@Operation(description = "导出公积金基数设置表")
@PostMapping("/exportFund")
public void exportFund(HttpServletResponse response, @RequestBody SysBaseSetInfo searchVo) {
sysBaseSetInfoService.listFundExport(response,searchVo);
}
} }
...@@ -21,6 +21,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -21,6 +21,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo; import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetFundExportVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetSocialExportVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -42,6 +44,10 @@ public interface SysBaseSetInfoMapper extends BaseMapper<SysBaseSetInfo> { ...@@ -42,6 +44,10 @@ public interface SysBaseSetInfoMapper extends BaseMapper<SysBaseSetInfo> {
*/ */
IPage<SysBaseSetInfo> getSysBaseSetInfoPage(Page<SysBaseSetInfo> page, @Param("sysBaseSetInfo") SysBaseSetInfo sysBaseSetInfo); IPage<SysBaseSetInfo> getSysBaseSetInfoPage(Page<SysBaseSetInfo> page, @Param("sysBaseSetInfo") SysBaseSetInfo sysBaseSetInfo);
List<SysBaseSetSocialExportVo> noPageSocialDiy(@Param("sysBaseSetInfo") SysBaseSetInfo sysBaseSetInfo);
List<SysBaseSetFundExportVo> noPageFundDiy(@Param("sysBaseSetInfo") SysBaseSetInfo sysBaseSetInfo);
List<SysBaseSetInfo> getAllByEntity(@Param("sysBaseSetInfo")SysBaseSetInfo sysBaseSetInfo); List<SysBaseSetInfo> getAllByEntity(@Param("sysBaseSetInfo")SysBaseSetInfo sysBaseSetInfo);
/** /**
......
...@@ -80,4 +80,5 @@ public interface SysHouseHoldInfoMapper extends BaseMapper<SysHouseHoldInfo> { ...@@ -80,4 +80,5 @@ public interface SysHouseHoldInfoMapper extends BaseMapper<SysHouseHoldInfo> {
**/ **/
List<SysHouseHoldInfo> getHouseInfoAutoDoc(); List<SysHouseHoldInfo> getHouseInfoAutoDoc();
List<SysHouseHoldInfo> getSysHouseHoldNoPage(@Param("sysHouseHoldInfo")SysHouseHoldInfo enity);
} }
...@@ -20,9 +20,14 @@ package com.yifu.cloud.plus.v1.yifu.social.service; ...@@ -20,9 +20,14 @@ package com.yifu.cloud.plus.v1.yifu.social.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
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.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo; import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetInfoSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -68,4 +73,14 @@ public interface SysBaseSetInfoService extends IService<SysBaseSetInfo> { ...@@ -68,4 +73,14 @@ public interface SysBaseSetInfoService extends IService<SysBaseSetInfo> {
Map<String, SysBaseSetInfo> getSysBaseSetInfoMap(String baseType); Map<String, SysBaseSetInfo> getSysBaseSetInfoMap(String baseType);
R<Boolean> updateByIdAsso(String id,int status); R<Boolean> updateByIdAsso(String id,int status);
R<List<ErrorMessage>> importSocialDiy(InputStream inputStream);
void listSocialExport(HttpServletResponse response, SysBaseSetInfo searchVo);
R<List<ErrorMessage>> importFundDiy(InputStream inputStream);
void listFundExport(HttpServletResponse response, SysBaseSetInfo searchVo);
} }
...@@ -16,15 +16,27 @@ ...@@ -16,15 +16,27 @@
*/ */
package com.yifu.cloud.plus.v1.yifu.social.service.impl; package com.yifu.cloud.plus.v1.yifu.social.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysArea;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.AreaVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils; import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo; import com.yifu.cloud.plus.v1.yifu.social.entity.SysBaseSetInfo;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo; import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo;
...@@ -35,13 +47,20 @@ import com.yifu.cloud.plus.v1.yifu.social.service.SysBaseSetInfoService; ...@@ -35,13 +47,20 @@ import com.yifu.cloud.plus.v1.yifu.social.service.SysBaseSetInfoService;
import com.yifu.cloud.plus.v1.yifu.social.service.SysPayProportionService; import com.yifu.cloud.plus.v1.yifu.social.service.SysPayProportionService;
import com.yifu.cloud.plus.v1.yifu.social.service.TForecastLibraryService; import com.yifu.cloud.plus.v1.yifu.social.service.TForecastLibraryService;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialLogService; import com.yifu.cloud.plus.v1.yifu.social.service.TSocialLogService;
import com.yifu.cloud.plus.v1.yifu.social.vo.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
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.Date; import javax.servlet.ServletOutputStream;
import java.util.HashMap; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.io.IOException;
import java.util.Map; import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.*;
/** /**
* 基数设置表 * 基数设置表
...@@ -49,6 +68,7 @@ import java.util.Map; ...@@ -49,6 +68,7 @@ import java.util.Map;
* @author hgw * @author hgw
* @date 2022-07-11 18:21:23 * @date 2022-07-11 18:21:23
*/ */
@Log4j2
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper, SysBaseSetInfo> implements SysBaseSetInfoService { public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper, SysBaseSetInfo> implements SysBaseSetInfoService {
...@@ -58,6 +78,9 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper, ...@@ -58,6 +78,9 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper,
private final SysPayProportionService sysPayProportionService; private final SysPayProportionService sysPayProportionService;
private final SysHouseHoldInfoMapper sysHouseHoldInfoMapper; private final SysHouseHoldInfoMapper sysHouseHoldInfoMapper;
@Autowired
private UpmsDaprUtils upmsDaprUtils;
/** /**
* 基数设置表简单分页查询 * 基数设置表简单分页查询
* *
...@@ -234,26 +257,60 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper, ...@@ -234,26 +257,60 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper,
sysBaseSetInfo.setBaseType(baseType); sysBaseSetInfo.setBaseType(baseType);
sysBaseSetInfo.setDeleteFlag(CommonConstants.STATUS_NORMAL); sysBaseSetInfo.setDeleteFlag(CommonConstants.STATUS_NORMAL);
sysBaseSetInfo.setStatus(CommonConstants.ZERO_INT); sysBaseSetInfo.setStatus(CommonConstants.ZERO_INT);
sysBaseSetInfo.setApplyStartDate(new Date());
// 查询符合条件的基数列表 // 查询符合条件的基数列表
List<SysBaseSetInfo> sysBaseSetInfoList = baseMapper.getSysBaseSetInfoNoPage(sysBaseSetInfo); List<SysBaseSetInfo> sysBaseSetInfoList = baseMapper.getSysBaseSetInfoNoPage(sysBaseSetInfo);
// 返回的map // 返回的map
Map<String, SysBaseSetInfo> setInfoMap = new HashMap<>(); Map<String, SysBaseSetInfo> setInfoMap = new HashMap<>();
if (sysBaseSetInfoList != null && !sysBaseSetInfoList.isEmpty()) { if (sysBaseSetInfoList != null && !sysBaseSetInfoList.isEmpty()) {
// map的键 // map的键
String key; SysBaseSetInfo temp;
for (SysBaseSetInfo setInfo : sysBaseSetInfoList) { for (SysBaseSetInfo setInfo : sysBaseSetInfoList) {
key = setInfo.getDepartId() + CommonConstants.DOWN_LINE_STRING + setInfo.getProvince() temp = setInfoMap.get(setInfo.getDepartName());
+ CommonConstants.DOWN_LINE_STRING + setInfo.getCity(); if (temp != null) {
if (setInfo.getTown() != null) { if (setInfo.getApplyStartDate().getTime() > temp.getApplyStartDate().getTime()) {
key += CommonConstants.DOWN_LINE_STRING + setInfo.getTown(); setInfoMap.put(setInfo.getDepartName(), setInfo);
}
}else {
setInfoMap.put(setInfo.getDepartName(), setInfo);
} }
setInfoMap.put(key, setInfo);
} }
} }
return setInfoMap; return setInfoMap;
} }
/**
* @Author fxj
* @Description 获取社保或公积金的户信息
* @Date 17:37 2025/11/4
* @Param
* @return
**/
private Map<String, SysHouseHoldInfo> getHouseHoldMap(String baseType) {
// 基数配置
SysHouseHoldInfo enity = new SysHouseHoldInfo();
enity.setType(baseType);
enity.setDelFlag(CommonConstants.STATUS_NORMAL);
// 查询符合条件的基数列表
List<SysHouseHoldInfo> list = sysHouseHoldInfoMapper.getSysHouseHoldNoPage(enity);
// 返回的map
Map<String, SysHouseHoldInfo> holdMap = new HashMap<>();
if (list != null && !list.isEmpty()) {
// map的键
String key;
for (SysHouseHoldInfo vo : list) {
/*key = vo.getName() + CommonConstants.DOWN_LINE_STRING + vo.getProvince();
if (vo.getCity() != null){
key += CommonConstants.DOWN_LINE_STRING + vo.getCity();
}
if (vo.getTown() != null) {
key += CommonConstants.DOWN_LINE_STRING + vo.getTown();
}*/
holdMap.put(vo.getName(), vo);
}
}
return holdMap;
}
@Override @Override
public R<Boolean> updateByIdAsso(String id ,int status) { public R<Boolean> updateByIdAsso(String id ,int status) {
SysBaseSetInfo baseSetInfo = baseMapper.selectById(id); SysBaseSetInfo baseSetInfo = baseMapper.selectById(id);
...@@ -274,4 +331,925 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper, ...@@ -274,4 +331,925 @@ public class SysBaseSetInfoServiceImpl extends ServiceImpl<SysBaseSetInfoMapper,
return R.failed(CommonConstants.RESULT_DATA_FAIL); return R.failed(CommonConstants.RESULT_DATA_FAIL);
} }
} }
/**
* 基数设置表批量导出社保基数
* @param searchVo 基数设置表
* @return
*/
@Override
public void listSocialExport(HttpServletResponse response, SysBaseSetInfo searchVo){
String fileName = "基数设置表批量导出社保基数" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<SysBaseSetSocialExportVo> list = baseMapper.noPageSocialDiy(searchVo);;
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 = EasyExcel.write(out, SysBaseSetSocialExportVo.class).build();
int index = 0;
if (null != list && list.size() > CommonConstants.ZERO_INT){
if (Common.isNotNull(list)){
ExcelUtil<SysBaseSetSocialExportVo> util = new ExcelUtil<>(SysBaseSetSocialExportVo.class);
for (SysBaseSetSocialExportVo vo:list){
util.convertEntity(vo,null,null,null);
}
}
if (Common.isNotNull(list)){
WriteSheet writeSheet = EasyExcel.writerSheet("基数设置表"+index).build();
excelWriter.write(list,writeSheet);
index++;
}
if (Common.isNotNull(list)){
list.clear();
}
}else {
WriteSheet writeSheet = EasyExcel.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);
}
}
}
/**
* 基数设置表批量导出社保基数
* @param searchVo 基数设置表
* @return
*/
@Override
public void listFundExport(HttpServletResponse response, SysBaseSetInfo searchVo){
String fileName = "基数设置表批量导出公积金基数" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<SysBaseSetFundExportVo> list = baseMapper.noPageFundDiy(searchVo);
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,然后文件流会自动关闭
//EasyExcel.write(out, TEmpBadRecord.class).sheet("不良记录").doWrite(list);
ExcelWriter excelWriter = EasyExcel.write(out, SysBaseSetFundExportVo.class).build();
int index = 0;
if (null != list && list.size() > CommonConstants.ZERO_INT){
if (Common.isNotNull(list)){
ExcelUtil<SysBaseSetFundExportVo> util = new ExcelUtil<>(SysBaseSetFundExportVo.class);
for (SysBaseSetFundExportVo vo:list){
util.convertEntity(vo,null,null,null);
}
}
if (Common.isNotNull(list)){
WriteSheet writeSheet = EasyExcel.writerSheet("基数设置表"+index).build();
excelWriter.write(list,writeSheet);
index++;
}
if (Common.isNotNull(list)){
list.clear();
}
}else {
WriteSheet writeSheet = EasyExcel.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);
}
}
}
public List<SysBaseSetInfo> noPageDiy(SysBaseSetInfoSearchVo searchVo) {
LambdaQueryWrapper<SysBaseSetInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)){
wrapper.in(SysBaseSetInfo::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 Long noPageCountDiy(SysBaseSetInfoSearchVo searchVo) {
LambdaQueryWrapper<SysBaseSetInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)){
wrapper.in(SysBaseSetInfo::getId,idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(SysBaseSetInfoSearchVo entity){
LambdaQueryWrapper<SysBaseSetInfo> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(SysBaseSetInfo::getCreateTime, entity.getCreateTimes()[0])
.le(SysBaseSetInfo::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())){
wrapper.eq(SysBaseSetInfo::getCreateName,entity.getCreateName());
}
return wrapper;
}
@Override
public R<List<ErrorMessage>> importFundDiy(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<SysBaseSetFundInsertVo> util1 = new ExcelUtil<>(SysBaseSetFundInsertVo.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, SysBaseSetFundInsertVo.class, new ReadListener<SysBaseSetFundInsertVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<SysBaseSetFundInsertVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(SysBaseSetFundInsertVo 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());
importSysBaseSetFund(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
boolean isTrue = true;
for (ErrorMessage message : errorMessageList) {
if (!CommonConstants.SAVE_SUCCESS.equals(message.getMessage())) {
isTrue = false;
break;
}
}
if (isTrue) {
return R.ok();
} else {
return R.ok(errorMessageList);
}
}
@Override
public R<List<ErrorMessage>> importSocialDiy(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<SysBaseSetSocialInsertVo> util1 = new ExcelUtil<>(SysBaseSetSocialInsertVo.class);;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, SysBaseSetSocialInsertVo.class, new ReadListener<SysBaseSetSocialInsertVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<SysBaseSetSocialInsertVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(SysBaseSetSocialInsertVo 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());
importSysBaseSetSocial(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
boolean isTrue = true;
for (ErrorMessage message : errorMessageList) {
if (!CommonConstants.SAVE_SUCCESS.equals(message.getMessage())) {
isTrue = false;
break;
}
}
if (isTrue) {
return R.ok();
} else {
return R.ok(errorMessageList);
}
}
private void importSysBaseSetSocial(List<SysBaseSetSocialInsertVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 区域数据初始化
HashMap<String, String> areaMap = new HashMap<>();
HashMap<String, Integer> areaMap2 = new HashMap<>();
R<AreaVo> areaListR = upmsDaprUtils.getAreaListR();
if (Common.isNotNull(areaListR)) {
AreaVo areaList = areaListR.getData();
if (null != areaList && !areaList.getSysAreaList().isEmpty()) {
for (SysArea area : areaList.getSysAreaList()) {
areaMap.put(Integer.toString(area.getId()), area.getAreaName());
areaMap2.put(area.getAreaName() + CommonConstants.DOWN_LINE_STRING + (
null == area.getParentId() ? "null" : (0 == area.getParentId() ? "null" : Integer.toString(
area.getParentId()))), area.getId());
}
}
}
// 个性化校验逻辑
ErrorMessage errorMsg;
//获取已有数据有效使用周期含当前时间的数据
Map<String, SysBaseSetInfo> socialSetInfoMap = this.getSysBaseSetInfoMap(CommonConstants.ZERO_STRING);
//获取已有数据有效状态的户配置
Map<String, SysHouseHoldInfo> holdMap = this.getHouseHoldMap(CommonConstants.ZERO_STRING);
// 执行数据插入操作 组装
SysBaseSetInfo temp = null;
//社保缴纳地
String[] areaArray = null;
//社保插入数据
SysBaseSetSocialInsertVo excel = null;
SysBaseSetInfo infoVo = null;
//起始月月份
Date dateFormat = null;
//执行月月份
Date dateUse = null;
SysHouseHoldInfo hold = null;
//补缴险种
String insurancePension = null;
for (int i = 0; i < excelVOList.size(); i++) {
infoVo = new SysBaseSetInfo();
excel = excelVOList.get(i);
hold = holdMap.get(excel.getDepartName());
if (Common.isEmpty(hold)){
errorMsg = new ErrorMessage(excel.getRowIndex(),"社保户”"+excel.getDepartName()+"“在户配置中未找到,请先到“社保公积金-配置中心-户配置”中确认是否存在该户");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setDepartName(excel.getDepartName());
//社保缴纳地解析
areaArray = excel.getProvinceStr().split(CommonConstants.CENTER_SPLIT_LINE_STRING);
infoVo = initAddress(areaArray, areaMap2, infoVo);
//比较hold对象中的省市县 与 infoVo对象中的省市县 是否一致,考虑为空的情况,不一致提示
if (!Objects.equals(hold.getTown(), null==infoVo.getTown()?null:infoVo.getTown().toString())
|| !Objects.equals(hold.getCity(), null==infoVo.getCity()?null:infoVo.getCity().toString())
|| !Objects.equals(hold.getProvince(), null==infoVo.getProvince()?null:infoVo.getProvince().toString())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"社保户”"+excel.getDepartName()+"“的社保缴纳地与户配置中该户的社保缴纳地不一致,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
//校验适用其实月份及执行月月份 是否符合规则 2025-10
if (!Common.validateFormatYearMonth(excel.getApplyStartDate())
|| !Common.validateFormatYearMonth(excel.getDoMonth())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份或执行月月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//适用起始月份
dateFormat = DateUtil.stringToDate2(excel.getApplyStartDate()+"-01", DateUtil.ISO_EXPANDED_DATE_FORMAT);
if (null != dateFormat){
infoVo.setApplyStartDate(dateFormat);
}else {
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
if (!Objects.equals(DateUtil.getYearAndMonth(dateFormat,0),DateUtil.getYearAndMonth(LocalDateTime.now(),0))
&& !Objects.equals(DateUtil.getYearAndMonth(dateFormat,0) , DateUtil.getYearAndMonth(LocalDateTime.now(),1))) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份只可填写“"
+DateUtil.getYearAndMonth(new Date(),0,CommonConstants.CENTER_SPLIT_LINE_STRING) +"”或“"
+DateUtil.getYearAndMonth(new Date(),1,CommonConstants.CENTER_SPLIT_LINE_STRING)
+"”,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
temp = socialSetInfoMap.get(excel.getDepartName());
// 如果已经存在使用周期内,然后判断新增的起始月份是否大于已有的起始月份,然后已有的截止月赋值为新的起始月的上月月底最后一天
if (Common.isNotNull(temp)){
if (temp.getApplyStartDate().getTime() >= dateFormat.getTime()){
errorMsg = new ErrorMessage(excel.getRowIndex(),"请检查数据,使用起始月份不能小于已存在的使用起始月份");
errorMessageList.add(errorMsg);
continue;
}
temp.setApplyEndDate(DateUtil.addDayByDate(dateFormat,-1));
}
//执行月份校验
dateUse = DateUtil.stringToDate2(excel.getDoMonth()+"-01", DateUtil.ISO_EXPANDED_DATE_FORMAT);
if (null != dateUse){
infoVo.setDoMonth(DateUtil.getYearAndMonth(dateFormat,0));
}else {
errorMsg = new ErrorMessage(excel.getRowIndex(),"执行月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//执行月份不能大于使用起始月份
if (dateUse.after(dateFormat)){
errorMsg = new ErrorMessage(excel.getRowIndex(),"执行月份只能填写“"
+DateUtil.getYearAndMonth(dateFormat,0,CommonConstants.CENTER_SPLIT_LINE_STRING)
+"”及之前的月份,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//是否同一基数上下限
if (!CommonConstants.ZERO_STRING.equals(excel.getIsSameBase()) && !CommonConstants.ONE_STRING.equals(excel.getIsSameBase())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否同一基数上下限只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setIsSameBase(excel.getIsSameBase());
//是否同一基数为是时,赋值工伤、医疗、生育、失业、大病对应单位及个人基数上下限
if (CommonConstants.ZERO_STRING.equals(excel.getIsSameBase())){
infoVo.setUpPersion(excel.getUpPersion());
infoVo.setLowerPersion(excel.getLowerPersion());
infoVo.setUpInjury(excel.getUpPersion());
infoVo.setLowerInjury(excel.getLowerPersion());
infoVo.setUpMedical(excel.getUpPersion());
infoVo.setLowerMedical(excel.getLowerPersion());
infoVo.setUpBirth(excel.getUpPersion());
infoVo.setLowerBirth(excel.getLowerPersion());
infoVo.setUpUnemployment(excel.getUpPersion());
infoVo.setLowerUnemployment(excel.getLowerPersion());
infoVo.setUpperLimit(excel.getUpPersion());
infoVo.setLowerLimit(excel.getLowerPersion());
//如果不是按比例后面要清空
excel.setUpBig(excel.getUpPersion());
excel.setLowerBig(excel.getLowerPersion());
}else if (CommonConstants.ONE_STRING.equals(excel.getIsSameBase())){
//工伤、医疗、生育、失业 必填
if (Common.isEmpty(excel.getUpInjury()) || Common.isEmpty(excel.getLowerInjury())
|| Common.isEmpty(excel.getUpMedical()) || Common.isEmpty(excel.getLowerMedical())
|| Common.isEmpty(excel.getUpBirth()) || Common.isEmpty(excel.getLowerBirth())
|| Common.isEmpty(excel.getUpUnemployment()) || Common.isEmpty(excel.getLowerUnemployment())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否同一基数上下限为否时,工伤、失业、医疗、生育上下限必填");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setUpPersion(excel.getUpPersion());
infoVo.setLowerPersion(excel.getLowerPersion());
infoVo.setUpInjury(excel.getUpInjury());
infoVo.setLowerInjury(excel.getLowerInjury());
infoVo.setUpMedical(excel.getUpMedical());
infoVo.setLowerMedical(excel.getLowerMedical());
infoVo.setUpBirth(excel.getUpBirth());
infoVo.setLowerBirth(excel.getLowerBirth());
infoVo.setUpUnemployment(excel.getUpUnemployment());
infoVo.setLowerUnemployment(excel.getLowerUnemployment());
excel.setUpBig(excel.getUpBig());
excel.setLowerBig(excel.getLowerBig());
}
//大病是否收取
if (!CommonConstants.ZERO_STRING.equals(excel.getIsIllness()) && !CommonConstants.ONE_STRING.equals(excel.getIsIllness())){
if (!CommonConstants.ZERO_STRING.equals(excel.getIsIllness())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
}
infoVo.setIsIllness(excel.getIsIllness());
//大病是否收费为是
if (CommonConstants.ZERO_STRING.equals(excel.getIsIllness())){
infoVo.setIsIllness(excel.getIsIllness());
//大病缴纳周期必填且只可是按年或按月
if (!CommonConstants.ZERO_STRING.equals(excel.getCollectType()) && !CommonConstants.ONE_STRING.equals(excel.getCollectType())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期必填且只可填写“按年”或“按月”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setCollectType(excel.getCollectType());
//大病缴纳周期按年
if (CommonConstants.ZERO_STRING.equals(excel.getCollectType())){
//大病缴纳周期按年 收费模式必填且只可填写“立即收费”或“次年起手”
if (!CommonConstants.ZERO_STRING.equals(excel.getCollectTypeSub()) && !CommonConstants.ONE_STRING.equals(excel.getCollectTypeSub())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期按年时,收费模式必填且只可填写“立即收费”或“次年起收”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setIsChargePersonal(excel.getCollectTypeSub());
//大病缴纳周期为“按年”的,该字段必填,只可以填写一月~十二月中的任意一月
if (!Common.getSet(CommonConstants.ONE_STRING, CommonConstants.TWO_STRING, CommonConstants.THREE_STRING,
CommonConstants.FOUR_STRING, CommonConstants.FIVE_STRING, CommonConstants.SIX_STRING,
CommonConstants.SEVEN_STRING, CommonConstants.EIGHT_STRING, CommonConstants.NINE_STRING,
CommonConstants.TEN_STRING, CommonConstants.ELEVEN_STRING, CommonConstants.TWELVE_STRING)
.contains(excel.getCollectMoth())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期为“按年”的,缴纳月份字段必填,只可以填写一月~十二月中的任意一月,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setCollectMoth(Integer.parseInt(excel.getCollectMoth()));
}
//大病缴纳周期按月
if (CommonConstants.ONE_STRING.equals(excel.getCollectType())){
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getValueType())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期为“按月”的,缴纳方式字段必填,只可填写“按定值”或“按比例”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setValueType(excel.getValueType());
//大病是否收取为是 大病缴纳周期为按月缴纳方式
if (CommonConstants.ONE_STRING.equals(excel.getValueType())){
//大病缴纳周期为按月缴纳方式为按比例需要填写金额 无值提示
if (null == excel.getUpBig()
|| null == excel.getLowerBig()
|| excel.getLowerBig().compareTo(BigDecimal.ZERO) < 0
|| excel.getUpBig().compareTo(BigDecimal.ZERO) < 0){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期为“按月”的,单位或个人大病基数上下限字段必填,仅填写正确基数即可,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setUpBig(excel.getUpPersion());
infoVo.setLowerBig(excel.getLowerPersion());
//大病缴纳周期为按月缴纳方式为按比例需要填写比例无值提示
if (null == excel.getPayCompanyPro()
|| null == excel.getPayPersonalPro()
|| excel.getPayPersonalPro().compareTo(BigDecimal.ZERO) < 0
|| excel.getPayPersonalPro().compareTo(BigDecimal.ZERO) < 0){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期为“按月”的,单位或个人大病比例字段必填,仅填写正确比例即可,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setPayCompanyPro(excel.getPayCompanyPro());
infoVo.setPayPersonalPro(excel.getPayPersonalPro());
}
}
//大病缴纳周期为“按年”的,或大病缴纳周期为“按月”,缴纳方式为“按定值”的,该字段必填,仅填写金额即可
if (CommonConstants.ZERO_STRING.equals(excel.getCollectType())
|| (CommonConstants.ONE_STRING.equals(excel.getCollectType())
&& CommonConstants.ZERO_STRING.equals(excel.getValueType()))){
if (null == excel.getChargeCompany()
|| null == excel.getChargePersonal()
|| excel.getChargePersonal().compareTo(BigDecimal.ZERO) < 0
|| excel.getChargeCompany().compareTo(BigDecimal.ZERO) < 0){
errorMsg = new ErrorMessage(excel.getRowIndex(),"大病是否收取为是时,大病缴纳周期为“按年”或大病缴纳周期为“按月”且缴纳方式为“按定值”时,单位或个人大病金额字段必填,仅填写正确金额即可,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setPayCompany(excel.getChargeCompany());
infoVo.setPayPersonal(excel.getChargePersonal());
}
}
//是否可补缴 只可以填写是或否,必填
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getCanOverpay())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否可补缴必填,只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setCanOverpay(excel.getCanOverpay());
//是否可补缴为是时补缴险种必填
if (CommonConstants.ZERO_STRING.equals(excel.getCanOverpay())) {
if (!Common.isNotNull(excel.getInsurancePension())) {
errorMsg = new ErrorMessage(excel.getRowIndex(), "是否可补缴为是时补缴险种必填,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
insurancePension = excel.getInsurancePension();
// 可补交险种:养老、医疗、失业、工伤、生育、大病
if (insurancePension.indexOf("养老") >= 0) {
infoVo.setInsurancePension(CommonConstants.ZERO_STRING);
}
if (insurancePension.indexOf("医疗") >= 0) {
infoVo.setInsuranceMedical(CommonConstants.ZERO_STRING);
}
if (insurancePension.indexOf("失业") >= 0) {
infoVo.setInsuranceUnemployment(CommonConstants.ZERO_STRING);
}
if (insurancePension.indexOf("工伤") >= 0) {
infoVo.setInsuranceInjury(CommonConstants.ZERO_STRING);
}
if (insurancePension.indexOf("生育") >= 0) {
infoVo.setInsuranceBirth(CommonConstants.ZERO_STRING);
}
if (insurancePension.indexOf("大病") >= 0) {
infoVo.setInsuranceBigailment(CommonConstants.ZERO_STRING);
}
insurancePension = insurancePension.replace("养老", "")
.replace("医疗", "")
.replace("失业", "")
.replace("工伤", "")
.replace("生育", "")
.replace("大病", "")
.replace(" ", "")
.replace(",", "");
if (insurancePension.length() > 0) {
errorMsg = new ErrorMessage(excel.getRowIndex(), "补缴险种填写错误,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
//最大补缴期限 若是否可补缴为“是”,必填,只可填写一个月~十二个月中的任意一个月
if (!Common.getSet(CommonConstants.ONE_STRING, CommonConstants.TWO_STRING, CommonConstants.THREE_STRING,
CommonConstants.FOUR_STRING, CommonConstants.FIVE_STRING, CommonConstants.SIX_STRING,
CommonConstants.SEVEN_STRING, CommonConstants.EIGHT_STRING, CommonConstants.NINE_STRING,
CommonConstants.TEN_STRING, CommonConstants.ELEVEN_STRING, CommonConstants.TWELVE_STRING)
.contains(excel.getOverpayNumber())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"最大补缴期限必填,只可填写“一个月”~“十二个月”中的任意一个月,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setOverpayNumber(Integer.parseInt(excel.getOverpayNumber()));
//是否含起缴当月 必填
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getHaveThisMonth())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否含起缴当月必填,只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setHaveThisMonth(excel.getHaveThisMonth());
// 补缴基数 若是否可补缴为“是”,必填,只可填写“最新基数”或“当期基数”
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getInsuranceIsLatestCardinality())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"补缴基数必填,只可填写“最新基数”或“当期基数”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setInsuranceIsLatestCardinality(excel.getInsuranceIsLatestCardinality());
// 补缴政策 必填
if (Common.isEmpty(excel.getPayPolicy())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"补缴政策必填,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setPayPolicy(excel.getPayPolicy());
}
infoVo.setUnitPersionPro(excel.getUnitPersionPro());
infoVo.setUnitInjuryPro(excel.getUnitInjuryPro());
infoVo.setUnitMedicalPro(excel.getUnitMedicalPro());
infoVo.setUnitBirthPro(excel.getUnitBirthPro());
infoVo.setUnitUnemploymentPro(excel.getUnitUnemploymentPro());
infoVo.setPayCompanyPro(excel.getPayCompanyPro());
infoVo.setPersonalUnemploymentPro(excel.getPersonalUnemploymentPro());
infoVo.setPersonalMedicalPro(excel.getPersonalMedicalPro());
infoVo.setPersonalPersionPro(excel.getPersonalPersionPro());
infoVo.setPayPersonalPro(excel.getPayPersonalPro());
//单位及个人比例合计
infoVo.setUnitProSum(BigDecimalUtils.safeAdd(infoVo.getUnitInjuryPro(),
infoVo.getUnitMedicalPro(),
infoVo.getUnitBirthPro(),
infoVo.getUnitUnemploymentPro(),
infoVo.getUnitPersionPro()));
infoVo.setPersonalProSum(BigDecimalUtils.safeAdd(infoVo.getPersonalPersionPro(),
infoVo.getPersonalUnemploymentPro(),
infoVo.getPersonalMedicalPro()));
//只有大病是否收费为是 且 缴纳方式为按比例才计算合计比例
if (CommonConstants.ZERO_STRING.equals(excel.getIsIllness()) && CommonConstants.ONE_STRING.equals(excel.getValueType())){
infoVo.setUnitProSum(BigDecimalUtils.safeAdd(infoVo.getUnitProSum(), infoVo.getPayCompanyPro()));
infoVo.setPersonalProSum(BigDecimalUtils.safeAdd(infoVo.getPersonalProSum(),infoVo.getPayPersonalPro()));
}
infoVo.setStatus(CommonConstants.ZERO_INT);
infoVo.setBaseType(CommonConstants.ZERO_STRING);
// 插入并更新历史数据
try {
insertSocialExcel(infoVo,socialSetInfoMap,temp);
}catch (Exception e){
errorMsg = new ErrorMessage(excel.getRowIndex(),"数据保存失败,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
}
}
/**
* 插入excel bad record
*/
private void insertSocialExcel(SysBaseSetInfo insert ,Map<String, SysBaseSetInfo> socialSetInfoMap,SysBaseSetInfo old) {
if (null != old && null != old.getId()){
this.updateById(old);
}
this.save(insert);
socialSetInfoMap.put(insert.getDepartName(),insert);
}
private void importSysBaseSetFund(List<SysBaseSetFundInsertVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 区域数据初始化
HashMap<String, String> areaMap = new HashMap<>();
HashMap<String, Integer> areaMap2 = new HashMap<>();
R<AreaVo> areaListR = upmsDaprUtils.getAreaListR();
if (Common.isNotNull(areaListR)) {
AreaVo areaList = areaListR.getData();
if (null != areaList && !areaList.getSysAreaList().isEmpty()) {
for (SysArea area : areaList.getSysAreaList()) {
areaMap.put(Integer.toString(area.getId()), area.getAreaName());
areaMap2.put(area.getAreaName() + CommonConstants.DOWN_LINE_STRING + (
null == area.getParentId() ? "null" : (0 == area.getParentId() ? "null" : Integer.toString(
area.getParentId()))), area.getId());
}
}
}
// 个性化校验逻辑
ErrorMessage errorMsg;
//获取已有数据有效使用周期含当前时间的数据
Map<String, SysBaseSetInfo> fundSetInfoMap = this.getSysBaseSetInfoMap(CommonConstants.ONE_STRING);
//获取已有数据有效状态的户配置
Map<String, SysHouseHoldInfo> holdMap = this.getHouseHoldMap(CommonConstants.ONE_STRING);
// 执行数据插入操作 组装
SysBaseSetInfo temp = null;
//社保缴纳地
String[] areaArray = null;
//社保插入数据
SysBaseSetFundInsertVo excel = null;
SysBaseSetInfo infoVo = null;
//起始月月份
Date dateFormat = null;
//执行月月份
Date dateUse = null;
SysHouseHoldInfo hold = null;
//公积金比例
List<SysPayProportion> fundProList;
SysPayProportion fundPro = null;
String[] split = null;
String[] splitSub = null;
// 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
infoVo = new SysBaseSetInfo();
hold = holdMap.get(excel.getDepartName());
if (Common.isEmpty(hold)){
errorMsg = new ErrorMessage(excel.getRowIndex(),"公积金户”"+excel.getDepartName()+"“在户配置中未找到,请先到“社保公积金-配置中心-户配置”中确认是否存在该户");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setDepartName(excel.getDepartName());
//公积金类型
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getFundPayType())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"公积金类型必填,只可填写“省直”或“市直”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
//缴纳地解析
areaArray = excel.getProvinceStr().split(CommonConstants.CENTER_SPLIT_LINE_STRING);
infoVo = initAddress(areaArray, areaMap2, infoVo);
//比较hold对象中的省市县 与 infoVo对象中的省市县 是否一致,考虑为空的情况,不一致提示
if (!Objects.equals(hold.getTown(), null==infoVo.getTown()?null:infoVo.getTown().toString())
|| !Objects.equals(hold.getCity(), null==infoVo.getCity()?null:infoVo.getCity().toString())
|| !Objects.equals(hold.getProvince(), null==infoVo.getProvince()?null:infoVo.getProvince().toString())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"公积金户”"+excel.getDepartName()+"“的社保缴纳地与户配置中该户的社保缴纳地不一致,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
//校验适用其实月份及执行月月份 是否符合规则 2025-10
if (!Common.validateFormatYearMonth(excel.getApplyStartDate())
|| !Common.validateFormatYearMonth(excel.getDoMonth())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份或执行月月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//适用起始月份
dateFormat = DateUtil.stringToDate2(excel.getApplyStartDate()+"-01", DateUtil.ISO_EXPANDED_DATE_FORMAT);
if (null != dateFormat){
infoVo.setApplyStartDate(dateFormat);
}else {
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
if (!Objects.equals(DateUtil.getYearAndMonth(dateFormat,0),DateUtil.getYearAndMonth(LocalDateTime.now(),0))
&& !Objects.equals(DateUtil.getYearAndMonth(dateFormat,0) , DateUtil.getYearAndMonth(LocalDateTime.now(),1))){
errorMsg = new ErrorMessage(excel.getRowIndex(),"适用起始月份只可填写“"
+DateUtil.getYearAndMonth(new Date(),0,CommonConstants.CENTER_SPLIT_LINE_STRING) +"”或“"
+DateUtil.getYearAndMonth(new Date(),1,CommonConstants.CENTER_SPLIT_LINE_STRING)
+"”,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
temp = fundSetInfoMap.get(excel.getDepartName());
// 如果已经存在使用周期内,然后判断新增的起始月份是否大于已有的起始月份,然后已有的截止月赋值为新的起始月的上月月底最后一天
if (Common.isNotNull(temp)){
if (temp.getApplyStartDate().getTime() >= dateFormat.getTime()){
errorMsg = new ErrorMessage(excel.getRowIndex(),"请检查数据,使用起始月份不能小于已存在的使用起始月份");
errorMessageList.add(errorMsg);
continue;
}
temp.setApplyEndDate(DateUtil.addDayByDate(dateFormat,-1));
}
//执行月份校验
dateUse = DateUtil.stringToDate2(excel.getDoMonth()+"-01", DateUtil.ISO_EXPANDED_DATE_FORMAT);
if (null != dateUse){
infoVo.setDoMonth(DateUtil.getYearAndMonth(dateFormat,0));
}else {
errorMsg = new ErrorMessage(excel.getRowIndex(),"执行月份格式错误,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//执行月份不能大于使用起始月份
if (dateUse.after(dateFormat)){
errorMsg = new ErrorMessage(excel.getRowIndex(),"执行月份只可填写“"
+DateUtil.getYearAndMonth(dateFormat,0,CommonConstants.CENTER_SPLIT_LINE_STRING)
+"”及之前的月份,请修改后重新提交。");
errorMessageList.add(errorMsg);
continue;
}
//基数上下限赋值
infoVo.setLowerLimit(excel.getLowerLimit());
infoVo.setUpperLimit(excel.getUpperLimit());
infoVo.setFundPayLowerLimit(excel.getLowerLimit());
infoVo.setFundPayUpperLimit(excel.getUpperLimit());
//单边小数点
if (!Common.getSet(CommonConstants.ONE_STRING, CommonConstants.TWO_STRING,
CommonConstants.THREE_STRING, CommonConstants.FOUR_STRING,
CommonConstants.FIVE_STRING, CommonConstants.SIX_STRING)
.contains(excel.getFundPayPoint())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"单边小数点必填,只可填写“四舍五入取整或元以下舍去或见角进元或保留两位小数或保留一位小数或见分进元”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setFundPayPoint(Integer.parseInt(excel.getFundPayPoint()));
//单位公积金比例,个人公积金比例 :需要校验格式 为 10,10;12,13
if (!Common.isNotNull(excel.getHousingFundPro())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"单位公积金比例,个人公积金比例必填,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
// 校验 单位公积金比例,个人公积金比例格式:10,10;12,13
if (!Common.validateFormat(excel.getHousingFundPro())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"单位公积金比例,个人公积金比例格式错误,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
split = excel.getHousingFundPro().split(CommonConstants.SEMICOLON_STRING);
fundProList = new ArrayList<>();
for (String var : split) {
fundPro = new SysPayProportion();
splitSub = var.split(CommonConstants.COMMA_STRING);
if (null != splitSub && splitSub.length == 2){
fundPro.setCompanyPro(Double.valueOf(splitSub[0]));
fundPro.setPersonalPro(Double.valueOf(splitSub[1]));
}
fundProList.add(fundPro);
}
//是否可补缴 只可以填写是或否,必填
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getCanOverpay())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否可补缴必填,只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
//是否可补缴为是时补缴险种必填
if (CommonConstants.ZERO_STRING.equals(excel.getCanOverpay())) {
//最大补缴期限 若是否可补缴为“是”,必填,只可填写一个月~十二个月中的任意一个月
if (!Common.getSet(CommonConstants.ONE_STRING, CommonConstants.TWO_STRING, CommonConstants.THREE_STRING,
CommonConstants.FOUR_STRING, CommonConstants.FIVE_STRING, CommonConstants.SIX_STRING,
CommonConstants.SEVEN_STRING, CommonConstants.EIGHT_STRING, CommonConstants.NINE_STRING,
CommonConstants.TEN_STRING, CommonConstants.ELEVEN_STRING, CommonConstants.TWELVE_STRING)
.contains(excel.getOverpayNumber())){
errorMsg = new ErrorMessage(excel.getRowIndex(),"最大补缴期限必填,只可填写“一个月”~“十二个月”中的任意一个月,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setOverpayNumber(Integer.parseInt(excel.getOverpayNumber()));
}
//是否含起缴当月
//是否含起缴当月 必填
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getHaveThisMonth())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"是否含起缴当月必填,只可填写“是”或“否”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setHaveThisMonth(excel.getHaveThisMonth());
// 补缴基数 若是否可补缴为“是”,必填,只可填写“最新基数”或“当期基数”
if (!Common.getSet(CommonConstants.ZERO_STRING, CommonConstants.ONE_STRING).contains(excel.getInsuranceIsLatestCardinality())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"补缴基数必填,只可填写“最新基数”或“当期基数”,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
// 补缴政策 必填
if (Common.isEmpty(excel.getPayPolicy())) {
errorMsg = new ErrorMessage(excel.getRowIndex(),"补缴政策必填,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
infoVo.setPayPolicy(excel.getPayPolicy());
infoVo.setInsuranceIsLatestCardinality(excel.getInsuranceIsLatestCardinality());
infoVo.setCanOverpay(excel.getCanOverpay());
infoVo.setStatus(CommonConstants.ZERO_INT);
infoVo.setBaseType(CommonConstants.ONE_STRING);
// 插入
try {
insertFundExcel(temp,infoVo,fundProList,fundSetInfoMap);
}catch (Exception e){
errorMsg = new ErrorMessage(excel.getRowIndex(),"数据保存失败,请修改后重新提交");
errorMessageList.add(errorMsg);
continue;
}
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
}
}
/**
* 插入excel bad record
*/
private void insertFundExcel(SysBaseSetInfo old,SysBaseSetInfo insert,List<SysPayProportion> fundProList,Map<String, SysBaseSetInfo> fundSetInfoMap) {
if (Common.isNotNull(old) && Common.isNotNull(old.getId()));{
baseMapper.updateById( old);
}
baseMapper.insert(insert);
if (Common.isNotNull(fundProList)){
for (SysPayProportion fundPro : fundProList) {
fundPro.setSysBaseSetId(insert.getId());
sysPayProportionService.save(fundPro);
}
}
fundSetInfoMap.put(insert.getDepartName(), insert);
}
/**
* 转换缴纳地址为省市县ID
**/
private SysBaseSetInfo initAddress(String[] areaArray, HashMap<String, Integer> areaMap2, SysBaseSetInfo s) {
if (null == areaArray || null == areaMap2 || null == s) {
return s;
}
Integer temp;
if (areaArray.length >= CommonConstants.TWO_INT) {
temp = areaMap2.get(areaArray[0] + CommonConstants.DOWN_LINE_STRING + "null");
if (Common.isNotNull(temp)) {
s.setProvince(temp);
}
temp = areaMap2.get(areaArray[1] + CommonConstants.DOWN_LINE_STRING + (null == s.getProvince()
? "null" : s.getProvince()));
if (Common.isNotNull(temp)) {
s.setCity(temp);
}
if (areaArray.length >= CommonConstants.THREE_INT) {
temp = areaMap2.get(areaArray[2] + CommonConstants.DOWN_LINE_STRING + (null == s.getCity()
? "null" : s.getCity()));
if (Common.isNotNull(temp)) {
s.setTown(temp);
}
}
}
return s;
}
} }
...@@ -102,6 +102,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -102,6 +102,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
@Autowired @Autowired
private TDispatchInfoMapper dispatchInfoMapper; private TDispatchInfoMapper dispatchInfoMapper;
private final static String AND_STR = "&";
/** /**
* @Description: 推送到税友 * @Description: 推送到税友
* @Author: hgw * @Author: hgw
...@@ -118,17 +119,19 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -118,17 +119,19 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
// 通用的模板+查到的户的模板map // 通用的模板+查到的户的模板map
Map<String, URL> templateSrcMap = new HashMap<>(); Map<String, URL> templateSrcMap = new HashMap<>();
// 通用的花名册模板 // 通用的花名册模板
List<TAttaInfo> srcList = attaInfoMapper.getTemplateSrcById(); // 2025-11-4 17:45:38 1.7.17-税友临时分支,此处代码暂时注释掉,因为需求(陈红)说暂时不要通用花名册模板,后面有可能还是要通用花名册模板
// List<TAttaInfo> srcList = attaInfoMapper.getTemplateSrcById();
URL url; URL url;
if (srcList != null && !srcList.isEmpty()) { /*if (srcList != null && !srcList.isEmpty()) {
for (TAttaInfo src : srcList) { for (TAttaInfo src : srcList) {
url = ossUtil.getObjectUrl(null, src.getAttaSrc()); url = ossUtil.getObjectUrl(null, src.getAttaSrc());
templateSrcMap.put("template_" + src.getId(), url); templateSrcMap.put("template_" + src.getId(), url);
} }
} }*/
// 离职原因Map,将离职原因翻译为税友的字典 // 离职原因Map,将离职原因翻译为税友的字典
Map<String, TSocialFriendReduceSet> reduceYgsMap = tSocialFriendReduceSetService.getFriendReduceMap(CommonConstants.ONE_STRING); Map<String, TSocialFriendReduceSet> reduceYgsMap = tSocialFriendReduceSetService.getFriendReduceMap(CommonConstants.ONE_STRING);
Map<String, TSocialFriendReduceSet> reduceYsdMap = tSocialFriendReduceSetService.getFriendReduceMap(CommonConstants.TWO_STRING); Map<String, TSocialFriendReduceSet> reduceYsdMap = tSocialFriendReduceSetService.getFriendReduceMap(CommonConstants.TWO_STRING);
Map<String, TSocialFriendReduceSet> reduceChiZhouMap = tSocialFriendReduceSetService.getFriendReduceMap(CommonConstants.THREE_STRING);
// 获取时间限制配置(获取 当月启用 的配置) // 获取时间限制配置(获取 当月启用 的配置)
Map<String, TSocialDeadlineInfo> socialSetMap = tSocialDeadlineInfoService.getSocialSetByAreaId(); Map<String, TSocialDeadlineInfo> socialSetMap = tSocialDeadlineInfoService.getSocialSetByAreaId();
...@@ -151,23 +154,23 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -151,23 +154,23 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
// 养工失新增列表 // 养工失新增列表
List<SociaFriendYgsAddVo> ygsAddlist = baseMapper.getSocialSoldierYgsAddVoList(dispatchIdList); List<SociaFriendYgsAddVo> ygsAddlist = baseMapper.getSocialSoldierYgsAddVoList(dispatchIdList);
if (ygsAddlist != null && !ygsAddlist.isEmpty()) { if (ygsAddlist != null && !ygsAddlist.isEmpty()) {
this.doPushSocialAndLogYgs(socialSetMap, ygsAddlist, 1, reduceYgsMap, zhangMap, templateUrl, templateSrcMap); this.doPushSocialAndLogYgs(socialSetMap, ygsAddlist, 1, reduceYgsMap, zhangMap, templateUrl, templateSrcMap, reduceChiZhouMap);
} }
// 养工失减少列表 // 养工失减少列表
List<SociaFriendYgsAddVo> ygsReducelist = baseMapper.getSocialSoldierYgsReduceVoList(dispatchIdList); List<SociaFriendYgsAddVo> ygsReducelist = baseMapper.getSocialSoldierYgsReduceVoList(dispatchIdList);
if (ygsReducelist != null && !ygsReducelist.isEmpty()) { if (ygsReducelist != null && !ygsReducelist.isEmpty()) {
this.doPushSocialAndLogYgs(socialSetMap, ygsReducelist, 2, reduceYgsMap, zhangMap, templateUrl, templateSrcMap); this.doPushSocialAndLogYgs(socialSetMap, ygsReducelist, 2, reduceYgsMap, zhangMap, templateUrl, templateSrcMap, reduceChiZhouMap);
} }
// 医生大新增列表 // 医生大新增列表
List<SociaFriendYgsAddVo> ysdAddlist = baseMapper.getSocialSoldierYsdAddVoList(dispatchIdList); List<SociaFriendYgsAddVo> ysdAddlist = baseMapper.getSocialSoldierYsdAddVoList(dispatchIdList);
if (ysdAddlist != null && !ysdAddlist.isEmpty()) { if (ysdAddlist != null && !ysdAddlist.isEmpty()) {
this.doPushSocialAndLogYsd(socialSetMap, ysdAddlist, 3, reduceYsdMap, zhangMap, templateUrl, templateSrcMap); this.doPushSocialAndLogYsd(socialSetMap, ysdAddlist, 3, reduceYsdMap, zhangMap, templateUrl, templateSrcMap, reduceChiZhouMap);
} }
// 医生大减少列表 // 医生大减少列表
List<SociaFriendYgsAddVo> ysdReducelist = baseMapper.getSocialSoldierYsdReduceVoList(dispatchIdList); List<SociaFriendYgsAddVo> ysdReducelist = baseMapper.getSocialSoldierYsdReduceVoList(dispatchIdList);
if (ysdReducelist != null && !ysdReducelist.isEmpty()) { if (ysdReducelist != null && !ysdReducelist.isEmpty()) {
this.doPushSocialAndLogYsd(socialSetMap, ysdReducelist, 4, reduceYsdMap, zhangMap, templateUrl, templateSrcMap); this.doPushSocialAndLogYsd(socialSetMap, ysdReducelist, 4, reduceYsdMap, zhangMap, templateUrl, templateSrcMap, reduceChiZhouMap);
} }
if ((ygsAddlist == null || ygsAddlist.isEmpty()) if ((ygsAddlist == null || ygsAddlist.isEmpty())
&& (ygsReducelist == null || ygsReducelist.isEmpty()) && (ygsReducelist == null || ygsReducelist.isEmpty())
...@@ -195,7 +198,8 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -195,7 +198,8 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
**/ **/
private R<String> doPushSocialAndLogYgs(Map<String, TSocialDeadlineInfo> socialSetMap private R<String> doPushSocialAndLogYgs(Map<String, TSocialDeadlineInfo> socialSetMap
, List<SociaFriendYgsAddVo> ygsAddlist, int type, Map<String, TSocialFriendReduceSet> reduceMap , List<SociaFriendYgsAddVo> ygsAddlist, int type, Map<String, TSocialFriendReduceSet> reduceMap
, Map<String, URL> zhangMap, URL templateUrl, Map<String, URL> templateSrcMap) { , Map<String, URL> zhangMap, URL templateUrl, Map<String, URL> templateSrcMap
, Map<String, TSocialFriendReduceSet> reduceChiZhouMap) {
int canPushType; int canPushType;
TSocialInfo socialInfo; TSocialInfo socialInfo;
String typeStr = "提交"; String typeStr = "提交";
...@@ -234,6 +238,11 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -234,6 +238,11 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
vo = ygsAddlist.get(index); vo = ygsAddlist.get(index);
// 派减离职原因转化: // 派减离职原因转化:
if (type == 2 && Common.isNotNull(vo.getTbyy())) { if (type == 2 && Common.isNotNull(vo.getTbyy())) {
reduceSet = reduceChiZhouMap.get(vo.getTbyy());
if (reduceSet != null) {
vo.setChiZhouTbyy(reduceSet.getTbyy());
vo.setChiZhouZzyy(reduceSet.getZzyy());
}
reduceSet = reduceMap.get(vo.getTbyy()); reduceSet = reduceMap.get(vo.getTbyy());
if (reduceSet != null) { if (reduceSet != null) {
vo.setTbyy(reduceSet.getTbyy()); vo.setTbyy(reduceSet.getTbyy());
...@@ -486,7 +495,8 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -486,7 +495,8 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
**/ **/
private void doPushSocialAndLogYsd(Map<String, TSocialDeadlineInfo> socialSetMap private void doPushSocialAndLogYsd(Map<String, TSocialDeadlineInfo> socialSetMap
, List<SociaFriendYgsAddVo> ysdAddlist, int type, Map<String, TSocialFriendReduceSet> reduceMap , List<SociaFriendYgsAddVo> ysdAddlist, int type, Map<String, TSocialFriendReduceSet> reduceMap
, Map<String, URL> zhangMap, URL templateUrl, Map<String, URL> templateSrcMap) { , Map<String, URL> zhangMap, URL templateUrl, Map<String, URL> templateSrcMap
, Map<String, TSocialFriendReduceSet> reduceChiZhouMap) {
int canPushType; int canPushType;
TSocialInfo socialInfo; TSocialInfo socialInfo;
String typeStr = "提交"; String typeStr = "提交";
...@@ -540,6 +550,11 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -540,6 +550,11 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
} else {*/ } else {*/
// 派减离职原因转化: // 派减离职原因转化:
if (type == 4 && Common.isNotNull(vo.getTbyy())) { if (type == 4 && Common.isNotNull(vo.getTbyy())) {
reduceSet = reduceChiZhouMap.get(vo.getTbyy());
if (reduceSet != null) {
vo.setChiZhouTbyy(reduceSet.getTbyy());
vo.setChiZhouZzyy(reduceSet.getZzyy());
}
reduceSet = reduceMap.get(vo.getTbyy()); reduceSet = reduceMap.get(vo.getTbyy());
if (reduceSet != null) { if (reduceSet != null) {
vo.setTbyy(reduceSet.getTbyy()); vo.setTbyy(reduceSet.getTbyy());
...@@ -1518,7 +1533,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -1518,7 +1533,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
} }
if (key.contains(CommonConstants.QIAN_MING)) { if (key.contains(CommonConstants.QIAN_MING)) {
// 签名样式 // 签名样式
qianMingArr = key.split("&"); qianMingArr = key.split(AND_STR);
if (qianMingArr.length>1) { if (qianMingArr.length>1) {
key = qianMingArr[1]; key = qianMingArr[1];
} else { } else {
...@@ -1528,11 +1543,18 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe ...@@ -1528,11 +1543,18 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
setQianMingStyle(cell, newValue); setQianMingStyle(cell, newValue);
} else if (key.contains(CommonConstants.GU_DING)) { } else if (key.contains(CommonConstants.GU_DING)) {
// 固定文字 // 固定文字
qianMingArr = key.split("&"); qianMingArr = key.split(AND_STR);
if (qianMingArr.length>1) { if (qianMingArr.length>1) {
key = qianMingArr[1]; key = qianMingArr[1];
cell.setCellValue(key); cell.setCellValue(key);
} }
} else if (key.contains(AND_STR)) {
qianMingArr = key.split(AND_STR);
newValue = "";
for (String s : qianMingArr) {
newValue += getFieldValue(vo, s);
}
cell.setCellValue(newValue);
} else { } else {
newValue = getFieldValue(vo, key); newValue = getFieldValue(vo, key);
cell.setCellValue(newValue); cell.setCellValue(newValue);
......
...@@ -464,4 +464,119 @@ ...@@ -464,4 +464,119 @@
</where> </where>
limit 1 limit 1
</select> </select>
<select id="noPageSocialDiy" resultType="com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetSocialExportVo">
select
a.DEPART_NAME departName,
CONCAT_WS('-',
CASE WHEN a1.id is NOT NULL THEN a1.AREA_NAME ELSE NULL END,
CASE WHEN a2.id is NOT NULL THEN a2.AREA_NAME ELSE NULL END,
CASE WHEN a3.id is NOT NULL THEN a3.AREA_NAME ELSE NULL END
) as province,
a.STATUS 'status',
CONCAT(a.APPLY_START_DATE,'~',IF(a.APPLY_END_DATE is NULL,"永久",a.APPLY_END_DATE)) applyStartDate,
a.APPLY_START_DATE applyStartDate,
a.DO_MONTH doMonth,
a.IS_SAME_BASE isSameBase,
a.LOWER_PERSION lowerPersion,
a.UP_PERSION upPersion,
a.LOWER_INJURY lowerInjury,
a.UP_INJURY upInjury,
a.LOWER_MEDICAL lowerMedical,
a.UP_MEDICAL upMedical,
a.LOWER_BIRTH lowerBirth,
a.UP_BIRTH upBirth,
a.LOWER_UNEMPLOYMENT lowerUnemployment,
a.UP_UNEMPLOYMENT upUnemployment,
a.LOWER_BIG lowerBig,
a.UP_BIG upBig,
a.IS_ILLNESS isIllness,
a.COLLECT_TYPE collectType,
a.IS_CHARGE_PERSONAL isChargePersonal,
a.COLLECT_MOTH collectMoth,
a.VALUE_TYPE valueType,
a.CHARGE_COMPANY chargeCompany,
a.CHARGE_PERSONAL chargePersonal,
a.UNIT_MEDICAL_PRO unitMedicalPro,
a.PERSONAL_MEDICAL_PRO personalMedicalPro,
a.UNIT_BIRTH_PRO unitBirthPro,
a.UNIT_PERSION_PRO unitPersionPro,
a.PERSONAL_PERSION_PRO personalPersionPro,
a.UNIT_INJURY_PRO unitInjuryPro,
a.UNIT_UNEMPLOYMENT_PRO unitUnemploymentPro,
a.PERSONAL_UNEMPLOYMENT_PRO personalUnemploymentPro,
a.PAY_COMPANY_PRO payCompanyPro,
a.PAY_PERSONAL_PRO payPersonalPro,
a.CAN_OVERPAY canOverpay,
a.UNIT_PRO_SUM unitProSum,
a.PERSONAL_PRO_SUM personalProSum,
CONCAT_WS(',',
CASE WHEN a.INSURANCE_PENSION=0 THEN '养老' ELSE NULL END,
CASE WHEN a.INSURANCE_MEDICAL=0 THEN '医疗' ELSE NULL END,
CASE WHEN a.INSURANCE_INJURY=0 THEN '工伤' ELSE NULL END,
CASE WHEN a.INSURANCE_UNEMPLOYMENT=0 THEN '失业' ELSE NULL END,
CASE WHEN a.INSURANCE_BIRTH=0 THEN '生育' ELSE NULL END,
CASE WHEN a.INSURANCE_BIGAILMENT=0 THEN '大病' ELSE NULL END
) as insurancePension,
a.OVERPAY_NUMBER overpayNumber,
a.HAVE_THIS_MONTH haveThisMonth,
a.INSURANCE_IS_LATEST_CARDINALITY insuranceIsLatestCardinality,
a.PAY_POLICY payPolicy
FROM sys_base_set_info a
LEFT JOIN sys_area a1 on a1.id=a.PROVINCE
LEFT JOIN sys_area a2 on a2.id=a.CITY
LEFT JOIN sys_area a3 on a3.id=a.TOWN
<where>
a.DELETE_FLAG='0'
and a.BASE_TYPE ='0'
<include refid="sysBaseSetInfo_where"/>
</where>
order by a.CREATE_TIME desc
</select>
<select id="noPageFundDiy" resultType="com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetFundExportVo">
select
a.DEPART_NAME departName,
a.FUND_PAY_TYPE fundPayType,
CONCAT_WS('-',
CASE WHEN a1.id is NOT NULL THEN a1.AREA_NAME ELSE NULL END,
CASE WHEN a2.id is NOT NULL THEN a2.AREA_NAME ELSE NULL END,
CASE WHEN a3.id is NOT NULL THEN a3.AREA_NAME ELSE NULL END
) as provinceStr,
a.STATUS 'status',
CONCAT(a.APPLY_START_DATE,'~',IF(a.APPLY_END_DATE is NULL,"永久",a.APPLY_END_DATE)) applyStartDate,
a.DO_MONTH doMonth,
a.LOWER_LIMIT lowerLimit,
a.UPPER_LIMIT upperLimit,
a.FUND_PAY_POINT fundPayPoint,
fp.pro housingFundPro,
a.CAN_OVERPAY canOverpay,
a.OVERPAY_NUMBER overpayNumber,
a.HAVE_THIS_MONTH haveThisMonth,
a.INSURANCE_IS_LATEST_CARDINALITY insuranceIsLatestCardinality,
a.PAY_POLICY payPolicy
FROM sys_base_set_info a
LEFT JOIN sys_area a1 on a1.id=a.PROVINCE
LEFT JOIN sys_area a2 on a2.id=a.CITY
LEFT JOIN sys_area a3 on a3.id=a.TOWN
LEFT JOIN
(select GROUP_CONCAT(CONCAT(
CASE
WHEN p.COMPANY_PRO = TRUNCATE(p.COMPANY_PRO, 0) THEN FORMAT(p.COMPANY_PRO, 0)
ELSE FORMAT(p.COMPANY_PRO, 2)
END,
',',
CASE
WHEN p.PERSONAL_PRO = TRUNCATE(p.PERSONAL_PRO, 0) THEN FORMAT(p.PERSONAL_PRO, 0)
ELSE FORMAT(p.PERSONAL_PRO, 2)
END) SEPARATOR ';') as pro,p.SYS_BASE_SET_ID from sys_pay_proportion p GROUP BY p.SYS_BASE_SET_ID)
fp on fp.SYS_BASE_SET_ID=a.ID
<where>
a.DELETE_FLAG='0'
and a.BASE_TYPE ='1'
<include refid="sysBaseSetInfo_where"/>
</where>
order by a.CREATE_TIME desc
</select>
</mapper> </mapper>
...@@ -198,6 +198,18 @@ ...@@ -198,6 +198,18 @@
order by a.CREATE_TIME desc order by a.CREATE_TIME desc
</select> </select>
<!--sysHouseHoldInfo简单分页查询-->
<select id="getSysHouseHoldNoPage" resultMap="sysHouseHoldInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM sys_house_hold_info a
<where>
1=1
<include refid="sysHouseHoldInfo_where"/>
</where>
order by a.CREATE_TIME desc
</select>
<!--sysHouseHoldInfo简单分页查询--> <!--sysHouseHoldInfo简单分页查询-->
<select id="getAllSingleSocailPage" resultMap="sysHouseHoldSingleInfoMap"> <select id="getAllSingleSocailPage" resultMap="sysHouseHoldSingleInfoMap">
SELECT SELECT
......
...@@ -106,6 +106,9 @@ ...@@ -106,6 +106,9 @@
,DATE_FORMAT(now(),"%Y年%m月%d日") nowDay ,DATE_FORMAT(now(),"%Y年%m月%d日") nowDay
,s.SOCIAL_HOUSEHOLD huId ,s.SOCIAL_HOUSEHOLD huId
,s.SFQZTB sfqztb ,s.SFQZTB sfqztb
,idp.AREA_NAME idCardProvince
,idc.AREA_NAME idCardCity
,idt.AREA_NAME idCardTown
</sql> </sql>
...@@ -117,7 +120,9 @@ ...@@ -117,7 +120,9 @@
left join t_dispatch_social_fund_info h on a.id = h.REDUCE_SOCIAL_FUND_ID left join t_dispatch_social_fund_info h on a.id = h.REDUCE_SOCIAL_FUND_ID
left join sys_house_hold_info shh on shh.id = s.SOCIAL_HOUSEHOLD left join sys_house_hold_info shh on shh.id = s.SOCIAL_HOUSEHOLD
left join view_sys_dict_item nation on nation.value=a.EMP_NATIONAL and nation.type='emp_national' left join view_sys_dict_item nation on nation.value=a.EMP_NATIONAL and nation.type='emp_national'
left join sys_area idp on idp.id = a.ID_CARD_PROVINCE
left join sys_area idc on idc.id = a.ID_CARD_CITY
left join sys_area idt on idt.id = a.ID_CARD_TOWN
<include refid="where_getSocialSoldier_base_handler"/> <include refid="where_getSocialSoldier_base_handler"/>
and DATE_FORMAT(a.AUDIT_TIME,'%Y%m') = DATE_FORMAT(now(),'%Y%m') and DATE_FORMAT(a.AUDIT_TIME,'%Y%m') = DATE_FORMAT(now(),'%Y%m')
</sql> </sql>
......
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