Commit 47656659 authored by fangxinjiang's avatar fangxinjiang

合同续签待办-fxj

parent 68c9bc03
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
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.TableId;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.util.Date;
/**
* @Author fxj
* @Date 2022/7/1
* @Description
* @Version 1.0
*/
@Data
public class ContractAlertConfirmResVo implements Serializable {
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelAttribute(name = "主键" )
@Schema(description ="主键")
@ExcelIgnore
private String id;
/**
* 员工名称
*/
@ExcelAttribute(name = "员工名称" )
@Schema(description ="员工名称")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工名称")
private String empName;
/**
* 身份证号
*/
@ExcelAttribute(name = "身份证号" )
@Schema(description ="身份证号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号")
private String empIdcard;
/**
* 上一份合同起止日期
*/
@Schema(description = "上一份合同起止日期")
private String lastContractEndAndStart;
/**
* 就职岗位
*/
@ExcelAttribute(name = "就职岗位" )
@Schema(description ="就职岗位")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("就职岗位")
private String post;
/**
* 合同类型
*/
@ExcelAttribute(name = "合同类型" )
@Schema(description ="合同类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同类型")
private String contractType;
/**
* 签署甲方
*/
@ExcelAttribute(name = "签署甲方", maxLength = 50)
@Length(max = 50, message = "签署甲方不能超过50个字符")
@ExcelProperty("签署甲方")
@Schema(description = "签署甲方")
private String signatory;
/**
* 签署方式
*/
@ExcelAttribute(name = "签署方式", maxLength = 32)
@ExcelProperty("签署方式")
@Schema(description = "签署方式1线下签0电子签")
private String signType;
/**
* 合同开始日期
*/
@ExcelAttribute(name = "合同开始日期" )
@Schema(description ="合同开始日期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同开始日期")
private Date contractStart;
/**
* 合同截止日期
*/
@ExcelAttribute(name = "合同截止日期" )
@Schema(description ="合同截止日期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同截止日期")
private Date contractEnd;
/**
* 合同ID
*/
@ExcelAttribute(name = "合同ID" , isExport = false)
@Schema(description ="合同ID")
@ExcelIgnore
private String contractId;
@ExcelAttribute(name = "错误信息")
@Schema(description = "错误信息")
@ExcelProperty("错误信息")
private String errorMsg;
}
......@@ -125,4 +125,23 @@ public class ContractAlertConfirmVo implements Serializable {
@ExcelIgnore
private String contractId;
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
@ExcelAttribute(name = "错误信息")
@Schema(description = "错误信息")
@ExcelProperty("错误信息")
private String errorMsg;
}
......@@ -48,6 +48,6 @@ public class TEmployeeAutoRegistCheckVo implements Serializable {
private String errorMsg;
//反馈文件要求
ContractAlertConfirmVo confirmVo;
ContractAlertConfirmResVo confirmVo;
}
......@@ -725,6 +725,6 @@ public class TEmployeeContractPreNewVo extends TEmployeeContractPreNew implement
* @Author fxj
* @Description 批量确认返回对象
**/
private List<ContractAlertConfirmVo> confirmVos;
private List<ContractAlertConfirmResVo> confirmVos;
}
......@@ -364,95 +364,130 @@ public class TEmployeeContractPreNewServiceImpl extends ServiceImpl<TEmployeeCon
String innitError = null;
String preId = null;
//已合同Id 组建map
Map<String,ContractAlertConfirmVo> confirmMap = null;
List<ContractAlertConfirmVo> confirmVos = preVo.getConfirmVos();
Map<String,ContractAlertConfirmResVo> confirmMap = null;
List<ContractAlertConfirmResVo> confirmVos = preVo.getConfirmVos();
if (null != confirmVos && confirmVos.size() > 0){
confirmMap = confirmVos.stream().filter(v -> v.getContractId() != null)
.collect(Collectors.toMap(ContractAlertConfirmVo::getContractId, v -> v));
.collect(Collectors.toMap(ContractAlertConfirmResVo::getContractId, v -> v));
}
if (null == confirmMap){
confirmMap = new HashMap<>();
}
ContractAlertConfirmResVo temp = null;
TEmployeeContractPreNewVo preVoTemp = null;
for (TEmployeeContractInfo contract : contractList){
preVoTemp= new TEmployeeContractPreNewVo();
BeanCopyUtils.copyProperties(preVo,preVoTemp);
alert = alertMap.get(contract.getId());
if (null == alert){
checkVo = new TEmployeeAutoRegistCheckVo();
checkVo.setEmployeeName(contract.getEmpName());
checkVo.setEmpIdcard(contract.getEmpIdcard());
checkVo.setDeptName(preVo.getDeptName());
checkVo.setDeptNo(preVo.getDeptNo());
checkVo.setDeptName(preVoTemp.getDeptName());
checkVo.setDeptNo(preVoTemp.getDeptNo());
checkVo.setType("合同");
checkVo.setErrorMsg("未找到合同续签待办信息");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
pre = new TEmployeeContractPreNew();
BeanCopyUtils.copyProperties(preVoTemp,pre);
preId = preMap.get(contract.getId());
if (Common.isNotNull(preId)){
checkVo = new TEmployeeAutoRegistCheckVo();
checkVo.setEmployeeName(contract.getEmpName());
checkVo.setEmpIdcard(contract.getEmpIdcard());
checkVo.setDeptName(preVo.getDeptName());
checkVo.setDeptNo(preVo.getDeptNo());
checkVo.setDeptName(preVoTemp.getDeptName());
checkVo.setDeptNo(preVoTemp.getDeptNo());
checkVo.setType("合同");
checkVo.setErrorMsg("已确认,请勿重复确认");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
//初始化数据
innitError = initDateInfo(preVo, contract);
innitError = initDateInfo(preVoTemp, contract);
if (Common.isNotNull(innitError)){
checkVo = new TEmployeeAutoRegistCheckVo();
checkVo.setEmployeeName(contract.getEmpName());
checkVo.setEmpIdcard(contract.getEmpIdcard());
checkVo.setDeptName(preVo.getDeptName());
checkVo.setDeptNo(preVo.getDeptNo());
checkVo.setDeptName(preVoTemp.getDeptName());
checkVo.setDeptNo(preVoTemp.getDeptNo());
checkVo.setType("合同");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo.setErrorMsg(innitError);
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);;
errorList.add(checkVo);
continue;
}
//判断两个合同时间是否重合
if (LocalDateUtil.hasOverlap(contract.getContractStart(),contract.getContractEnd(),preVo.getContractStart(),preVo.getContractEnd())){
if (LocalDateUtil.hasOverlap(contract.getContractStart(),contract.getContractEnd(),preVoTemp.getContractStart(),preVoTemp.getContractEnd())){
checkVo = new TEmployeeAutoRegistCheckVo();
checkVo.setEmployeeName(contract.getEmpName());
checkVo.setEmpIdcard(contract.getEmpIdcard());
checkVo.setDeptName(preVo.getDeptName());
checkVo.setDeptNo(preVo.getDeptNo());
checkVo.setDeptName(preVoTemp.getDeptName());
checkVo.setDeptNo(preVoTemp.getDeptNo());
checkVo.setType("合同");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo.setErrorMsg(EmployeeConstants.DATA_CONTRACT_OVERLAP);
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
//如果电子签是系统自动撤销对应的签署方式必须更新为 线下签,
if (CommonConstants.ZERO_STRING.equals(preVo.getSignType())){
if (CommonConstants.ZERO_STRING.equals(preVoTemp.getSignType())){
preNew = baseMapper.selectOne(Wrappers.<TEmployeeContractPreNew>query().lambda()
.eq(TEmployeeContractPreNew::getContractId,contract.getId()).last(CommonConstants.LAST_ONE_SQL));
if (null != preNew && CommonConstants.ELEVEN_STRING.equals(preNew.getProcessStatus())){
checkVo = new TEmployeeAutoRegistCheckVo();
checkVo.setEmployeeName(contract.getEmpName());
checkVo.setEmpIdcard(contract.getEmpIdcard());
checkVo.setDeptName(preVo.getDeptName());
checkVo.setDeptNo(preVo.getDeptNo());
checkVo.setDeptName(preVoTemp.getDeptName());
checkVo.setDeptNo(preVoTemp.getDeptNo());
checkVo.setType("合同");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo.setErrorMsg(EmployeeConstants.DATA_CONTRACT_CANCEL_MUST_OFFLINE_SIGN);
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
}
//初始化岗位名称
TAutoContractScheme scheme = contractSchemeMapper.selectById(preVo.getConfigId());
if (Common.isNotNull(preVo.getConfigId()) && "固定岗位".equals(preVo.getPost()) && null != scheme){
preVo.setPost(scheme.getPost());
TAutoContractScheme scheme = contractSchemeMapper.selectById(preVoTemp.getConfigId());
if (Common.isNotNull(preVoTemp.getConfigId()) && "固定岗位".equals(preVoTemp.getPost()) && null != scheme){
preVoTemp.setPost(scheme.getPost());
}else {
//等于上一份合同的岗位明细
preVo.setPost(contract.getPost());
preVoTemp.setPost(contract.getPost());
}
//处理预计发起时间
TAutoContractRuleInfo rule = null;
......@@ -469,8 +504,14 @@ public class TEmployeeContractPreNewServiceImpl extends ServiceImpl<TEmployeeCon
// 解析合同结束日期
LocalDate contractEndDate = parseContractEndDate(contract.getContractEnd());
if (null == contractEndDate) {
checkVo = buildErrorCheckVo(contract, preVo, "合同结束日期解析失败");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo = buildErrorCheckVo(contract, preVoTemp, "合同结束日期解析失败");
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
......@@ -478,8 +519,14 @@ public class TEmployeeContractPreNewServiceImpl extends ServiceImpl<TEmployeeCon
// 计算预计发起日期
LocalDate reminderDate = calculateReminderDate(rule.getRenewalDateType(), contractEndDate);
if (null == reminderDate) {
checkVo = buildErrorCheckVo(contract, preVo, "预计发起时间初始化失败");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo = buildErrorCheckVo(contract, preVoTemp, "预计发起时间初始化失败");
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
......@@ -489,30 +536,42 @@ public class TEmployeeContractPreNewServiceImpl extends ServiceImpl<TEmployeeCon
reminderDate = adjustToNearestWorkday(reminderDate);
}
// 检查电子签是否超期(和续签的合同开始日期进行比较)
if (null != preVo.getContractStart() && CommonConstants.ZERO_STRING.equals(preVo.getSignType())){
LocalDate contractStartDateNew = parseContractEndDate(preVo.getContractStart());
if (null != preVoTemp.getContractStart() && CommonConstants.ZERO_STRING.equals(preVoTemp.getSignType())){
LocalDate contractStartDateNew = parseContractEndDate(preVoTemp.getContractStart());
if (null == contractEndDate) {
checkVo = buildErrorCheckVo(contract, preVo, "续签合同开始日期解析失败");
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo = buildErrorCheckVo(contract, preVoTemp, "续签合同开始日期解析失败");
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
if (reminderDate.isAfter(contractStartDateNew.plusMonths(1))) {
checkVo = buildErrorCheckVo(contract, preVo, EmployeeConstants.DATA_CONTRACT_EXPECTED_SIGN_TIME_ERROR);
checkVo.setConfirmVo(confirmMap.get(contract.getId()));
checkVo = buildErrorCheckVo(contract, preVoTemp, EmployeeConstants.DATA_CONTRACT_EXPECTED_SIGN_TIME_ERROR);
temp = confirmMap.get(contract.getId());
if (null != temp){
temp.setDeptNo(alert.getProjectNo());
temp.setDeptName(alert.getProject());
temp.setErrorMsg(checkVo.getErrorMsg());
}
checkVo.setConfirmVo(temp);
errorList.add(checkVo);
continue;
}
}
// 设置预计发起时间
preVo.setExpectedCollectionTime(DateUtil.getDateByLocalDate(reminderDate));
preVoTemp.setExpectedCollectionTime(DateUtil.getDateByLocalDate(reminderDate));
}
}
pre = new TEmployeeContractPreNew();
BeanCopyUtils.copyProperties(preVo,pre);
BeanCopyUtils.copyProperties(preVoTemp,pre);
pre.setContractId(contract.getId());
pre.setProcessStatus(CommonConstants.ONE_STRING);
if (null != alert){
......
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