Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangxinjiang
yifu-mvp
Commits
04955658
Commit
04955658
authored
Dec 12, 2025
by
fangxinjiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
社保公积金自动化定时任务+社保公积金起缴日期+户截止日配置-fxj
parent
7ba27a0c
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
550 additions
and
184 deletions
+550
-184
TAutoFundRuleInfo.java
...cloud/plus/v1/yifu/archives/entity/TAutoFundRuleInfo.java
+1
-1
TAutoFundRuleRel.java
.../cloud/plus/v1/yifu/archives/entity/TAutoFundRuleRel.java
+4
-2
TAutoSocialRuleInfo.java
...oud/plus/v1/yifu/archives/entity/TAutoSocialRuleInfo.java
+2
-2
TAutoSocialRuleRel.java
...loud/plus/v1/yifu/archives/entity/TAutoSocialRuleRel.java
+7
-5
TDispatchInfoPreVo.java
...fu/cloud/plus/v1/yifu/archives/vo/TDispatchInfoPreVo.java
+13
-2
TEmployeePreLogServiceImpl.java
...ifu/archives/service/impl/TEmployeePreLogServiceImpl.java
+23
-2
DateUtil.java
...om/yifu/cloud/plus/v1/yifu/common/core/util/DateUtil.java
+46
-0
BaseSearchVO.java
.../yifu/cloud/plus/v1/yifu/common/core/vo/BaseSearchVO.java
+4
-0
SocialDaprUtils.java
.../cloud/plus/v1/yifu/common/dapr/util/SocialDaprUtils.java
+15
-0
EmployeeRegistrationServiceImpl.java
.../v1/csp/service/impl/EmployeeRegistrationServiceImpl.java
+145
-112
TEmployeeInsurancePreController.java
...nsurances/controller/TEmployeeInsurancePreController.java
+1
-1
TDispatchInfoPre.java
...fu/cloud/plus/v1/yifu/social/entity/TDispatchInfoPre.java
+12
-1
THouseHoldLimitInnerVo.java
.../cloud/plus/v1/yifu/social/vo/THouseHoldLimitInnerVo.java
+65
-0
TDispatchInfoPreController.java
...v1/yifu/social/controller/TDispatchInfoPreController.java
+2
-2
THouseHoldLimitController.java
.../v1/yifu/social/controller/THouseHoldLimitController.java
+29
-0
THouseHoldLimitService.java
...d/plus/v1/yifu/social/service/THouseHoldLimitService.java
+5
-0
TDispatchInfoPreServiceImpl.java
...yifu/social/service/impl/TDispatchInfoPreServiceImpl.java
+117
-47
THouseHoldLimitServiceImpl.java
.../yifu/social/service/impl/THouseHoldLimitServiceImpl.java
+59
-7
No files found.
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TAutoFundRuleInfo.java
View file @
04955658
...
...
@@ -68,7 +68,7 @@ public class TAutoFundRuleInfo extends BaseEntity {
@Schema
(
description
=
"是否自动触发派增(字典:0自动触发派增,1:手动派增)"
)
private
String
autoFlag
;
/**
* 派单发起时间(字典:0:起缴日期当日)
* 派单发起时间(字典:0:起缴日期当日)
新:0:按起缴日期计算得出
*/
@ExcelAttribute
(
name
=
"派单发起时间"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"派单发起时间不能超过2个字符"
)
...
...
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TAutoFundRuleRel.java
View file @
04955658
...
...
@@ -93,12 +93,14 @@ public class TAutoFundRuleRel extends BaseEntity {
@Schema
(
description
=
"公积金单位个人比例是否一致(0-是,1-否)"
)
private
String
fundPerFlag
;
/**
* 起缴日期类型:0 入职日期 1 入职满1年次月 2 人员自定义
* 起缴日期类型:0 入职日期 1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月
* * 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期 1 入职满1年次月 2 人员自定义
*/
@ExcelAttribute
(
name
=
"起缴日期类型"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期类型不能超过2个字符"
)
@ExcelProperty
(
"起缴日期类型"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期
1 入职满1年次月 2 人员自定义
"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期
1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
"
)
private
String
fundDateType
;
/**
* 缴纳基数类型:0最低、1自定义、2最高、3固定基数
...
...
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TAutoSocialRuleInfo.java
View file @
04955658
...
...
@@ -67,12 +67,12 @@ public class TAutoSocialRuleInfo extends BaseEntity {
@Schema
(
description
=
"是否自动触发派增(字典:0自动触发派增,1:手动派增)"
)
private
String
autoFlag
;
/**
* 派单发起时间(字典::0:入职满1个月...入职满6个月)
* 派单发起时间(字典::0:入职满1个月...入职满6个月)
新:6:按起缴日期计算得出
*/
@ExcelAttribute
(
name
=
"派单发起时间"
,
maxLength
=
2
,
isNotEmpty
=
false
,
errorInfo
=
"派单发起时间不能为空"
)
@Length
(
max
=
2
,
message
=
"派单发起时间不能超过2个字符"
)
@ExcelProperty
(
"派单发起时间"
)
@Schema
(
description
=
"派单发起时间(字典::0:入职满1个月...入职满6个月)"
)
@Schema
(
description
=
"派单发起时间(字典::0:入职满1个月...入职满6个月
6:按起缴日期计算得出
)"
)
private
String
startPeriod
;
/**
* 派单发起具体时间字典:0:15:20
...
...
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TAutoSocialRuleRel.java
View file @
04955658
...
...
@@ -94,12 +94,14 @@ public class TAutoSocialRuleRel extends BaseEntity {
@Schema
(
description
=
"社保起缴日期是否一致(0-是,1-否)"
)
private
String
socialDateFlag
;
/**
* 起缴日期:0 入职日期
* 起缴日期类型:0 入职日期 1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月
* 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期
*/
@ExcelAttribute
(
name
=
"起缴日期"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期不能超过2个字符"
)
@ExcelProperty
(
"起缴日期"
)
@Schema
(
description
=
"起缴日期
:0 入职日期
"
)
@ExcelAttribute
(
name
=
"起缴日期
类型
"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期
类型
不能超过2个字符"
)
@ExcelProperty
(
"起缴日期
类型
"
)
@Schema
(
description
=
"起缴日期
类型:0 入职日期 1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
"
)
private
String
socialDateType
;
/**
* 缴纳类型:0最低、1自定义、2最高
...
...
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/vo/TDispatchInfoPreVo.java
View file @
04955658
...
...
@@ -270,14 +270,25 @@ public class TDispatchInfoPreVo extends RowIndex implements Serializable {
private
String
registerId
;
/**
* 起缴日期类型:0 入职日期 1 入职满1年次月 2 人员自定义
* 起缴日期类型:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期 1 入职满1年次月 2 人员自定义
*/
@ExcelAttribute
(
name
=
"起缴日期类型"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期类型不能超过2个字符"
)
@ExcelProperty
(
"起缴日期类型"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期 1 入职满1
年次月 2 人员自定义
"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期 1 入职满1
个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
"
)
private
String
fundDateType
;
/**
* 起缴日期类型:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期 1 入职满1年次月 2 人员自定义
*/
@ExcelAttribute
(
name
=
"起缴日期类型"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期类型不能超过2个字符"
)
@ExcelProperty
(
"起缴日期类型"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月"
)
private
String
socialDateType
;
/**
* 公积金单位个人比例是否一致(0-是,1-否)
*/
...
...
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/service/impl/TEmployeePreLogServiceImpl.java
View file @
04955658
...
...
@@ -1090,9 +1090,30 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
preVo
.
setTypeSub
(
CommonConstants
.
ZERO_STRING
);
preVo
.
setProcessStatus
(
CommonConstants
.
ZERO_STRING
);
preVo
.
setDispatchItem
(
"养老、医疗、生育、失业、工伤、大病"
);
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsCreateDate
())
&&
Common
.
isEmpty
(
preVo
.
getSocialStartDate
()))
{
preVo
.
setSocialStartDate
(
pre
.
getJoinLeaveDate
());
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsCreateDate
()))
{
//原社保起缴日期类型为 0 入职日期 新:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月
// 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
if
(
Common
.
isEmpty
(
preVo
.
getSocialStartDate
()))
{
if
(
Common
.
isNotNull
(
preVo
.
getSocialDateType
())){
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
vo
.
setMonthAfter
(
Integer
.
parseInt
(
preVo
.
getSocialDateType
()));
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
pre
.
getJoinLeaveDate
());
Date
date
=
this
.
addYearsMonths
(
vo
);
preVo
.
setSocialStartDate
(
date
);
}
else
{
preVo
.
setSocialStartDate
(
pre
.
getJoinLeaveDate
());
}
}
preVo
.
setBigailmentStart
(
preVo
.
getSocialStartDate
());
preVo
.
setPensionStart
(
preVo
.
getSocialStartDate
());
preVo
.
setMedicalStart
(
preVo
.
getSocialStartDate
());
preVo
.
setBirthStart
(
preVo
.
getSocialStartDate
());
preVo
.
setWorkInjuryStart
(
preVo
.
getSocialStartDate
());
preVo
.
setUnemployStart
(
preVo
.
getSocialStartDate
());
preVo
.
setSocialStartDate
(
preVo
.
getSocialStartDate
());
}
}
//公积金待购买数据初始化
...
...
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/util/DateUtil.java
View file @
04955658
...
...
@@ -1892,6 +1892,38 @@ public class DateUtil {
}
}
/**
* 设置日期中的天
*
* @param date 原始日期
* @param day 要设置的天数
* @return 修改后的日期
*/
public
static
Date
setDayByDate
(
Date
date
,
int
day
)
{
Calendar
cal
=
Calendar
.
getInstance
();
if
(
date
!=
null
)
{
cal
.
setTime
(
date
);
}
else
{
log
.
warn
(
"Input date is null, will use current date"
);
return
null
;
}
// 对day参数进行基本的有效性检查
if
(
day
<
1
||
day
>
31
)
{
log
.
warn
(
"Day must be between 1 and 31, but found: "
+
day
);
return
null
;
}
// 如果day大于当月最大天数,则将day设置为当月最大天数,如2月为28日,但是day为31,则将day设置为当月最大天数28
int
maxDayOfMonth
=
cal
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
);
if
(
day
>
maxDayOfMonth
)
{
day
=
maxDayOfMonth
;
}
cal
.
set
(
Calendar
.
DAY_OF_MONTH
,
day
);
return
cal
.
getTime
();
}
public
static
boolean
isDate
(
String
dateText
)
{
if
(
dateText
==
null
)
{
return
true
;
...
...
@@ -1937,4 +1969,18 @@ public class DateUtil {
}
return
false
;
}
/**
* @Author fxj
* @Description 判断 日期 date 是否在 registDate 之后,在返回true,否则返回false
* @Date 15:10 2025/12/12
* @Param
* @return
**/
public
static
boolean
isAfter
(
Date
date
,
Date
registDate
)
{
if
(
date
.
getTime
()
>
registDate
.
getTime
())
{
return
true
;
}
return
false
;
}
}
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/vo/BaseSearchVO.java
View file @
04955658
...
...
@@ -58,4 +58,8 @@ public class BaseSearchVO implements Serializable {
private
String
resultIdFour
;
private
String
resultIdFourStatus
;
private
String
name
;
private
String
type
;
}
yifu-common/yifu-common-dapr/src/main/java/com/yifu/cloud/plus/v1/yifu/common/dapr/util/SocialDaprUtils.java
View file @
04955658
...
...
@@ -432,4 +432,19 @@ public class SocialDaprUtils {
return
res
;
}
/**
* @Author fxj
* @Description 通过户名称及类型 获取到截止日,然后看是否为工作日,如果不是工作日则往前推,知道找到工作日,然后返回工作日
* @Date 14:22 2025/12/12
* @Param
* @return
**/
public
R
<
THouseHoldLimitInnerVo
>
getWorkDayByDeadLineDay
(
BaseSearchVO
paramVo
)
{
R
<
THouseHoldLimitInnerVo
>
res
=
HttpDaprUtil
.
invokeMethodPost
(
daprProperties
.
getAppUrl
(),
daprProperties
.
getAppId
()
,
"/thouseholdlimit/inner/checkCanBeHandleByDeadLineDay"
,
paramVo
,
THouseHoldLimitInnerVo
.
class
,
SecurityConstants
.
FROM_IN
);
if
(
Common
.
isEmpty
(
res
)){
return
R
.
failed
(
"查询截止日对应的工作日信息失败!"
);
}
return
res
;
}
}
yifu-csp/yifu-csp-biz/src/main/java/com/yifu/cloud/plus/v1/csp/service/impl/EmployeeRegistrationServiceImpl.java
View file @
04955658
...
...
@@ -35,6 +35,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprArchivesProperties
;
...
...
@@ -47,6 +48,7 @@ import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreVo;
import
com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsuranceSelectVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.SysBaseSetInfoVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.TEmployeeInsuranceWorkDayVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitInnerVo
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.log4j.Log4j2
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -63,6 +65,7 @@ import java.net.URLEncoder;
import
java.text.ParseException
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.ZoneId
;
import
java.util.*
;
import
java.util.regex.Matcher
;
...
...
@@ -774,7 +777,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
return
R
.
ok
();
}
private
void
initFundPreInfo
(
EmployeeRegistration
registration
,
TDispatchInfoPreVo
preVo
,
YifuUser
user
,
String
id
)
{
private
void
initFundPreInfo
(
EmployeeRegistration
registration
,
TDispatchInfoPreVo
preVo
,
YifuUser
user
,
String
id
)
throws
ParseException
{
preVo
.
setRegisterId
(
id
);
preVo
.
setCustomerUsername
(
registration
.
getCustomerUsernameNew
());
preVo
.
setCustomerUserLoginName
(
null
!=
registration
.
getCustomerUserLoginNameNew
()
...
...
@@ -794,97 +797,131 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo
.
setProcessStatus
(
CommonConstants
.
ZERO_STRING
);
preVo
.
setDispatchItem
(
"公积金"
);
//如果公积金起缴日期为空需要初始化--只有批量确认时才会走到这里
initFundStartDate
(
registration
,
preVo
);
initFundStartDate
(
preVo
);
//如果自动触发派增为是,计算派单发起时间和派单确认时间
if
(
Common
.
isNotNull
(
preVo
.
getIsAutoDis
())
&&
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsAutoDis
())
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
()))
{
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
//接收方式 0项目配置 1自定义
if
(
CommonConstants
.
ONE_STRING
.
equals
(
preVo
.
getReceiveType
())){
vo
.
setMonthAfter
(
CommonConstants
.
ZERO_INT
);
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
preVo
.
getFundStartDate
());
}
else
{
if
(
null
==
preVo
.
getFundStartDate
()){
//先计算起缴日期
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getFundDateType
())){
//用户选择起缴日期类型为入职日期,以入职日期为基准
vo
.
setMonthAfter
(
CommonConstants
.
ZERO_INT
);
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
registration
.
getJoinLeaveDate
());
}
else
if
(
CommonConstants
.
ONE_STRING
.
equals
(
preVo
.
getFundDateType
())){
//用户选择起缴日期类型为入职满一年次月,以入职日期为基准 加上年月调整
vo
.
setMonthAfter
(
CommonConstants
.
ONE_INT
);
vo
.
setYearAfter
(
CommonConstants
.
ONE_INT
);
vo
.
setRegistDate
(
registration
.
getJoinLeaveDate
());
}
else
if
(
CommonConstants
.
TWO_STRING
.
equals
(
preVo
.
getFundDateType
())){
//用户自定义取值用户填写的起缴日期为基准
vo
.
setMonthAfter
(
CommonConstants
.
ZERO_INT
);
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
preVo
.
getFundStartDate
());
}
}
else
{
vo
.
setMonthAfter
(
CommonConstants
.
ZERO_INT
);
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
preVo
.
getFundStartDate
());
}
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
())
&&
null
==
preVo
.
getExpectedCollectionTime
()
&&
null
==
preVo
.
getExpectedConfirmTime
())
{
initExpectedCollectionTime
(
preVo
.
getProvidentHouseholdName
(),
preVo
.
getFundStartDate
(),
preVo
);
}
}
Date
date
=
this
.
addYearsMonths
(
vo
);
if
(
CommonConstants
.
ONE_STRING
.
equals
(
preVo
.
getFundDateType
())){
date
=
DateUtil
.
getFirstDay
(
date
);
}
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
.
setExpectedCollectionTime
(
dataR
.
getData
().
getRegistDate
());
preVo
.
setExpectedConfirmTime
(
dataR
.
getData
().
getRegistDate
());
}
/**
* @Author fxj
* @Description 初始化预计派单发起时间、预计派单确认时间
* @Date 17:06 2025/12/12
**/
private
void
initExpectedCollectionTime
(
String
houseName
,
Date
startDate
,
TDispatchInfoPreVo
preVo2
)
throws
ParseException
{
//获取当前月是否可办理状态:获取办理截止日往前最近的工昨日,当前日及截止日前(含截止日)有工作日就是可办理
BaseSearchVO
paramVo
=
new
BaseSearchVO
();
paramVo
.
setName
(
houseName
);
paramVo
.
setType
(
CommonConstants
.
ZERO_STRING
);
THouseHoldLimitInnerVo
innerVo
=
null
;
R
<
THouseHoldLimitInnerVo
>
resultR
=
socialDaprUtils
.
getWorkDayByDeadLineDay
(
paramVo
);
if
(!
Common
.
isNotNull
(
resultR
)
&&
!
Common
.
isNotNull
(
resultR
.
getData
())){
throw
new
RuntimeException
(
"获取截止日信息失败"
);
}
else
{
innerVo
=
resultR
.
getData
();
}
boolean
canBeHandle
=
innerVo
.
getCanBeHandle
();
LocalTime
currentTime
=
LocalTime
.
now
();
LocalTime
thresholdTime
=
LocalTime
.
of
(
15
,
20
);
boolean
isBeforeThreshold
=
currentTime
.
isBefore
(
thresholdTime
)
||
currentTime
.
equals
(
thresholdTime
);
// 时间格式常量
String
collectionTimeFormat
=
" 15:20"
;
String
confirmTimeFormat
=
" 09:00"
;
//获取次月1号日期
Date
nextMonthFirstDay
=
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
);
nextMonthFirstDay
=
DateUtil
.
setDayByDate
(
nextMonthFirstDay
,
1
);
//获取起缴月份1号
Date
startDateFirstDay
=
DateUtil
.
addDayByDate
(
startDate
,
0
);
startDateFirstDay
=
DateUtil
.
setDayByDate
(
startDateFirstDay
,
1
);
//获取起缴月-1日期
Date
startDatePrevMonth
=
DateUtil
.
addMonthByDate
(
startDateFirstDay
,
-
1
);
//获取次日
Date
tomorrow
=
DateUtil
.
getDateByDayNum
(
1
);
//1.起缴月份为当月及之前的月份
if
(!
DateUtil
.
isAfter
(
startDate
,
DateUtil
.
getDateByDayNum
(
0
))){
if
(
canBeHandle
){
//发起时间不看工作日
if
(
isBeforeThreshold
)
{
Date
today
=
new
Date
();
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
{
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
tomorrow
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
tomorrow
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
else
{
preVo
.
setExpectedCollectionTime
(
date
);
preVo
.
setExpectedConfirmTime
(
date
);
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
try
{
preVo
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 15:20"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 09:00"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
catch
(
ParseException
e
)
{
log
.
error
(
"初始化预计派单日期异常!"
,
e
);
throw
new
RuntimeException
(
"初始化预计派单日期异常!"
+
e
.
getMessage
());
}
//2.起缴月份为次月
else
if
(
preVo2
.
getSocialStartDate
().
getTime
()
==
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
).
getTime
()){
//当月办次月生效
if
(
CommonConstants
.
ONE_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
if
(
canBeHandle
&&
isBeforeThreshold
){
Date
today
=
new
Date
();
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
{
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
//当月办当月生效
}
else
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
//3.起缴月份为次月之后的月份
else
if
(
preVo2
.
getSocialStartDate
().
getTime
()
>
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
).
getTime
()){
//当月办次月生效
if
(
CommonConstants
.
ONE_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDatePrevMonth
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDatePrevMonth
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDateFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDateFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
}
private
void
initFundStartDate
(
EmployeeRegistration
registration
,
TDispatchInfoPreVo
preVo
)
{
private
void
initFundStartDate
(
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
());
}
//0 入职日期 1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月
//8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
initDate
.
setMonthAfter
(
Integer
.
parseInt
(
preVo
.
getFundDateType
()));
initDate
.
setYearAfter
(
0
);
initDate
.
setRegistDate
(
preVo
.
getJoinLeaveDate
());
Date
date
=
this
.
addYearsMonths
(
initDate
);
if
(
CommonConstants
.
ONE_STRING
.
equals
(
preVo
.
getFundDateType
())){
date
=
DateUtil
.
getFirstDay
(
date
);
}
preVo
.
setFundStartDate
(
date
);
}
}
...
...
@@ -2030,40 +2067,36 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo
.
setProcessStatus
(
CommonConstants
.
ZERO_STRING
);
preVo
.
setDispatchItem
(
"养老、医疗、生育、失业、工伤、大病"
);
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsCreateDate
())
&&
Common
.
isEmpty
(
preVo
.
getSocialStartDate
()))
{
preVo
.
setBigailmentStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setPensionStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setMedicalStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setBirthStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setWorkInjuryStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setUnemployStart
(
registration
.
getJoinLeaveDate
());
preVo
.
setSocialStartDate
(
registration
.
getJoinLeaveDate
());
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间
if
(
Common
.
isNotNull
(
preVo
.
getIsAutoDis
())
&&
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsAutoDis
())
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
()))
{
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
vo
.
setMonthAfter
(
Integer
.
parseInt
(
preVo
.
getExpectedCollectionType
()));
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
registration
.
getJoinLeaveDate
());
Date
date
=
this
.
addYearsMonths
(
vo
);
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
.
setExpectedCollectionTime
(
dataR
.
getData
().
getRegistDate
());
preVo
.
setExpectedConfirmTime
(
dataR
.
getData
().
getRegistDate
());
}
else
{
preVo
.
setExpectedCollectionTime
(
date
);
preVo
.
setExpectedConfirmTime
(
date
);
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsCreateDate
()))
{
//原社保起缴日期类型为 0 入职日期 新:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月
// 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
if
(
Common
.
isEmpty
(
preVo
.
getSocialStartDate
()))
{
if
(
Common
.
isNotNull
(
preVo
.
getSocialDateType
())){
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
vo
.
setMonthAfter
(
Integer
.
parseInt
(
preVo
.
getSocialDateType
()));
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
registration
.
getJoinLeaveDate
());
Date
date
=
this
.
addYearsMonths
(
vo
);
preVo
.
setSocialStartDate
(
date
);
}
else
{
preVo
.
setSocialStartDate
(
registration
.
getJoinLeaveDate
());
}
}
preVo
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 15:20"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 09:00"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo
.
setBigailmentStart
(
preVo
.
getSocialStartDate
());
preVo
.
setPensionStart
(
preVo
.
getSocialStartDate
());
preVo
.
setMedicalStart
(
preVo
.
getSocialStartDate
());
preVo
.
setBirthStart
(
preVo
.
getSocialStartDate
());
preVo
.
setWorkInjuryStart
(
preVo
.
getSocialStartDate
());
preVo
.
setUnemployStart
(
preVo
.
getSocialStartDate
());
preVo
.
setSocialStartDate
(
preVo
.
getSocialStartDate
());
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间,因为前端可以修改,所以只有没有值的时候才后端结算
if
(
Common
.
isNotNull
(
preVo
.
getIsAutoDis
())
&&
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsAutoDis
())
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
())
&&
null
==
preVo
.
getExpectedCollectionTime
()
&&
null
==
preVo
.
getExpectedConfirmTime
())
{
//获取当前月是否可办理状态:获取办理截止日往前最近的工昨日,当前日及截止日前(含截止日)有工作日就是可办理
initExpectedCollectionTime
(
preVo
.
getSocialHouseholdName
(),
preVo
.
getSocialStartDate
(),
preVo
);
}
}
...
...
yifu-insurances/yifu-insurances-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/insurances/controller/TEmployeeInsurancePreController.java
View file @
04955658
...
...
@@ -255,7 +255,7 @@ public class TEmployeeInsurancePreController {
* @date 2025-04-11 10:46:12
* @return void
*/
@SysLog
(
"每天下午三点二十推送待派单数据"
)
@SysLog
(
"每天下午三点二十
或上午11点
推送待派单数据"
)
@Inner
@PostMapping
(
"/inner/pushDisConfrimInsurances"
)
public
void
pushDisConfrimInsurances
()
{
...
...
yifu-social/yifu-social-api/src/main/java/com/yifu/cloud/plus/v1/yifu/social/entity/TDispatchInfoPre.java
View file @
04955658
...
...
@@ -649,7 +649,8 @@ public class TDispatchInfoPre extends BaseEntity {
private
String
fundPerFlag
;
/**
* 起缴日期:0 入职日期
* 起缴日期类型:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期 1 入职满1年次月 2 人员自定义
*/
@Length
(
max
=
2
,
message
=
"起缴日期:0 入职日期 不能超过2 个字符"
)
@ExcelAttribute
(
name
=
"起缴日期:0 入职日期"
,
maxLength
=
2
)
...
...
@@ -666,4 +667,14 @@ public class TDispatchInfoPre extends BaseEntity {
@Schema
(
description
=
"公积金户ID"
)
private
String
configHouseId
;
/**
* 起缴日期类型:0 入职日期 1 入职满1个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月
* 原:0 入职日期
*/
@ExcelAttribute
(
name
=
"起缴日期类型"
,
maxLength
=
2
)
@Length
(
max
=
2
,
message
=
"起缴日期类型不能超过2个字符"
)
@ExcelProperty
(
"起缴日期类型"
)
@Schema
(
description
=
"起缴日期类型:0 入职日期 1 入职满个月 2 入职满2个月 3 入职满3个月 4 入职满4个月 5 入职满5个月 6 入职满6个月 7 入职满7个月 8 入职满8个月 9 入职满9个月 10 入职满10个月 11 入职满11个月 12 入职满12个月"
)
private
String
socialDateType
;
}
yifu-social/yifu-social-api/src/main/java/com/yifu/cloud/plus/v1/yifu/social/vo/THouseHoldLimitInnerVo.java
0 → 100644
View file @
04955658
/*
* 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
com.alibaba.excel.annotation.ExcelProperty
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 户截止日配置表
*
* @author fxj
* @date 2025-12-11 14:19:54
*/
@Data
public
class
THouseHoldLimitInnerVo
extends
RowIndex
implements
Serializable
{
/**
* 户名
*/
private
String
name
;
/**
* 户类型:0社保 1公积金
*/
private
String
type
;
/**
* 派增截止(日)
*/
private
String
deadLineDay
;
/**
* 派增办理规则:0当月办当月生效 1 当月办次月生效
*/
private
String
addHandleRule
;
/**
* date
*/
private
Date
wordDate
;
/**
* 是否可办理 true:可办理 false:不可办理
*/
private
Boolean
canBeHandle
;
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/controller/TDispatchInfoPreController.java
View file @
04955658
...
...
@@ -371,12 +371,12 @@ public class TDispatchInfoPreController {
}
/**
* 每天下午三点二十推送待购买数据 公积金可以通用
* 每天下午三点二十
或三点或上午11点
推送待购买数据 公积金可以通用
* @author huych
* @date 2025-10-11 18:51:58
* @return void
*/
@SysLog
(
"每天下午三点二十推送待购买数据"
)
@SysLog
(
"每天下午三点二十
或三点或上午11点
推送待购买数据"
)
@Inner
@PostMapping
(
"/inner/pushDisConfrimSocial"
)
public
void
pushDisConfrimSocial
()
{
...
...
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/controller/THouseHoldLimitController.java
View file @
04955658
...
...
@@ -24,11 +24,16 @@ 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.ErrorMessage
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog
;
import
com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner
;
import
com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils
;
import
com.yifu.cloud.plus.v1.yifu.social.entity.THouseHoldLimit
;
import
com.yifu.cloud.plus.v1.yifu.social.service.THouseHoldLimitService
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.TEmployeeInsuranceWorkDayVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitExportVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitInnerVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitSearchVo
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
...
...
@@ -85,6 +90,30 @@ public class THouseHoldLimitController {
public
R
<
THouseHoldLimit
>
getById
(
@PathVariable
(
"id"
)
String
id
)
{
return
R
.
ok
(
tHouseHoldLimitService
.
getById
(
id
));
}
/**
* 通过户名称及类型查询到具体截止日期后去看是否为工作日,如果不是工作日则往前推,知道找到工作日,然后返回工作日
* 如果找不到对应截止日期,则返回null
* @param paramVo:户名称 type: 0 社保、1 公积金
* @return R
*/
@Operation
(
summary
=
"户名称及类型查询可用的截止日期"
,
description
=
"通过户名称及类型查询到具体截止日期后去查询是否为工作日,如果不是工作日则往前推,直到找到工作日,然后返回工作日"
)
@PostMapping
(
"/getWorkDayByDeadLineDay"
)
public
R
<
THouseHoldLimitInnerVo
>
getWorkDayByDeadLineDay
(
@RequestBody
BaseSearchVO
paramVo
)
{
return
R
.
ok
(
tHouseHoldLimitService
.
getWorkDayByDeadLineDay
(
paramVo
));
}
/**
* 通过户名称及类型查询到具体截止日期后判断是否为工作日,如果不是工作往前推,直到找到工作日,
* 然后和当前日期进行比较,如果当前日期大于截止日期则返回false,否则返回true
* @param paramVo:name 户名称 type: 0 社保、1 公积金
* @return R
*/
@Inner
@Operation
(
summary
=
"户名称及类型查询可用的截止日期"
,
description
=
"通过户名称及类型查询到具体截止日期后去查询是否为工作日,如果不是工作日则往前推,直到找到工作日,然后返回工作日"
)
@PostMapping
(
"/inner/getWorkDayByDeadLineDay"
)
public
THouseHoldLimitInnerVo
getWorkDayByDeadLineDayInner
(
@RequestBody
BaseSearchVO
paramVo
)
{
return
tHouseHoldLimitService
.
getWorkDayByDeadLineDay
(
paramVo
);
}
/**
* 新增户截止日配置表
...
...
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/service/THouseHoldLimitService.java
View file @
04955658
...
...
@@ -22,8 +22,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.vo.BaseSearchVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.social.entity.THouseHoldLimit
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.TEmployeeInsuranceWorkDayVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitExportVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitInnerVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitSearchVo
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -49,4 +53,5 @@ public interface THouseHoldLimitService extends IService<THouseHoldLimit> {
void
listExport
(
HttpServletResponse
response
,
THouseHoldLimitSearchVo
searchVo
);
THouseHoldLimitInnerVo
getWorkDayByDeadLineDay
(
BaseSearchVO
paramVo
);
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/service/impl/TDispatchInfoPreServiceImpl.java
View file @
04955658
...
...
@@ -16,6 +16,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.util.ArchivesDaprUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils
;
...
...
@@ -38,7 +39,9 @@ import org.springframework.web.client.RestTemplate;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.net.URLEncoder
;
import
java.text.ParseException
;
import
java.time.LocalDate
;
import
java.time.LocalTime
;
import
java.time.ZoneId
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -74,6 +77,9 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
private
final
TSocialAutoLogService
socialAutoLogService
;
@Autowired
private
final
THouseHoldLimitService
houseHoldLimitService
;
/**
* 社保待购买表简单分页查询
* @param tDispatchInfoPre 社保待购买表
...
...
@@ -215,26 +221,8 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
socialPreDetailService
.
remove
(
Wrappers
.<
TSocialPreDetail
>
lambdaQuery
()
.
eq
(
TSocialPreDetail:
:
getRegisterId
,
preVo
.
getRegisterId
()));
try
{
// if (Common.isNotNull(preVo) && Common.isNotNull(preVo.getId())) {
// //更新逻辑
// TDispatchInfoPre pre = new TDispatchInfoPre();
// BeanUtils.copyProperties(preVo, pre);
// //时间格式转化
// if (Common.isNotNull(preVo.getExpectedCollectionTime())) {
// preVo.setExpectedCollectionTime(DateUtil.parseDate(DateUtil.dateToString(
// preVo.getExpectedCollectionTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT) + " 15:20", DateUtil.DATETIME_PATTERN_MINUTE));
// pre.setExpectedCollectionTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedCollectionTime()));
// }
// if (Common.isNotNull(preVo.getExpectedConfirmTime())) {
// preVo.setExpectedConfirmTime(DateUtil.parseDate(DateUtil.dateToString(
// preVo.getExpectedCollectionTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT) + " 09:00", DateUtil.DATETIME_PATTERN_MINUTE));
// pre.setExpectedConfirmTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedConfirmTime()));
// }
// baseMapper.updateById(pre);
// }
if
(
Common
.
isNotNull
(
preVo
)
// && Common.isEmpty(preVo.getId())
)
{
if
(
Common
.
isNotNull
(
preVo
))
{
//判断是否存在社保待购买信息
TDispatchInfoPre
preExit
=
baseMapper
.
selectOne
(
Wrappers
.<
TDispatchInfoPre
>
query
().
lambda
()
.
eq
(
TDispatchInfoPre:
:
getRegisterId
,
preVo
.
getRegisterId
())
...
...
@@ -260,30 +248,9 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间
if
(
Common
.
isNotNull
(
preVo
.
getIsAutoDis
())
&&
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsAutoDis
())
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
())
&&
Common
.
isEmpty
(
preVo
.
getExpectedCollectionTime
()))
{
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
vo
.
setMonthAfter
(
Integer
.
parseInt
(
preVo
.
getExpectedCollectionType
()));
vo
.
setYearAfter
(
0
);
vo
.
setRegistDate
(
preVo
.
getJoinLeaveDate
());
Date
date
=
this
.
addYearsMonths
(
vo
);
TEmployeeInsuranceWorkDayVo
dayVo
=
new
TEmployeeInsuranceWorkDayVo
();
dayVo
.
setType
(
CommonConstants
.
TWO_STRING
);
dayVo
.
setRegistDate
(
date
);
dayVo
.
setRegistType
(
0
);
TEmployeeInsuranceWorkDayVo
dataR
=
tHolidayInfoService
.
selectBeforeOrAfterWorkDayCommon
(
dayVo
);
if
(
Common
.
isNotNull
(
dataR
)
&&
Common
.
isNotNull
(
dataR
.
getPriDisDate
()))
{
preVo
.
setExpectedCollectionTime
(
dataR
.
getRegistDate
());
preVo
.
setExpectedConfirmTime
(
dataR
.
getRegistDate
());
}
else
{
preVo
.
setExpectedCollectionTime
(
date
);
preVo
.
setExpectedConfirmTime
(
date
);
}
preVo
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 15:20"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
preVo
.
getExpectedCollectionTime
(),
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
" 09:00"
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
pre
.
setExpectedCollectionTime
(
LocalDateTimeUtils
.
dateToLocalDateTime
(
preVo
.
getExpectedCollectionTime
()));
pre
.
setExpectedConfirmTime
(
LocalDateTimeUtils
.
dateToLocalDateTime
(
preVo
.
getExpectedConfirmTime
()));
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
())
&&
Common
.
isEmpty
(
preVo
.
getExpectedCollectionTime
()))
{
initExpectedCollectionTime
(
preVo
.
getSocialHouseholdName
(),
preVo
.
getSocialStartDate
(),
preVo
);
}
if
(
Common
.
isNotNull
(
preExit
))
{
pre
.
setId
(
preExit
.
getId
());
...
...
@@ -356,8 +323,10 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间
if
(
Common
.
isNotNull
(
preVo
.
getIsAutoDis
())
&&
CommonConstants
.
ZERO_STRING
.
equals
(
preVo
.
getIsAutoDis
())
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
()))
{
TEmployeeContractDateVo
vo
=
new
TEmployeeContractDateVo
();
&&
Common
.
isNotNull
(
preVo
.
getExpectedCollectionType
())
&&
Common
.
isEmpty
(
preVo
.
getExpectedCollectionTime
()))
{
initExpectedCollectionTime
(
preVo
.
getProvidentHouseholdName
(),
preVo
.
getFundStartDate
(),
preVo
);
/*TEmployeeContractDateVo vo = new TEmployeeContractDateVo();
//接收方式 0项目配置 1自定义
if (CommonConstants.ONE_STRING.equals(preVo.getReceiveType())){
vo.setMonthAfter(CommonConstants.ZERO_INT);
...
...
@@ -410,7 +379,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
preVo.setExpectedConfirmTime(DateUtil.parseDate(DateUtil.dateToString(
preVo.getExpectedCollectionTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT) + " 09:00", DateUtil.DATETIME_PATTERN_MINUTE));
pre.setExpectedCollectionTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedCollectionTime()));
pre
.
setExpectedConfirmTime
(
LocalDateTimeUtils
.
dateToLocalDateTime
(
preVo
.
getExpectedConfirmTime
()));
pre.setExpectedConfirmTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedConfirmTime()));
*/
}
if
(
Common
.
isNotNull
(
preExit
))
{
pre
.
setId
(
preExit
.
getId
());
...
...
@@ -1029,4 +998,105 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
}
return
false
;
}
/**
* @Author fxj
* @Description 初始化预计派单发起时间、预计派单确认时间
* @Date 17:06 2025/12/12
**/
private
void
initExpectedCollectionTime
(
String
houseName
,
Date
startDate
,
TDispatchInfoPreVo
preVo2
)
throws
ParseException
{
//获取当前月是否可办理状态:获取办理截止日往前最近的工昨日,当前日及截止日前(含截止日)有工作日就是可办理
BaseSearchVO
paramVo
=
new
BaseSearchVO
();
paramVo
.
setName
(
houseName
);
paramVo
.
setType
(
CommonConstants
.
ZERO_STRING
);
THouseHoldLimitInnerVo
innerVo
=
houseHoldLimitService
.
getWorkDayByDeadLineDay
(
paramVo
);
if
(
Common
.
isEmpty
(
innerVo
)){
throw
new
RuntimeException
(
"获取截止日信息失败"
);
}
boolean
canBeHandle
=
innerVo
.
getCanBeHandle
();
LocalTime
currentTime
=
LocalTime
.
now
();
LocalTime
thresholdTime
=
LocalTime
.
of
(
15
,
20
);
boolean
isBeforeThreshold
=
currentTime
.
isBefore
(
thresholdTime
)
||
currentTime
.
equals
(
thresholdTime
);
// 时间格式常量
String
collectionTimeFormat
=
" 15:20"
;
String
confirmTimeFormat
=
" 09:00"
;
//获取次月1号日期
Date
nextMonthFirstDay
=
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
);
nextMonthFirstDay
=
DateUtil
.
setDayByDate
(
nextMonthFirstDay
,
1
);
//获取起缴月份1号
Date
startDateFirstDay
=
DateUtil
.
addDayByDate
(
startDate
,
0
);
startDateFirstDay
=
DateUtil
.
setDayByDate
(
startDateFirstDay
,
1
);
//获取起缴月-1日期
Date
startDatePrevMonth
=
DateUtil
.
addMonthByDate
(
startDateFirstDay
,
-
1
);
//获取次日
Date
tomorrow
=
DateUtil
.
getDateByDayNum
(
1
);
//1.起缴月份为当月及之前的月份
if
(!
DateUtil
.
isAfter
(
startDate
,
DateUtil
.
getDateByDayNum
(
0
))){
if
(
canBeHandle
){
//发起时间不看工作日
if
(
isBeforeThreshold
)
{
Date
today
=
new
Date
();
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
{
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
tomorrow
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
tomorrow
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
else
{
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
//2.起缴月份为次月
else
if
(
preVo2
.
getSocialStartDate
().
getTime
()
==
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
).
getTime
()){
//当月办次月生效
if
(
CommonConstants
.
ONE_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
if
(
canBeHandle
&&
isBeforeThreshold
){
Date
today
=
new
Date
();
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
today
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
{
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
//当月办当月生效
}
else
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
nextMonthFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
//3.起缴月份为次月之后的月份
else
if
(
preVo2
.
getSocialStartDate
().
getTime
()
>
DateUtil
.
addMonthByDate
(
DateUtil
.
getDateByDayNum
(
0
),
1
).
getTime
()){
//当月办次月生效
if
(
CommonConstants
.
ONE_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDatePrevMonth
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDatePrevMonth
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
else
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
innerVo
.
getAddHandleRule
())){
preVo2
.
setExpectedCollectionTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDateFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
collectionTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
preVo2
.
setExpectedConfirmTime
(
DateUtil
.
parseDate
(
DateUtil
.
dateToString
(
startDateFirstDay
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
)
+
confirmTimeFormat
,
DateUtil
.
DATETIME_PATTERN_MINUTE
));
}
}
}
}
yifu-social/yifu-social-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/social/service/impl/THouseHoldLimitServiceImpl.java
View file @
04955658
...
...
@@ -16,8 +16,6 @@
*/
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
;
...
...
@@ -27,23 +25,21 @@ import com.alibaba.excel.read.listener.ReadListener;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.excel.util.ListUtils
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity
;
import
com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo
;
import
com.yifu.cloud.plus.v1.yifu.social.entity.THouseHoldLimit
;
import
com.yifu.cloud.plus.v1.yifu.social.mapper.SysHouseHoldInfoMapper
;
import
com.yifu.cloud.plus.v1.yifu.social.mapper.THouseHoldLimitMapper
;
import
com.yifu.cloud.plus.v1.yifu.social.service.THolidayInfoService
;
import
com.yifu.cloud.plus.v1.yifu.social.service.THouseHoldLimitService
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitExportVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitSearchVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.THouseHoldLimitVo
;
import
com.yifu.cloud.plus.v1.yifu.social.vo.*
;
import
lombok.extern.log4j.Log4j2
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -54,6 +50,7 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.net.URLEncoder
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.util.*
;
/**
...
...
@@ -68,6 +65,8 @@ public class THouseHoldLimitServiceImpl extends ServiceImpl<THouseHoldLimitMappe
@Autowired
private
SysHouseHoldInfoMapper
sysHouseHoldInfoMapper
;
@Autowired
private
THolidayInfoService
holidayInfoService
;
/**
* 户截止日配置表简单分页查询
*
...
...
@@ -370,4 +369,57 @@ public class THouseHoldLimitServiceImpl extends ServiceImpl<THouseHoldLimitMappe
private
boolean
insertExcel
(
THouseHoldLimit
insert
)
{
return
baseMapper
.
insert
(
insert
)
>=
1
;
}
/**
* 通过户名称及类型查询到具体截止日期后去看是否为工作日,如果不是工作日则往前推,知道找到工作日,然后返回工作日
* 如果找不到对应截止日期,则返回null
* @param paramVo:户名称 type: 0 社保、1 公积金
* @return R true 当月能办理 false 当月不能办理
*/
@Override
public
THouseHoldLimitInnerVo
getWorkDayByDeadLineDay
(
BaseSearchVO
paramVo
)
{
THouseHoldLimit
houseHoldLimit
=
baseMapper
.
selectOne
(
Wrappers
.<
THouseHoldLimit
>
query
().
lambda
()
.
eq
(
THouseHoldLimit:
:
getName
,
paramVo
.
getName
())
.
eq
(
THouseHoldLimit:
:
getType
,
paramVo
.
getType
())
.
last
(
CommonConstants
.
LAST_ONE_SQL
));
if
(
null
==
houseHoldLimit
){
return
null
;
}
THouseHoldLimitInnerVo
limitInnerVo
=
null
;
String
deadLineDay
=
houseHoldLimit
.
getDeadLineDay
();
if
(
Common
.
isNotNull
(
deadLineDay
))
{
try
{
TEmployeeInsuranceWorkDayVo
vo
=
new
TEmployeeInsuranceWorkDayVo
();
// 设置RegistDate为当前月份对应的截止日期deadLineDay
Date
registDate
=
DateUtil
.
setDayByDate
(
new
Date
(),
Integer
.
parseInt
(
deadLineDay
));
if
(
null
==
registDate
)
{
return
null
;
}
vo
.
setRegistDate
(
registDate
);
vo
.
setType
(
CommonConstants
.
ONE_STRING
);
holidayInfoService
.
selectBeforeOrAfterWorkDay
(
vo
);
limitInnerVo
=
new
THouseHoldLimitInnerVo
();
limitInnerVo
.
setCanBeHandle
(
false
);
limitInnerVo
.
setDeadLineDay
(
deadLineDay
);
limitInnerVo
.
setName
(
houseHoldLimit
.
getName
());
limitInnerVo
.
setType
(
houseHoldLimit
.
getType
());
limitInnerVo
.
setWordDate
(
vo
.
getRegistDate
());
limitInnerVo
.
setAddHandleRule
(
houseHoldLimit
.
getAddHandleRule
());
// 判断当前日期是否在截止日期之后
// 如果当前时间在截止日之后,则表示不可以办理,返回false,否则返回true
if
(
vo
.
getRegistDate
()
!=
null
)
{
LocalTime
currentTime
=
LocalTime
.
now
();
LocalTime
thresholdTime
=
LocalTime
.
of
(
15
,
20
);
int
dayOffset
=
(
currentTime
.
isBefore
(
thresholdTime
)
||
currentTime
.
equals
(
thresholdTime
))
?
0
:
1
;
if
(!
DateUtil
.
isAfter
(
DateUtil
.
getDateByDayNum
(
dayOffset
),
vo
.
getRegistDate
()))
{
limitInnerVo
.
setCanBeHandle
(
true
);
}
}
}
catch
(
NumberFormatException
e
)
{
// 截止日期不是有效数字,返回null表示无法确定
return
null
;
}
}
return
limitInnerVo
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment