Commit a0555a63 authored by fangxinjiang's avatar fangxinjiang

公积金自动化-fxj

parent 2934a019
......@@ -52,10 +52,10 @@ public class TEmployeePreLogDetail extends BaseEntity {
/**
* 类型:1档案;2商险
*/
@ExcelAttribute(name = "类型:1档案;2商险3合同4社保", maxLength = 1)
@Length(max = 1, message = "类型:1档案;2商险3合同4社保不能超过1个字符")
@ExcelProperty("类型:1档案;2商险3合同4社保")
@Schema(description = "类型:1档案;2商险 3合同 4社保")
@ExcelAttribute(name = "类型:1档案;2商险3合同4社保5公积金", maxLength = 1)
@Length(max = 1, message = "类型:1档案;2商险3合同4社保5公积金不能超过1个字符")
@ExcelProperty("类型:1档案;2商险3合同4社保5公积金")
@Schema(description = "类型:1档案;2商险 3合同 4社保 5公积金")
private String type;
/**
* 入职确认信息表ID
......
......@@ -832,11 +832,11 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
if (Common.isNotNull(resR) && resR.getData() != null) {
SysBaseSetInfoVo setInfo = resR.getData();
if (employeeRegistrationPre.getDispatchInfoFundPreVo().getProvidentCardinal().compareTo(setInfo.getLowerLimit()) < 0) {
return R.other(CommonConstants.TWO_INT,null,"公积金基数需≥当前户("+setInfo.getDepartName()+")的最低基数:"+setInfo.getLowerLimit()+"!");
return R.other(CommonConstants.THREE_INT,null,"公积金基数需≥当前户("+setInfo.getDepartName()+")的最低基数:"+setInfo.getLowerLimit()+"!");
}
}else {
return R.other(CommonConstants.TWO_INT,null,"获取公积金配置信息失败!");
return R.other(CommonConstants.THREE_INT,null,"获取公积金配置信息失败!");
}
}
//流程中的公积金数据不能修改
......@@ -854,8 +854,8 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
}
}*/
//更新合同签署状态
if (null != employeeRegistrationPre.getDispatchInfoPreVo()) {
employeeRegistrationPre.getDispatchInfoPreVo().setContractStatus(flag ? CommonConstants.ZERO_STRING : CommonConstants.ONE_STRING);
if (null != employeeRegistrationPre.getDispatchInfoFundPreVo()) {
employeeRegistrationPre.getDispatchInfoFundPreVo().setContractStatus(flag ? CommonConstants.ZERO_STRING : CommonConstants.ONE_STRING);
}
}
......
......@@ -783,7 +783,7 @@ public class Common {
}
/**
* 校验字符串是否符合格式 10,10;12,13
* 校验字符串是否符合格式 10,10;12,13 或 10.01,10;12,13
* @param str 待校验的字符串
* @return 符合格式返回true,否则返回false
*/
......@@ -794,12 +794,12 @@ public class Common {
}
// 使用正则表达式匹配格式
// 格式要求: 数字,数字;数字,数字;...
// 其中数字为一个或多个数字字符
return str.matches("\\d+,\\d+(;\\d+,\\d+)*");
// 格式要求: 数字(可带小数),数字(可带小数);数字(可带小数),数字(可带小数);...
// 其中数字为一个或多个数字字符,可能包含小数点
return str.matches("\\d+(\\.\\d+)?,\\d+(\\.\\d+)?(;\\d+(\\.\\d+)?,\\d+(\\.\\d+)?)*");
}
/**
* 校验字符串是否符合格式 2025-11
* 校验字符串是否符合格式 2025-11 或 2025/11 或202511
* @param str 待校验的字符串
* @return 符合格式返回true,否则返回false
*/
......@@ -808,6 +808,7 @@ public class Common {
if (str == null || str.isEmpty()) {
return false;
}
return str.matches("\\d{4}-\\d{2}");
// 支持三种格式:2025-11、2025/11、202511
return str.matches("\\d{4}[-/]\\d{1,2}") || str.matches("\\d{6}");
}
}
......@@ -680,11 +680,11 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if (Common.isNotNull(resR) && resR.getData() != null) {
SysBaseSetInfoVo setInfo = resR.getData();
if (preVo.getDispatchInfoFundPreVo().getProvidentCardinal().compareTo(setInfo.getLowerLimit()) < 0) {
return R.other(CommonConstants.TWO_INT,null,"公积金基数需≥当前户("+setInfo.getDepartName()+")的最低基数:"+setInfo.getLowerLimit()+"!");
return R.other(CommonConstants.THREE_INT,null,"公积金基数需≥当前户("+setInfo.getDepartName()+")的最低基数:"+setInfo.getLowerLimit()+"!");
}
}else {
return R.other(CommonConstants.TWO_INT,null,"获取公积金配置信息失败!");
return R.other(CommonConstants.THREE_INT,null,"获取公积金配置信息失败!");
}
}
......@@ -792,12 +792,15 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if (Common.isNotNull(preVo.getIsAutoDis()) && CommonConstants.ZERO_STRING.equals(preVo.getIsAutoDis())
&& Common.isNotNull(preVo.getExpectedCollectionType())) {
TEmployeeContractDateVo vo = new TEmployeeContractDateVo();
//如果公积金起缴日期为空需要初始化--只有批量确认时才会走到这里
initFundStartDate(registration, preVo);
//接收方式 0项目配置 1自定义
if (CommonConstants.ONE_STRING.equals(preVo.getReceiveType())){
vo.setMonthAfter(CommonConstants.ZERO_INT);
vo.setYearAfter(0);
vo.setRegistDate(preVo.getSocialStartDate());
vo.setRegistDate(preVo.getFundStartDate());
}else {
if (null == preVo.getFundStartDate()){
//先计算起缴日期
if (CommonConstants.ZERO_STRING.equals(preVo.getFundDateType())){
//用户选择起缴日期类型为入职日期,以入职日期为基准
......@@ -815,6 +818,12 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
vo.setYearAfter(0);
vo.setRegistDate(preVo.getFundStartDate());
}
}else {
vo.setMonthAfter(CommonConstants.ZERO_INT);
vo.setYearAfter(0);
vo.setRegistDate(preVo.getFundStartDate());
}
}
Date date = this.addYearsMonths(vo);
TEmployeeInsuranceWorkDayVo dayVo = new TEmployeeInsuranceWorkDayVo();
......@@ -843,6 +852,39 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
}
private void initFundStartDate(EmployeeRegistration registration, TDispatchInfoPreVo preVo) {
if (null == preVo.getFundStartDate()) {
TEmployeeContractDateVo initDate = new TEmployeeContractDateVo();
//先计算起缴日期 接收方式 0项目配置 自定义必须填写起缴日期
if (CommonConstants.ZERO_STRING.equals(preVo.getFundDateType())){
//用户选择起缴日期类型为入职日期,以入职日期为基准
initDate.setMonthAfter(CommonConstants.ZERO_INT);
initDate.setYearAfter(0);
initDate.setRegistDate(registration.getJoinLeaveDate());
}else if (CommonConstants.ONE_STRING.equals(preVo.getFundDateType())){
//用户选择起缴日期类型为入职满一年次月,以入职日期为基准 加上年月调整
initDate.setMonthAfter(CommonConstants.ONE_INT);
initDate.setYearAfter(CommonConstants.ONE_INT);
initDate.setRegistDate(registration.getJoinLeaveDate());
}else if (CommonConstants.TWO_STRING.equals(preVo.getFundDateType())){
//用户自定义取值用户填写的起缴日期为基准
initDate.setMonthAfter(CommonConstants.ZERO_INT);
initDate.setYearAfter(0);
initDate.setRegistDate(preVo.getFundStartDate());
}
Date date = this.addYearsMonths(initDate);
TEmployeeInsuranceWorkDayVo dayVo = new TEmployeeInsuranceWorkDayVo();
dayVo.setType(CommonConstants.TWO_STRING);
dayVo.setRegistDate(date);
dayVo.setRegistType(0);
R<TEmployeeInsuranceWorkDayVo> dataR = socialDaprUtils.getContractAfterWorkDay(dayVo);
if (Common.isNotNull(dataR) && Common.isNotNull(dataR.getData())
&& Common.isNotNull(dataR.getData().getRegistDate())) {
preVo.setFundStartDate(dataR.getData().getRegistDate());
}
}
}
/**
* 初始化合同预信息
* 该方法用于将员工注册信息转换并填充到合同预信息对象中,以便后续的合同签订流程使用
......@@ -1220,7 +1262,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
}
//服务类型包含公积金购买时
if (preVo.getServerItem().contains("公积金") && (null != preVo.getExitFundInfoList()
|| null != preVo.getDispatchInfoPreVo())) {
|| null != preVo.getDispatchInfoFundPreVo())) {
if (null != preVo.getExitFundInfoList() && !preVo.getExitFundInfoList().isEmpty()) {
preVo.getExitFundInfoList().forEach(fundPreDetailVo -> fundPreDetailVo.setRegisterId(domainR.getData()));
}
......
......@@ -657,4 +657,13 @@ public class TDispatchInfoPre extends BaseEntity {
@ExcelProperty("起缴日期:0 入职日期")
private String fundDateType;
/**
* 公积金户ID
*/
@ExcelAttribute(name = "公积金户ID", maxLength = 50)
@Length(max = 50, message = "公积金户ID不能超过50个字符")
@ExcelProperty("公积金户ID")
@Schema(description = "公积金户ID")
private String configHouseId;
}
......@@ -74,4 +74,14 @@ public class TSocialAutoLog extends BaseEntity {
@Schema(description = "异常原因说明")
private String errorInfo;
/**
* 类型 0 社保 1 公积金
*/
@ExcelAttribute(name = "类型", maxLength = 200)
@Length(max = 200, message = "类型")
@ExcelProperty("类型")
@Schema(description = "类型")
private String type;
}
......@@ -12,6 +12,7 @@ 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 org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.math.BigDecimal;
......@@ -147,7 +148,7 @@ public class SysBaseSetFundInsertVo extends RowIndex implements Serializable {
/**
* 补缴政策
*/
@ExcelAttribute(name = "补缴政策",maxLength = 200)
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
......
......@@ -7,6 +7,7 @@ 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 org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.math.BigDecimal;
......@@ -239,7 +240,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位医疗缴纳比例
*/
@ExcelAttribute(name = "单位医疗比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位医疗比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位医疗比例")
......@@ -248,7 +249,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 个人医疗比例
*/
@ExcelAttribute(name = "个人医疗比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "个人医疗比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "个人医疗比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人医疗比例")
......@@ -257,7 +258,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位生育缴纳比例
*/
@ExcelAttribute(name = "单位生育比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位生育比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位生育比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位生育比例")
......@@ -266,7 +267,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位养老缴纳比例
*/
@ExcelAttribute(name = "单位养老比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位养老比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位养老比例")
......@@ -275,7 +276,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 个人养老比例
*/
@ExcelAttribute(name = "个人养老比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "个人养老比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "个人养老比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人养老比例")
......@@ -285,7 +286,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位工伤缴纳比例
*/
@ExcelAttribute(name = "单位工伤比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位工伤比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位工伤比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位工伤比例")
......@@ -294,7 +295,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位失业缴纳比例
*/
@ExcelAttribute(name = "单位失业比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位失业比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位失业比例")
......@@ -303,7 +304,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 个人失业比例
*/
@ExcelAttribute(name = "个人失业比例", isNotEmpty = true,isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "个人失业比例", isNotEmpty = true,isFloat = true,max = "99.99",min = 0)
@Schema(description = "个人失业比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人失业比例")
......@@ -312,7 +313,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 单位大病比例
*/
@ExcelAttribute(name = "单位大病比例",isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "单位大病比例",isFloat = true,max = "99.99",min = 0)
@Schema(description = "单位大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位大病比例")
......@@ -321,7 +322,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 个人大病比例
*/
@ExcelAttribute(name = "个人大病比例",isFloat = true,max = "100",min = 0)
@ExcelAttribute(name = "个人大病比例",isFloat = true,max = "99.99",min = 0)
@Schema(description = "个人大病比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病比例")
......@@ -375,7 +376,7 @@ public class SysBaseSetSocialInsertVo extends RowIndex implements Serializable {
/**
* 补缴政策
*/
@ExcelAttribute(name = "补缴政策",maxLength = 200)
@ExcelAttribute(name = "补缴政策")
@Schema(description = "补缴政策")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("补缴政策")
......
......@@ -2,6 +2,8 @@ package com.yifu.cloud.plus.v1.yifu.social.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAutoLog;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialAutoLogService;
......@@ -39,6 +41,10 @@ public class TSocialAutoLogController {
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TSocialAutoLog>> getTSocialAutoLogPage(Page<TSocialAutoLog> page, TSocialAutoLog tSocialAutoLog) {
if (null != tSocialAutoLog && Common.isEmpty(tSocialAutoLog.getType())){
// 0 社保 1 公积金
tSocialAutoLog.setType(CommonConstants.ZERO_STRING);
}
return new R<>(tSocialAutoLogService.getTSocialAutoLogPage(page,tSocialAutoLog));
}
......
......@@ -361,8 +361,9 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
if (CommonConstants.ONE_STRING.equals(preVo.getReceiveType())){
vo.setMonthAfter(CommonConstants.ZERO_INT);
vo.setYearAfter(0);
vo.setRegistDate(preVo.getSocialStartDate());
vo.setRegistDate(preVo.getFundStartDate());
}else {
if (null == preVo.getFundDateType()){
//先计算起缴日期
if (CommonConstants.ZERO_STRING.equals(preVo.getFundDateType())){
//用户选择起缴日期类型为入职日期,以入职日期为基准
......@@ -380,6 +381,12 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
vo.setYearAfter(0);
vo.setRegistDate(preVo.getFundStartDate());
}
}else {
vo.setMonthAfter(CommonConstants.ZERO_INT);
vo.setYearAfter(0);
vo.setRegistDate(preVo.getFundStartDate());
}
}
Date date = this.addYearsMonths(vo);
TEmployeeInsuranceWorkDayVo dayVo = new TEmployeeInsuranceWorkDayVo();
......@@ -527,7 +534,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
@Override
public void deleteUnProcessFundPreInfo(String id) {
//删除未处理的社保待购买信息
//删除未处理的公积金待购买信息
this.remove(Wrappers.<TDispatchInfoPre>query().lambda()
.eq(TDispatchInfoPre::getTypeSub,CommonConstants.ONE_STRING)
.in(TDispatchInfoPre::getProcessStatus, Arrays.asList("0", "1", "2", "4","8"))
......@@ -608,6 +615,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
socialAutoLog.setEmpName(contractVO.getEmpName());
socialAutoLog.setEmpIdcard(contractVO.getEmpIdcard());
socialAutoLog.setErrorInfo(errorMessage.getMessage());
socialAutoLog.setType(CommonConstants.ZERO_STRING);
socialAutoLogService.save(socialAutoLog);
}
}
......@@ -896,6 +904,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
socialAutoLog.setEmpName(contractVO.getEmpName());
socialAutoLog.setEmpIdcard(contractVO.getEmpIdcard());
socialAutoLog.setErrorInfo(errorMessage.getMessage());
socialAutoLog.setType(CommonConstants.ONE_STRING);
socialAutoLogService.save(socialAutoLog);
}
}
......
......@@ -87,6 +87,7 @@
<result property="unitProvidentPer" column="UNIT_PROVIDENT_PER"/>
<result property="personalProvidentPer" column="PERSONAL_PROVIDENT_PER"/>
<result property="configHouseId" column="CONFIG_HOUSE_ID"/>
</resultMap>
......@@ -188,7 +189,8 @@
a.LOWER_BIG,
a.PROVIDENT_CARDINAL,
a.UNIT_PROVIDENT_PER,
a.PERSONAL_PROVIDENT_PER
a.PERSONAL_PROVIDENT_PER,
a.CONFIG_HOUSE_ID
</sql>
<sql id="tDispatchInfoPre_other_where">
<if test="tDispatchInfoPre != null">
......@@ -569,6 +571,7 @@
a.expected_collection_time is not null
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
and a.process_status = '0'
group by a.customer_user_login_name
</select>
<select id="getAllUnDisDataIdList" resultType="java.lang.String">
......
......@@ -18,6 +18,7 @@
<result property="updateTime" column="UPDATE_TIME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="socialId" column="SOCIAL_ID"/>
<result property="type" column="TYPE"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -30,10 +31,13 @@
a.UPDATE_BY,
a.CREATE_NAME,
a.UPDATE_TIME,
a.CREATE_TIME,a.SOCIAL_ID
a.CREATE_TIME,a.SOCIAL_ID,a.TYPE
</sql>
<sql id="tSocialAutoLog_where">
<if test="tSocialAutoLog != null">
<if test="tSocialAutoLog.type != null and tSocialAutoLog.type.trim() != ''">
AND a.TYPE = #{tSocialAutoLog.type}
</if>
<if test="tSocialAutoLog.id != null and tSocialAutoLog.id.trim() != ''">
AND a.ID = #{tSocialAutoLog.id}
</if>
......
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