Commit 56941cc6 authored by hongguangwu's avatar hongguangwu

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

parents 129e22ce 5bd21e21
......@@ -1151,48 +1151,139 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
employeeContractPreVo.setContractDurationMonth(CommonConstants.ZERO_STRING);
}
}
//劳务派遣合同相关校验
if (CommonConstants.TWENTY_STRING.equals(employeeContractPreVo.getContractType())
||"劳务派遣合同".equals(employeeContractPreVo.getContractType())){
|| "劳务派遣合同".equals(employeeContractPreVo.getContractType())) {
if (Common.isNotNull(employeeContractPreVo.getDispatchPeriodYear()) && Common.isNotNull(employeeContractPreVo.getDispatchPeriodMonth())){
//校验劳务派遣的派遣年限必须为两年
if (Common.isNotNull(employeeContractPreVo.getDispatchPeriodYear())
&& Common.isNotNull(employeeContractPreVo.getDispatchPeriodMonth())) {
// 校验劳务派遣的派遣年限必须为两年
final int REQUIRED_SERVICE_YEARS = 2;
int year = 0;
int dispatchYears = 0;
try {
year = Integer.parseInt(Common.isEmpty(employeeContractPreVo.getDispatchPeriodYear()) ? "0" : employeeContractPreVo.getDispatchPeriodYear().trim());
dispatchYears = Integer.parseInt(employeeContractPreVo.getDispatchPeriodYear().trim());
} catch (NumberFormatException e) {
return "劳务派遣的派遣年限格式不正确";
}
String dispatchMonth = employeeContractPreVo.getDispatchPeriodMonth();
if ("12".equals(dispatchMonth)) {
year = year + 1;
// 将派遣月份转换为年的小数部分(例如:6 个月=0.5 年)
int dispatchMonths = 0;
try {
dispatchMonths = Integer.parseInt(employeeContractPreVo.getDispatchPeriodMonth().trim());
} catch (NumberFormatException e) {
return "劳务派遣的派遣月份格式不正确";
}
if (year < REQUIRED_SERVICE_YEARS) {
return "劳务派遣合同的合同年限不能小于2年,请检查";
// 计算总派遣年限(年 + 月/12)
double totalDispatchYears = dispatchYears + (dispatchMonths / 12.0);
if (totalDispatchYears < REQUIRED_SERVICE_YEARS) {
return "劳务派遣合同的合同年限不能小于 2 年,请检查";
}
}
if (Common.isNotNull(employeeContractPreVo.getDispatchPeriodStart()) && Common.isNotNull(employeeContractPreVo.getDispatchPeriodEnd())){
if (employeeContractPreVo.getDispatchPeriodEnd().before(employeeContractPreVo.getDispatchPeriodStart())){
if (Common.isNotNull(employeeContractPreVo.getDispatchPeriodStart())
&& Common.isNotNull(employeeContractPreVo.getDispatchPeriodEnd())) {
if (employeeContractPreVo.getDispatchPeriodEnd().before(employeeContractPreVo.getDispatchPeriodStart())) {
return "派遣结束日期需大于等于派遣开始日期";
}
}
//合同开始时间、合同截止时间 与派遣的合同开始时间、合同截止时间一致
if (Common.isNotNull(employeeContractPreVo.getContractStart()) && Common.isNotNull(employeeContractPreVo.getDispatchPeriodStart())
&& !employeeContractPreVo.getContractStart().equals(employeeContractPreVo.getDispatchPeriodStart())){
// 合同开始时间、合同截止时间应与派遣的合同开始时间、合同截止时间一致
if (Common.isNotNull(employeeContractPreVo.getContractStart())
&& Common.isNotNull(employeeContractPreVo.getDispatchPeriodStart())
&& !employeeContractPreVo.getContractStart().equals(employeeContractPreVo.getDispatchPeriodStart())) {
return "合同开始日期与派遣开始日期不一致";
}
if (Common.isNotNull(employeeContractPreVo.getContractEnd()) && Common.isNotNull(employeeContractPreVo.getDispatchPeriodEnd())
&& !employeeContractPreVo.getContractEnd().equals(employeeContractPreVo.getDispatchPeriodEnd())){
if (Common.isNotNull(employeeContractPreVo.getContractEnd())
&& Common.isNotNull(employeeContractPreVo.getDispatchPeriodEnd())
&& !employeeContractPreVo.getContractEnd().equals(employeeContractPreVo.getDispatchPeriodEnd())) {
return "合同截止日期与派遣截止日期不一致";
}
}
//同商务合同一直 要 验证时间 截止时间大于等于开始时间、时间交叉
if (Common.isNotNull(employeeContractPreVo.getContractStart()) && Common.isNotNull(employeeContractPreVo.getContractEnd())){
if (employeeContractPreVo.getContractEnd().before(employeeContractPreVo.getContractStart())){
// 校验合同有效期:合同截止日期不得早于合同开始日期
if (Common.isNotNull(employeeContractPreVo.getContractStart())
&& Common.isNotNull(employeeContractPreVo.getContractEnd())) {
if (employeeContractPreVo.getContractEnd().before(employeeContractPreVo.getContractStart())) {
return "合同截止日期需大于等于合同开始日期";
}
}
//合同类型为 标准合同或劳务派遣合同时且试用期不为空时,无固定期限 时试用期不能大于6个月,提示“无固定期限时试用期不得超过6个月”
// 固定期限时 合同截止日期类型为合同年限推算或同商务合同一致或指定日期时 按1.“合同年限不满一年的,试用期不得超过1个月"
//2."合同年限1年以上不满3年的,试用期不得超过2个月" 3."合同年限3年以上的,试用期不得超过6个月" 限制
// 合同类型为劳务派遣合同或标准合同时,校验试用期合法性
if ("劳务派遣合同".equals(employeeContractPreVo.getContractType())
|| "标准合同".equals(employeeContractPreVo.getContractType())) {
// 检查必要字段是否为空 关键字段不为空才校验
if (!Common.isEmpty(employeeContractPreVo.getContractTerm())
&& !Common.isEmpty(employeeContractPreVo.getTryPeriodNum())) {
// 安全解析试用期月数
int tryPeriodMonths;
try {
tryPeriodMonths = Integer.parseInt(employeeContractPreVo.getTryPeriodNum().trim());
} catch (NumberFormatException e) {
return "试用期月份格式不正确";
}
// 无固定期限合同校验(contractTerm = "2")
if (CommonConstants.TWO_STRING.equals(employeeContractPreVo.getContractTerm())) {
if (tryPeriodMonths > 6) {
return "无固定期限时试用期不得超过 6 个月";
}
}
// 固定期限合同校验(contractTerm = "1")
else if (CommonConstants.ONE_STRING.equals(employeeContractPreVo.getContractTerm())) {
// 仅对特定合同截止日期类型进行校验
if (CommonConstants.ZERO_STRING.equals(employeeContractPreVo.getContractEndType())
|| CommonConstants.ONE_STRING.equals(employeeContractPreVo.getContractEndType())
|| CommonConstants.THREE_STRING.equals(employeeContractPreVo.getContractEndType())) {
// 安全解析合同年限
int contractYears = 0;
int contractMonths = 0;
if (Common.isNotNull(employeeContractPreVo.getContractDurationYear())) {
try {
contractYears = Integer.parseInt(employeeContractPreVo.getContractDurationYear().trim());
} catch (NumberFormatException e) {
contractYears = 0;
}
}
if (Common.isNotNull(employeeContractPreVo.getContractDurationMonth())) {
try {
contractMonths = Integer.parseInt(employeeContractPreVo.getContractDurationMonth().trim());
} catch (NumberFormatException e) {
contractMonths = 0;
}
}
// 计算合同总月数
int totalContractMonths = contractYears * 12 + contractMonths;
// 根据合同期限分段校验试用期(劳动合同法第 19 条规定)
if (totalContractMonths < 12) {
// 合同期限不满 1 年,试用期不得超过 1 个月
if (tryPeriodMonths > 1) {
return "固定期限时合同年限不满一年的,试用期不得超过 1 个月";
}
} else if (totalContractMonths >= 12 && totalContractMonths < 36) {
// 合同期限 1 年以上不满 3 年,试用期不得超过 2 个月
if (tryPeriodMonths > 2) {
return "固定期限时合同年限 1 年以上不满 3 年的,试用期不得超过 2 个月";
}
} else {
// 合同期限 3 年以上,试用期不得超过 6 个月
if (tryPeriodMonths > 6) {
return "固定期限时合同年限 3 年以上的,试用期不得超过 6 个月";
}
}
}
}
}
}
return null;
}
......
......@@ -421,7 +421,7 @@ public class TInsuranceDetail extends BaseEntity {
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -198,7 +198,7 @@ public class EkpInteractiveParam implements Serializable {
private String bpoFlag;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -251,7 +251,7 @@ public class InsuranceAddParam implements Serializable {
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -254,7 +254,7 @@ public class InsuranceBatchParam implements Serializable {
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -427,7 +427,7 @@ public class InsuranceDetailVO implements Serializable {
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -152,7 +152,7 @@ public class InsuranceListParam extends BaseEntity {
private String paymentTimeEnd;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -192,7 +192,7 @@ public class InsuranceListVO implements Serializable {
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
......
......@@ -639,6 +639,11 @@ public class DoJointInsuranceTask {
//4、针对非提前缴费的预估模式的未启用BPO结算模式的项目,商险存在预估费用,预估费用中应收有值为按照规则计算得出的,应支为0;存在实缴费用,实缴费用应收为“实缴费用的应支-预估数据的应收”的差值,应支等于导入的实缴金额;不存在差额费用——检查了系统中所有的项目维度,商险都是全量未结算,结算月份为空,因此不会存在实缴结算了应收差额,预估未收的情况——按照现有的模式执行
//应收
double ys = 0L;
//是BPO但是未启用BPO结算模式
boolean updateFlag = false;
if ("是".equals(deptInfoVo.getIsBpo()) && "否".equals(deptInfoVo.getBpoSettle())){
updateFlag = true;
}
//2、针对启用BPO结算模式的,无论是否为预估模式是否需提前缴费,都不会产生商险的预估数据,商险只存在实缴费用,实缴费用中,应收为0,应支等于导入的实缴金额——此类费用无需收可正常支出,支出计成本;
if ("是".equals(deptInfoVo.getBpoSettle())) {
if (InsurancesConstants.ACTUAL_SETTLE_BILL.equals(param.getSettleType())){
......@@ -680,9 +685,20 @@ public class DoJointInsuranceTask {
// 则说明少收了,差额下期要结算回来,若<0,则说明多收了,为负数,下期结算的时候,会结算负数,相当于在下一期的结算中可以少收这部分钱;若=0,则不生成差额数据),
// 派单id前缀,同之前的预估和实缴明细的id一致,“是否全部结算”为“是”,收款结算单拉取商险明细数据的时候,默认带出,必须跟着一起结算)。
if (InsurancesConstants.ESTIMATE_SETTLE_BILL.equals(param.getSettleType())){
ys = null==param.getEstimatePremium()? 0.00:param.getEstimatePremium().doubleValue();
//应支=0
pushParam.setFd_3adfe6e3911ffe(0.00);
if (updateFlag){
//针对提前缴费的是BPO但是未启用BPO结算模式的项目的商险费用明细数据——数据进行如下调整
//预估数据:应收为0、应支为预估数据
//实缴数据:应收为0,应支为实缴数据
//差额数据:应收为0,应支为实缴的应支-预估的应支
ys = 0.00;
//应支=0
pushParam.setFd_3adfe6e3911ffe(null==param.getEstimatePremium()? 0.00:param.getEstimatePremium().doubleValue());
}else {
ys = null==param.getEstimatePremium()? 0.00:param.getEstimatePremium().doubleValue();
//应支=0
pushParam.setFd_3adfe6e3911ffe(0.00);
}
pushParam.setFd_3adfe6af71a1cc("预估");
//实际结算月份
......@@ -693,13 +709,25 @@ public class DoJointInsuranceTask {
}
if (InsurancesConstants.ACTUAL_SETTLE_BILL.equals(param.getSettleType())){
ys = 0L;
if (updateFlag){
//应支=0
pushParam.setFd_3adfe6e3911ffe(null==param.getActualPremium()? 0.00:param.getActualPremium().doubleValue());
}
}
//差额
if (InsurancesConstants.BALANCE_SETTLE_BILL.equals(param.getSettleType())){
//应收=实缴的应支-预估的应收
ys = BigDecimalUtils.subtractAllowNegative(param.getActualPremium(),param.getEstimatePremium()).doubleValue();
//应支=0
pushParam.setFd_3adfe6e3911ffe(0.00);
if (updateFlag){
//应收=实缴的应支-预估的应收
ys = 0.00;
//应支=0
pushParam.setFd_3adfe6e3911ffe(BigDecimalUtils.subtractAllowNegative(param.getActualPremium(),param.getEstimatePremium()).doubleValue());
}else {
//应收=实缴的应支-预估的应收
ys = BigDecimalUtils.subtractAllowNegative(param.getActualPremium(),param.getEstimatePremium()).doubleValue();
//应支=0
pushParam.setFd_3adfe6e3911ffe(0.00);
}
//实际保费设置为0.0
pushParam.setFd_3adfe6610c0d2c(null == param.getActualPremium()?0.00:param.getActualPremium().doubleValue());
//实际结算月份
......
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