Commit 5dcf4fc8 authored by hongguangwu's avatar hongguangwu

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

parents a2f2d412 a33e355b
......@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TContractPreDetailVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TDispatchInfoPreVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TFundPreDetailVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSocialPreDetailVo;
......@@ -159,6 +160,10 @@ public class EmployeeRegistrationPre extends BaseEntity {
@TableField(exist = false)
private List<TFundPreDetailVo> exitFundInfoList;
@Schema(description = "合同流程中信息集合")
@TableField(exist = false)
private List<TContractPreDetailVo> exitContractInfoList;
@Schema(description = "附件集合")
@TableField(exist = false)
private List<TAttaInfo> attaList;
......
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
/**
* 合同流程中信息记录表
*
* @author system
* @date 2026-04-23
*/
@Data
@TableName("t_contract_pre_detail")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "合同流程中信息记录表")
public class TContractPreDetail extends BaseEntity {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("ID")
@Schema(description = "主键ID")
private String id;
/**
* 申请编号
*/
@ExcelAttribute(name = "申请编号", maxLength = 100)
@Length(max = 100, message = "申请编号不能超过100个字符")
@ExcelProperty("申请编号")
@Schema(description = "申请编号")
private String applyNo;
/**
* 申请人
*/
@ExcelAttribute(name = "申请人", maxLength = 100)
@Length(max = 100, message = "申请人不能超过100个字符")
@ExcelProperty("申请人")
@Schema(description = "申请人")
private String applicantName;
/**
* 申请时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelAttribute(name = "申请时间")
@ExcelProperty("申请时间")
@Schema(description = "申请时间")
private Date applyTime;
/**
* 档案所在地
*/
@ExcelAttribute(name = "档案所在地", maxLength = 200)
@Length(max = 200, message = "档案所在地不能超过200个字符")
@ExcelProperty("档案所在地")
@Schema(description = "档案所在地")
private String fileLocation;
/**
* 合同类型
*/
@ExcelAttribute(name = "合同类型", maxLength = 50)
@Length(max = 50, message = "合同类型不能超过50个字符")
@ExcelProperty("合同类型")
@Schema(description = "合同类型")
private String contractType;
/**
* 签订类型
*/
@ExcelAttribute(name = "签订类型", maxLength = 50)
@Length(max = 50, message = "签订类型不能超过50个字符")
@ExcelProperty("签订类型")
@Schema(description = "签订类型")
private String signType;
/**
* 签订期限
*/
@ExcelAttribute(name = "签订期限", maxLength = 50)
@Length(max = 50, message = "签订期限不能超过50个字符")
@ExcelProperty("签订期限")
@Schema(description = "签订期限")
private String signTerm;
/**
* 合同起始日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "合同起始日期")
@ExcelProperty("合同起始日期")
@Schema(description = "合同起始日期")
private Date contractStartDate;
/**
* 合同截止日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "合同截止日期")
@ExcelProperty("合同截止日期")
@Schema(description = "合同截止日期")
private Date contractEndDate;
/**
* 审核状态(0:待提交;1:待审核;2审核通过;3审核不通过;4签署中;5撤销签署;6签署失败)
*/
@ExcelAttribute(name = "审核状态", maxLength = 20)
@Length(max = 20, message = "审核状态不能超过20个字符")
@ExcelProperty("审核状态")
@Schema(description = "审核状态(0:待提交;1:待审核;2审核通过;3审核不通过;4签署中;5撤销签署;6签署失败)")
private String auditStatus;
/**
* 合同状态
*/
@ExcelAttribute(name = "合同状态", maxLength = 20)
@Length(max = 20, message = "合同状态不能超过20个字符")
@ExcelProperty("合同状态")
@Schema(description = "合同状态")
private String contractStatus;
/**
* 入职确认信息主表id
*/
@ExcelAttribute(name = "入职确认信息主表id", maxLength = 64)
@Length(max = 64, message = "入职确认信息主表id不能超过64个字符")
@ExcelProperty("入职确认信息主表id")
@Schema(description = "入职确认信息主表id")
private String registerId;
}
......@@ -158,6 +158,9 @@ public class EmployeeRegistrationPreVo implements Serializable {
@Schema(description = "公积金流程中信息集合")
private List<TFundPreDetailVo> exitFundInfoList;
@Schema(description = "合同流程中信息集合")
private List<TContractPreDetailVo> exitContractInfoList;
@Schema(description = "附件集合")
private List<TAttaInfoSaveVo> attaList;
......
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 合同流程中信息VO
*
* @author system
* @date 2026-04-23
*/
@Data
@Schema(description = "合同流程中信息VO")
public class TContractPreDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("ID")
@Schema(description = "主键ID")
private String id;
/**
* 申请编号
*/
@ExcelProperty("申请编号")
@Schema(description = "申请编号")
private String applyNo;
/**
* 申请人
*/
@ExcelProperty("申请人")
@Schema(description = "申请人")
private String applicantName;
/**
* 申请时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelProperty("申请时间")
@Schema(description = "申请时间")
private Date applyTime;
/**
* 档案所在地
*/
@ExcelProperty("档案所在地")
@Schema(description = "档案所在地")
private String fileLocation;
/**
* 合同类型
*/
@ExcelProperty("合同类型")
@Schema(description = "合同类型")
private String contractType;
/**
* 签订类型
*/
@ExcelProperty("签订类型")
@Schema(description = "签订类型")
private String signType;
/**
* 签订期限
*/
@ExcelProperty("签订期限")
@Schema(description = "签订期限")
private String signTerm;
/**
* 合同起始日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@ExcelProperty("合同起始日期")
@Schema(description = "合同起始日期")
private Date contractStartDate;
/**
* 合同截止日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@ExcelProperty("合同截止日期")
@Schema(description = "合同截止日期")
private Date contractEndDate;
/**
* 审核状态(0:待提交;1:待审核;2审核通过;3审核不通过;4签署中;5撤销签署;6签署失败)
*/
@ExcelProperty("审核状态")
@Schema(description = "审核状态(0:待提交;1:待审核;2审核通过;3审核不通过;4签署中;5撤销签署;6签署失败)")
private String auditStatus;
/**
* 合同状态
*/
@ExcelProperty("合同状态")
@Schema(description = "合同状态")
private String contractStatus;
/**
* 入职确认信息主表id
*/
@ExcelProperty("入职确认信息主表id")
@Schema(description = "入职确认信息主表id")
private String registerId;
}
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TContractPreDetail;
import com.yifu.cloud.plus.v1.yifu.archives.service.TContractPreDetailService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 合同流程中信息记录表
*
* @author system
* @date 2026-04-23
*/
@RestController
@RequestMapping("/tcontractpredetail")
@RequiredArgsConstructor
public class TContractPreDetailController {
private final TContractPreDetailService tContractPreDetailService;
/**
* 批量保存合同流程中信息
*/
@Operation(description = "批量保存合同流程中信息")
@Inner
@PostMapping("/inner/saveBatch")
public Boolean saveBatch(@RequestBody List<TContractPreDetail> detailList) {
if (Common.isEmpty(detailList)) {
return true;
}
return tContractPreDetailService.saveBatch(detailList);
}
}
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TContractPreDetail;
import org.apache.ibatis.annotations.Mapper;
/**
* 合同流程中信息记录表
*
* @author system
* @date 2026-04-23
*/
@Mapper
public interface TContractPreDetailMapper extends BaseMapper<TContractPreDetail> {
}
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TContractPreDetail;
/**
* 合同流程中信息记录表
*
* @author system
* @date 2026-04-23
*/
public interface TContractPreDetailService extends IService<TContractPreDetail> {
}
......@@ -103,6 +103,8 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
private final TGzOfferInfoMapper gzOfferInfoMapper;
private final TContractPreDetailService tContractPreDetailService;
@Autowired
@Lazy
private ScheduleService scheduleService;
......@@ -324,6 +326,9 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
sb.append("/合同");
}
}
//删除合同流程中信息
tContractPreDetailService.remove(Wrappers.<TContractPreDetail>lambdaQuery()
.eq(TContractPreDetail::getRegisterId, updatePre.getId()));
} catch (Exception e) {
log.error("调用csp服务更新数据异常", e);
}
......@@ -936,6 +941,33 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
employeeRegistrationPre.setEmployeeContractPre(null);
}
}
//1.9.18合同流程中信息集合处理逻辑
if (employeeRegistrationPre.getServerItem().contains("合同")) {
if (Common.isNotNull(employeeRegistrationPre.getExitContractInfoList())
&& !employeeRegistrationPre.getExitContractInfoList().isEmpty()) {
// 设置registerId
for (TContractPreDetailVo contractDetail : employeeRegistrationPre.getExitContractInfoList()) {
contractDetail.setRegisterId(id);
}
// 删除旧的合同流程中信息
tContractPreDetailService.remove(Wrappers.<TContractPreDetail>lambdaQuery()
.eq(TContractPreDetail::getRegisterId, id));
// 批量新增合同流程中信息
List<TContractPreDetail> detailList = new ArrayList<>();
for (TContractPreDetailVo vo : employeeRegistrationPre.getExitContractInfoList()) {
TContractPreDetail detail = new TContractPreDetail();
BeanUtils.copyProperties(vo, detail);
detail.setId(null);
detailList.add(detail);
}
tContractPreDetailService.saveBatch(detailList);
} else {
// 如果服务事项包含合同但exitContractInfoList为空,删除旧的合同流程中信息
tContractPreDetailService.remove(Wrappers.<TContractPreDetail>lambdaQuery()
.eq(TContractPreDetail::getRegisterId, id));
}
}
}
//1.9.16社保自动化校验逻辑
......@@ -1875,6 +1907,20 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
pre.setDispatchInfoFundPreVo(fundsdr.getData().getDispatchInfoPreFundVo());
}
}
// 查询已购买合同明细
List<TContractPreDetail> exitContractInfoList = tContractPreDetailService.list(Wrappers.<TContractPreDetail>query().lambda()
.eq(TContractPreDetail::getRegisterId, id));
if (Common.isNotNull(exitContractInfoList) && !exitContractInfoList.isEmpty()) {
List<TContractPreDetailVo> exitContractInfoListVo = exitContractInfoList.stream()
.map(detail -> {
TContractPreDetailVo vo = new TContractPreDetailVo();
BeanUtils.copyProperties(detail, vo);
return vo;
})
.collect(Collectors.toList());
pre.setExitContractInfoList(exitContractInfoListVo);
}
}
return pre;
}
......
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TContractPreDetail;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TContractPreDetailMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TContractPreDetailService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 合同流程中信息记录表
*
* @author system
* @date 2026-04-23
*/
@Log4j2
@Service
public class TContractPreDetailServiceImpl extends ServiceImpl<TContractPreDetailMapper, TContractPreDetail> implements TContractPreDetailService {
}
......@@ -823,4 +823,29 @@ public class ArchivesDaprUtil {
}
return res;
}
/**
* @Description: 批量保存合同流程中信息
* @Author: system
* @Date: 2026-04-23
* @param preVo 入职待建档信息VO
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<Boolean> saveContractPreDetailList(EmployeeRegistrationPreVo preVo){
if (Common.isEmpty(preVo) || Common.isEmpty(preVo.getExitContractInfoList())) {
return R.ok(true);
}
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprArchivesProperties.getAppUrl(),
daprArchivesProperties.getAppId(),
"/tcontractpredetail/inner/saveBatch",
JSON.toJSONString(preVo.getExitContractInfoList()),
Boolean.class,
SecurityConstants.FROM_IN
);
if (Common.isEmpty(res)){
return R.failed("保存合同流程中信息失败!");
}
return res;
}
}
......@@ -917,6 +917,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo.getEmployeeContractPreVos().setRegisterId(domainR.getData());
archivesDaprUtil.saveContractPreInfo(preVo.getEmployeeContractPreVos());
}
// 处理合同流程中信息集合
if (preVo.getServerItem().contains("合同")
&& null != preVo.getExitContractInfoList()
&& !preVo.getExitContractInfoList().isEmpty()) {
// 设置registerId关联
preVo.getExitContractInfoList().forEach(contractPreDetailVo ->
contractPreDetailVo.setRegisterId(domainR.getData()));
// 保存合同流程中信息集合
archivesDaprUtil.saveContractPreDetailList(preVo);
}
//服务类型包含社保购买时
if (preVo.getServerItem().contains("社保") && (null != preVo.getExitSocialInfoList()
|| null != preVo.getDispatchInfoPreVo())) {
......@@ -1718,6 +1728,15 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
employeeContractPreVo.setRegisterId(domainR.getData());
archivesDaprUtil.saveContractPreInfo(employeeContractPreVo);
}
// 服务类型包含合同且存在合同流程中信息集合时
if (preVo.getServerItem().contains("合同")
&& null != preVo.getExitContractInfoList()
&& !preVo.getExitContractInfoList().isEmpty()) {
preVo.getExitContractInfoList().forEach(contractPreDetailVo ->
contractPreDetailVo.setRegisterId(domainR.getData()));
// 保存合同流程中信息集合
archivesDaprUtil.saveContractPreDetailList(preVo);
}
//服务类型包含社保购买时
if (preVo.getServerItem().contains("社保") && (null != preVo.getExitSocialInfoList()
|| null != preVo.getDispatchInfoPreVo())) {
......
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