Commit 98b47e62 authored by hongguangwu's avatar hongguangwu

Merge remote-tracking branch 'origin/develop'

# Conflicts:
#	yifu-archives/yifu-archives-biz/src/main/resources/mapper/TCompleteMonitorMapper.xml
#	yifu-social/yifu-social-biz/src/main/resources/mapper/TDispatchInfoPreMapper.xml
parents 16391e5b 7dd00e74
......@@ -33,8 +33,8 @@ spec: # 资源规范字段
#dapr.io/sidecar-memory-limit: "800Mi" #Dapr sidecar可以使用的最大内存量。默认情况下未设置 请参阅 https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/ 的有效值。
#dapr.io/sidecar-cpu-request: 1 #Dapr sidecar要求的 CPU 数量
#dapr.io/sidecar-memory-request #Dapr sidecar 请求的内存数量
dapr.io/app-max-request-size: "600" # 明确指定应用请求大小
dapr.io/http-max-request-size: "600" #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
dapr.io/app-max-request-size: "800" # 明确指定应用请求大小
dapr.io/http-max-request-size: "800" #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
dapr.io/http-read-buffer-size: "4096" #Dapr has a default limit of 4KB for the http header read buffer size. When sending http headers that are bigger than the default 4KB, you can increase this value. Otherwise, you may encounter a Too big request header
dapr.io/sidecar-listen-addresses: "0.0.0.0"
# 更多dapr配置请参考 https://www.bookstack.cn/read/dapr-1.5-zh/cc77b74e2cc2f4d4.md
......@@ -64,7 +64,7 @@ spec: # 资源规范字段
#cpu: 300m # CPU,1核心 = 1000m
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
#cpu: 100m
memory: "500Mi"
memory: "800Mi"
#livenessProbe: # pod 内部健康检查的设置
# httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
# path: /healthCheck # URI地址
......
......@@ -189,4 +189,10 @@ public class EmployeeRegistrationPre extends BaseEntity {
@Schema(description = "合同是否可修改")
@TableField(exist = false)
private Boolean contractUpdateFlag;
/**
* 是否拒绝入职: 0 是 1 否
*/
@Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse;
}
......@@ -362,5 +362,9 @@ public class TEmployeeContractPre extends BaseEntity {
@ExcelAttribute(name = "紧急联系人地址")
private String contactAddress;
// 电子签推送需要的新字段——END
/**
* 是否拒绝入职: 0 是 1 否
*/
@Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse;
}
......@@ -185,7 +185,6 @@ public class TFascTemplate extends BaseEntity {
@ExcelProperty("当前必填总数量")
private String isMustAll;
/**
* 是否删除0否1是
*/
......@@ -195,4 +194,5 @@ public class TFascTemplate extends BaseEntity {
@Schema(description = "是否删除0否1是")
private String deleteFlag;
}
......@@ -504,6 +504,12 @@ public class TSettleDomain extends BaseEntity {
@ExcelIgnore
private String bpoFlag;
/**
* EKP的 是否启用BPO结算模式: 是 否
*/
@Schema(description = "是否启用BPO结算模式", name = "bpoEnable")
private String bpoEnable;
/**
* EKP的服务团队 : 存
*/
......
......@@ -108,6 +108,12 @@ public class ProjectSetInfoVo implements Serializable {
@ExcelIgnore
private String bpoFlag;
/**
* EKP的 是否启用BPO结算模式: 是 否
*/
@Schema(description = "是否启用BPO结算模式", name = "bpoEnable")
private String bpoEnable;
/**
* MVP1.7.11 增加: 服务项目
*/
......
......@@ -16,6 +16,7 @@
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -55,4 +56,8 @@ public class TFascTemplateSearchVo extends TFascTemplate {
@Schema(description = "查询limit 数据条数")
private int limitEnd;
//必填是否已配置0未配置1部分配置2已配置
@Schema(description = "必填是否已配置多个")
@TableField(exist = false)
private String[] isMustEditArray;
}
......@@ -425,6 +425,12 @@ public class TSettleDomainEkpVo implements Serializable {
@Schema(description = "是否BPO", name = "bpoFlag")
private String bpoFlag;
/**
* EKP的 是否启用BPO结算模式: 是 否
*/
@Schema(description = "是否启用BPO结算模式", name = "bpoEnable")
private String bpoEnable;
/**
* EKP的服务团队 : 存
*/
......
......@@ -334,4 +334,15 @@ public class TEmployeeContractPreController {
public R contractUrg(@RequestParam String id) {
return tEmployeeContractPreService.contractUrg(id);
}
/**
* 通过id查询合同待签订任务记录表
* @param registId
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/getInfoByRegistId" )
public R<TEmployeeContractPre> getInfoByRegistId(@RequestParam("registId" ) String registId) {
return tEmployeeContractPreService.getInfoByRegistId(registId);
}
}
......@@ -237,7 +237,7 @@ public class TSettleDomainController {
TSettleDomainListVo listVo = new TSettleDomainListVo();
listVo.setListSelectVO(list);
if (Common.isNotNull(list)){
listVo.setMapSelectVo(list.stream().collect(Collectors.toMap(TSettleDomain::getDepartNo, k->k)));
listVo.setMapSelectVo(list.stream().collect(Collectors.toMap(TSettleDomain::getDepartNo, k->k, (existing, replacement) -> existing)));
}
return listVo;
}
......@@ -255,7 +255,7 @@ public class TSettleDomainController {
TSettleDomainListVo listVo = new TSettleDomainListVo();
listVo.setListSelectVO(list);
if (Common.isNotNull(list)){
listVo.setMapSelectVo(list.stream().collect(Collectors.toMap(TSettleDomain::getId, k->k)));
listVo.setMapSelectVo(list.stream().collect(Collectors.toMap(TSettleDomain::getId, k->k, (existing, replacement) -> existing)));
}
return listVo;
}
......@@ -293,8 +293,10 @@ public class TSettleDomainController {
.eq(TSettleDomain::getDepartNo, tSettleDomainSelectVo.getDepartNo())
.eq(TSettleDomain::getDeleteFlag, CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL));
BeanUtils.copyProperties(tSettleDomain,tSettleDomainSelectVo);
tSettleDomainSelectVo.setCustomerCode(tSettleDomain.getCustomerNo());
if (tSettleDomain != null) {
BeanUtils.copyProperties(tSettleDomain, tSettleDomainSelectVo);
tSettleDomainSelectVo.setCustomerCode(tSettleDomain.getCustomerNo());
}
list.add(tSettleDomainSelectVo);
TSettleDomainListVo listVo = new TSettleDomainListVo();
listVo.setListSelectVO(list);
......
......@@ -41,11 +41,12 @@ public interface TFascTemplateMapper extends BaseMapper<TFascTemplate> {
* @param tFascTemplate 法大大专业版模板表
* @return
*/
IPage<TFascTemplate> getTFascTemplatePage(Page<TFascTemplate> page, @Param("tFascTemplate") TFascTemplate tFascTemplate);
IPage<TFascTemplate> getTFascTemplatePage(Page<TFascTemplate> page, @Param("tFascTemplate") TFascTemplateSearchVo tFascTemplate);
List<TFascTemplate> getTFascTemplateListAll(@Param("tFascTemplate") TFascTemplate tFascTemplate);
List<TFascTemplate> getTFascTemplateList(@Param("tFascTemplate") TFascTemplate tFascTemplate);
long getTFascTemplateExportCount(@Param("tFascTemplate") TFascTemplateSearchVo tFascTemplate, @Param("idList") List<String> idList);
List<TFascTemplateExportVo> getTFascTemplateExport(@Param("tFascTemplate") TFascTemplateSearchVo tFascTemplate, @Param("idList") List<String> idList);
/**
......
......@@ -103,4 +103,6 @@ public interface TEmployeeContractPreService extends IService<TEmployeeContractP
* @return
*/
R contractUrg(String id);
R<TEmployeeContractPre> getInfoByRegistId(String registId);
}
......@@ -23,6 +23,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.AliSmsResult;
import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.RegistParamVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.YiFuSmsUtil;
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.config.DaprCheckProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprInsurancesProperties;
......@@ -263,6 +264,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
}
YifuUser user = SecurityUtils.getUser();
employeeRegistrationPre.setProcessStatus(CommonConstants.THREE_STRING);
employeeRegistrationPre.setIsRefuse(CommonConstants.ZERO_STRING);
baseMapper.updateById(employeeRegistrationPre);
//新增操作记录
EmployeeRegistrationUpdateVo receiveVo = new EmployeeRegistrationUpdateVo();
......@@ -271,12 +273,65 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
receiveVo.setEmpIdcard(updatePre.getEmpIdcard());
receiveVo.setReason(employeeRegistrationPre.getReason());
receiveVo.setEmployeeId(user.getId());
StringBuilder sb = new StringBuilder("档案");
try {
//调用csp服务更新状态和新增操作记录
cspDaprUtils.updateRegistByPreInfo(receiveVo);
//处理社保待办信息
R<Boolean> booleanR = socialDaprUtils.updateRefuseSocialPreInfo(updatePre.getId());
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("社保");
}else {
sb.append("/社保");
}
}
//处理公积金待办信息
booleanR = socialDaprUtils.updateRefuseFundPreInfo(updatePre.getId());
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("公积金");
}else {
sb.append("/公积金");
}
}
//处理商险待办信息
BaseSearchVO insuranceSearchVo = new BaseSearchVO();
insuranceSearchVo.setRegisterId(updatePre.getId());
booleanR = insuranceDaprUtil.refuseInsurancePreByRegisterId(insuranceSearchVo);
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("商险");
}else {
sb.append("/商险");
}
}
//处理合同待办信息
LambdaUpdateWrapper<TEmployeeContractPre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TEmployeeContractPre::getRegisterId, updatePre.getId());
updateWrapper.set(TEmployeeContractPre::getIsRefuse,CommonConstants.ZERO_STRING);
int res = contractPreMapper.update(null,updateWrapper);
if (res > 0){
if (sb.length() == 0){
sb.append("合同");
}else {
sb.append("/合同");
}
}
} catch (Exception e) {
log.error("调用csp服务更新数据异常", e);
}
//增加操作日期
TEmployeePreLog log = new TEmployeePreLog();
log.setCreateTime(LocalDateTime.now());
log.setCreateName(user.getNickname());
log.setUpdateTime(LocalDateTime.now());
log.setPreId(employeeRegistrationPre.getId());
log.setDiffTitle("拒绝入职联动删除的待办:"+sb);
log.setMenuInfo("入职建档");
tEmployeePreLogService.save(log);
return R.ok();
}
......@@ -1178,7 +1233,8 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
List<TEmployeeInsurancePre> list = dataR.getData().getInsurancePreList();
for (TEmployeeInsurancePre pre : list) {
//项目不同
if (!preVo.getDeptNo().equals(pre.getDeptNo()) && (pre.getProcessStatus().equals(CommonConstants.ZERO_STRING) ||
if (!preVo.getDeptNo().equals(pre.getDeptNo()) && (
pre.getProcessStatus().equals(CommonConstants.ZERO_STRING) ||
pre.getProcessStatus().equals(CommonConstants.ONE_STRING) ||
pre.getProcessStatus().equals(CommonConstants.TWO_STRING))) {
erorFlag = true;
......@@ -1201,7 +1257,9 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
//第一次确认接收场景
if (Common.isNotNull(insuranceDetail)) {
//项目不同
if (!preVo.getDeptNo().equals(insuranceDetail.getDeptNo()) && (insuranceDetail.getBuyHandleStatus() == CommonConstants.ONE_INT ||
if (!preVo.getDeptNo().equals(insuranceDetail.getDeptNo()) && (
insuranceDetail.getBuyHandleStatus() == CommonConstants.SIX_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.ONE_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.TWO_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.THREE_INT)) {
erorFlag = true;
......@@ -1216,6 +1274,8 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
preVo.setProcessStatus(CommonConstants.SIX_STRING);
} else if (insuranceDetail.getBuyHandleStatus() == CommonConstants.FOUR_INT) {
preVo.setProcessStatus(CommonConstants.FIVE_STRING);
} else if (insuranceDetail.getBuyHandleStatus() == CommonConstants.SIX_INT) {
preVo.setProcessStatus(CommonConstants.SEVEN_STRING);
}
//是否地市自购
preVo.setIsAddress(insuranceDetail.getIsAdress());
......@@ -1639,7 +1699,8 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
if (Common.isNotNull(oldInsurance.getProcessStatus())
&& (CommonConstants.THREE_STRING.equals(oldInsurance.getProcessStatus())
|| CommonConstants.FOUR_STRING.equals(oldInsurance.getProcessStatus())
|| CommonConstants.SIX_STRING.equals(oldInsurance.getProcessStatus()))) {
|| CommonConstants.SIX_STRING.equals(oldInsurance.getProcessStatus())
|| CommonConstants.SEVEN_STRING.equals(oldInsurance.getProcessStatus()))) {
oldInsurance.setModelType(CommonConstants.FOUR_STRING);
}
}
......
......@@ -903,8 +903,6 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
&& CommonConstants.ZERO_STRING.equals(contractInfo.getChangeContractAndEmployee())) {
changeStatus(contractInfo, user);
} else {
//先停用项目内的其他的员工合同————不要这个逻辑了
// 2022-7-22 16:54:12 产品倩倩与测试说,作废终止审核通过,仅将原先选择的合同不在用即可
//baseMapper.updateInUseStatusById(contractInfo.getEmpId(), contractInfo.getSettleDomain(), contractInfo.getId(), CommonConstants.ONE_STRING)
if (Common.isNotNull(contractInfo.getOldContractId())) {
TEmployeeContractInfo old = this.getById(contractInfo.getOldContractId());
......@@ -921,6 +919,7 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
} else {
return R.failed("未找到关联的原合同");
}
doZhongZhiContract(contractInfo, user);
// 作废、终止审核通过:
// 更新项目合同状态为(2不在用),档案状态要判断
TEmployeeProject tEmployeeProject = tEmployeeProjectService.getOne(Wrappers.<TEmployeeProject>query()
......@@ -1984,21 +1983,7 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
StringBuilder failueInfo = new StringBuilder();
workInfo.append("合同终止成功,");
//该项目下其他在用的合同统一更新成不在用
contractInfoList = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpId, contract.getEmpId())
.eq(TEmployeeContractInfo::getSettleDomain, contract.getSettleDomain())
.eq(TEmployeeContractInfo::getInUse, CommonConstants.ZERO_STRING)
.eq(TEmployeeContractInfo::getDeleteFlag, CommonConstants.ZERO_INT)
.ne(TEmployeeContractInfo::getId, contract.getId()));
if (Common.isNotNull(contractInfoList)) {
for (TEmployeeContractInfo contractInfo1 : contractInfoList) {
contractInfo1.setInUse(CommonConstants.ONE_STRING);
contractInfo1.setAuditUserName(user.getNickname());
baseMapper.updateById(contractInfo1);
//增加审核记录
this.setAuditInfoNew(contractInfo1);
}
}
doOtherContract(contract, user);
//在途的合同更新为审核不通过
contractInfoListZt = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpId, contract.getEmpId())
......@@ -2117,6 +2102,10 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
errorCount++;
continue;
}
//该项目下其他在用的合同统一更新成不在用
doZhongZhiContract(contract, user);
// 作废、终止审核通过:
// 更新项目合同状态为(2不在用),档案状态要判断
tEmployeeProject = tEmployeeProjectService.getOne(Wrappers.<TEmployeeProject>query()
......@@ -2335,21 +2324,7 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
StringBuilder failueInfo = new StringBuilder();
workInfo.append("合同终止成功,");
//该项目下其他在用的合同统一更新成不在用
List<TEmployeeContractInfo> contractInfoList = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpId, contractInfo.getEmpId())
.eq(TEmployeeContractInfo::getSettleDomain, contractInfo.getSettleDomain())
.eq(TEmployeeContractInfo::getInUse, CommonConstants.ZERO_STRING)
.eq(TEmployeeContractInfo::getDeleteFlag, CommonConstants.ZERO_INT)
.ne(TEmployeeContractInfo::getId, contractInfo.getId()));
if (Common.isNotNull(contractInfoList)) {
for (TEmployeeContractInfo contractInfo1 : contractInfoList) {
contractInfo1.setInUse(CommonConstants.ONE_STRING);
contractInfo1.setAuditUserName(user.getNickname());
baseMapper.updateById(contractInfo1);
//增加审核记录
this.setAuditInfoNew(contractInfo1);
}
}
doOtherContract(contractInfo, user);
//在途的合同更新为审核不通过
List<TEmployeeContractInfo> contractInfoListZt = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpId, contractInfo.getEmpId())
......@@ -2455,6 +2430,48 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
}
}
// 同步处理其他合同
private void doOtherContract(TEmployeeContractInfo contract, YifuUser user) {
List<TEmployeeContractInfo> contractInfoList = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpId, contract.getEmpId())
.eq(TEmployeeContractInfo::getSettleDomain, contract.getSettleDomain())
.eq(TEmployeeContractInfo::getInUse, CommonConstants.ZERO_STRING)
.eq(TEmployeeContractInfo::getDeleteFlag, CommonConstants.ZERO_INT)
.ne(TEmployeeContractInfo::getId, contract.getId()));
if (Common.isNotNull(contractInfoList)) {
for (TEmployeeContractInfo contractInfo1 : contractInfoList) {
contractInfo1.setInUse(CommonConstants.ONE_STRING);
contractInfo1.setAuditUserName(user.getNickname());
baseMapper.updateById(contractInfo1);
//增加审核记录
this.setAuditInfoNew(contractInfo1);
}
}
}
// 同步处理终止合同(2026-01-29 倩倩:作废、终止的合同审核通过后,将待审核的终止的合同处理为审核不通过,以使得 自动化离职的合同 变为无需处理。未处理作废的合同,后续有需要再追加)
private void doZhongZhiContract(TEmployeeContractInfo contractInfo, YifuUser user) {
// 1将待审核的变为审核不通过且不在用
List<TEmployeeContractInfo> contractInfoList = baseMapper.selectList(Wrappers.<TEmployeeContractInfo>query()
.lambda().eq(TEmployeeContractInfo::getEmpIdcard, contractInfo.getEmpIdcard())
.eq(TEmployeeContractInfo::getSettleDomain, contractInfo.getSettleDomain())
.eq(TEmployeeContractInfo::getAuditStatus, CommonConstants.ONE_STRING)
.eq(TEmployeeContractInfo::getSituation, EmployeeConstants.SITUATION_SEVEN)
.eq(TEmployeeContractInfo::getDeleteFlag, CommonConstants.ZERO_INT)
.ne(TEmployeeContractInfo::getId, contractInfo.getId()));
if (Common.isNotNull(contractInfoList)) {
for (TEmployeeContractInfo contractInfo1 : contractInfoList) {
contractInfo1.setInUse(CommonConstants.ONE_STRING);
contractInfo1.setAuditStatus(CommonConstants.THREE_INT);
contractInfo1.setAuditUserName(user.getNickname());
baseMapper.updateById(contractInfo1);
//增加审核记录
this.setAuditInfoNew(contractInfo1);
//this.sendLeave(contractInfo1.getId(), CommonConstants.EIGHT_STRING, CommonConstants.ONE_STRING, "终止合同联动", user);
}
}
}
//更新瓜子offer状态
@Override
public void updateGzOfferStatus(TEmployeeContractInfo contractInfo,String preStatus,String updStatus, String userId, String nickname) {
......
......@@ -1244,5 +1244,14 @@ public class TEmployeeContractPreServiceImpl extends ServiceImpl<TEmployeeContra
}
}
}
@Override
public R<TEmployeeContractPre> getInfoByRegistId(String registId) {
if (Common.isEmpty(registId)) {
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
return R.ok(baseMapper.selectOne(Wrappers.<TEmployeeContractPre>query().lambda()
.notIn(TEmployeeContractPre::getProcessStatus, Arrays.asList("0","1","3","5","7","10","11"))
.eq(TEmployeeContractPre::getRegisterId, registId)
.last(CommonConstants.LAST_ONE_SQL)));
}
}
......@@ -101,7 +101,7 @@ public class TFascTemplateServiceImpl extends ServiceImpl<TFascTemplateMapper, T
//获取要导出的列表
List<TFascTemplateExportVo> list = new ArrayList<>();
List<String> idList = Common.getList(searchVo.getIds());
long count = noPageCountDiy(searchVo, idList);
long count = baseMapper.getTFascTemplateExportCount(searchVo, idList);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
......
......@@ -244,6 +244,9 @@ public class TSettleDomainServiceImpl extends ServiceImpl<TSettleDomainMapper, T
// 处理服务团队数据权限 2022-09-19 fxj
initServerTeamPermission(domain);
domain.setDeleteFlag(CommonConstants.ZERO_STRING);
if (Common.isEmpty(domain.getBpoEnable())){
domain.setBpoEnable(CommonConstants.IS_FALSE);
}
if (Common.isNotNull(tSettleDomainInfo)) {
baseMapper.updateById(domain);
} else {
......@@ -422,7 +425,7 @@ public class TSettleDomainServiceImpl extends ServiceImpl<TSettleDomainMapper, T
List<TSettleDomain> voList = baseMapper.getSettleInfoByCodes(codes);
TSettleDomainListVo setMap = new TSettleDomainListVo();
if (Common.isNotNull(voList)){
setMap.setMapVO(voList.stream().collect(Collectors.toMap(TSettleDomain::getDepartNo, k->k)));
setMap.setMapVO(voList.stream().collect(Collectors.toMap(TSettleDomain::getDepartNo, k->k, (existing, replacement) -> existing)));
}
return setMap;
}
......
......@@ -119,6 +119,9 @@
</sql>
<sql id="employeeRegistrationPre_where">
<if test="employeeRegistrationPre != null">
<if test="employeeRegistrationPre.isRefuse != null and employeeRegistrationPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{employeeRegistrationPre.isRefuse}
</if>
<if test="employeeRegistrationPre.id != null and employeeRegistrationPre.id.trim() != ''">
AND a.id = #{employeeRegistrationPre.id}
</if>
......@@ -144,7 +147,7 @@
</foreach>
</if>
<if test="employeeRegistrationPre.customerUsernameNew != null and employeeRegistrationPre.customerUsernameNew.trim() != ''">
AND a.customer_username_new = #{employeeRegistrationPre.customerUsernameNew}
AND a.customer_username_new like CONCAT('%',#{employeeRegistrationPre.customerUsernameNew},'%')
</if>
<if test="employeeRegistrationPre.customerUserLoginname != null and employeeRegistrationPre.customerUserLoginname.trim() != ''">
AND a.customer_user_loginname = #{employeeRegistrationPre.customerUserLoginname}
......
......@@ -136,7 +136,7 @@
AND a.PROJECT_SOURCE = #{employeeRegistrationPre.dataSource}
</if>
<if test="employeeRegistrationPre.customerUsernameNew != null and employeeRegistrationPre.customerUsernameNew.trim() != ''">
AND c.CS_NAME = #{employeeRegistrationPre.customerUsernameNew}
AND c.CS_NAME like CONCAT('%',#{employeeRegistrationPre.customerUsernameNew},'%')
</if>
<if test="employeeRegistrationPre.authSql != null and employeeRegistrationPre.authSql.trim() != ''">
${employeeRegistrationPre.authSql}
......@@ -201,7 +201,7 @@
inner join t_employee_info b on a.EMP_ID = b.id
inner join t_settle_domain c on a.DEPT_NO = c.DEPART_NO
<where>
a.delete_flag = '0' and a.IS_COMPLETE = '1' and a.project_status = 0
a.delete_flag = '0' and a.IS_COMPLETE = '1' and a.project_status = 0
<include refid="employeeRegistrationPre_where"/>
</where>
</select>
......
......@@ -446,13 +446,13 @@
</where>
order by a.APPLY_NO desc
</select>
<!--审核列表-->
<!--审核列表 电子签不要审核,但是作废、终止的要审核-->
<select id="getTEmployeeContractInfoPageByAudit" resultMap="tEmployeeContrctInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_employee_contract_info a
<where>
a.DELETE_FLAG = 0 and (a.sign_type is null or a.sign_type = '1')
a.DELETE_FLAG = 0 and (a.sign_type is null or a.sign_type = '1' or a.SITUATION in ('作废','终止') )
<include refid="tEmployeeContractInfo_where"/>
<if test="tEmployeeContractInfo.authSql != null and tEmployeeContractInfo.authSql.trim() != ''">
${tEmployeeContractInfo.authSql}
......
......@@ -179,6 +179,9 @@
</sql>
<sql id="tEmployeeContractPre_where">
<if test="tEmployeeContractPre != null">
<if test="tEmployeeContractPre.isRefuse != null and tEmployeeContractPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tEmployeeContractPre.isRefuse}
</if>
<if test="tEmployeeContractPre.id != null and tEmployeeContractPre.id.trim() != ''">
AND a.id = #{tEmployeeContractPre.id}
</if>
......@@ -201,9 +204,6 @@
<if test="tEmployeeContractPre.employeeName != null and tEmployeeContractPre.employeeName.trim() != ''">
AND a.employee_name = #{tEmployeeContractPre.employeeName}
</if>
<if test="tEmployeeContractPre.archivesIsCreate != null and tEmployeeContractPre.archivesIsCreate.trim() != ''">
AND a.archives_is_create = #{tEmployeeContractPre.archivesIsCreate}
</if>
<if test="tEmployeeContractPre.empIdcard != null and tEmployeeContractPre.empIdcard.trim() != ''">
AND a.emp_idcard like CONCAT('%',#{tEmployeeContractPre.empIdcard},'%')
</if>
......@@ -239,7 +239,7 @@
AND a.signatory like CONCAT('%',#{tEmployeeContractPre.signatory},'%')
</if>
<if test="tEmployeeContractPre.customerUsername != null and tEmployeeContractPre.customerUsername.trim() != ''">
AND a.customer_username = #{tEmployeeContractPre.customerUsername}
AND a.customer_username like CONCAT('%',#{tEmployeeContractPre.customerUsername},'%')
</if>
<if test="tEmployeeContractPre.customerUserLoginname != null and tEmployeeContractPre.customerUserLoginname.trim() != ''">
AND a.customer_user_loginname = #{tEmployeeContractPre.customerUserLoginname}
......@@ -286,6 +286,18 @@
<where>
1=1
<include refid="tEmployeeContractPre_where"/>
<if test="tEmployeeContractPre != null">
<if test="tEmployeeContractPre.archivesIsCreate != null and tEmployeeContractPre.archivesIsCreate.trim() != ''">
<if test='tEmployeeContractPre.archivesIsCreate == "0" '>
AND b.id is not null
</if>
<if test='tEmployeeContractPre.archivesIsCreate == "1" '>
AND b.id is null
</if>
</if>
</if>
</where>
order by a.create_time desc
</select>
......@@ -308,9 +320,21 @@
SELECT
count(1)
FROM t_employee_contract_pre a
left join t_employee_project b on a.emp_idcard = b.EMP_IDCARD and a.DEPT_NO = b.DEPT_NO
and b.PROJECT_STATUS = 0 and b.DELETE_FLAG = '0'
<where>
1=1
<include refid="tEmployeeContractPre_where"/>
<if test="tEmployeeContractPre != null">
<if test="tEmployeeContractPre.archivesIsCreate != null and tEmployeeContractPre.archivesIsCreate.trim() != ''">
<if test='tEmployeeContractPre.archivesIsCreate == "0" '>
AND b.id is not null
</if>
<if test='tEmployeeContractPre.archivesIsCreate == "1" '>
AND b.id is null
</if>
</if>
</if>
</where>
</select>
......@@ -350,6 +374,16 @@
<where>
1=1
<include refid="tEmployeeContractPre_where"/>
<if test="tEmployeeContractPre != null">
<if test="tEmployeeContractPre.archivesIsCreate != null and tEmployeeContractPre.archivesIsCreate.trim() != ''">
<if test='tEmployeeContractPre.archivesIsCreate == "0" '>
AND b.id is not null
</if>
<if test='tEmployeeContractPre.archivesIsCreate == "1" '>
AND b.id is null
</if>
</if>
</if>
</where>
order by a.create_time desc
<if test="tEmployeeContractPre.limitStart != null">
......
......@@ -970,7 +970,7 @@
b.CONTRACT_START,b.CONTRACT_END,b.CONTRACT_TERM,b.CONTRACT_SUB_NAME,b.CONTRACT_ID,
c.UNIT_NAME,
c.UNIT_NO,c.DEPT_ID,c.DEPT_NAME,c.DEPT_NO,c.POST,c.EMP_NO,c.PROJECT_STATUS,c.EMP_NATRUE,c.TRY_PERIOD
c.UNIT_NO,c.DEPT_ID,c.DEPT_NAME,c.DEPT_NO,c.POST,c.EMP_NO,c.PROJECT_STATUS,c.EMP_NATRUE,ifnull(c.TRY_PERIOD,b.TRY_PERIOD) TRY_PERIOD
,a.SCHOOL
from (
select e.ID,e.EMP_CODE,e.EMP_NAME,e.EMP_IDCARD,e.EMP_NATIONAL,e.EMP_PHONE,e.ID_PROVINCE,e.ID_CITY,
......@@ -1012,7 +1012,7 @@
x.CONTRACT_TERM,
x.CONTRACT_SUB_NAME,
x.ID as "CONTRACT_ID",
x.EMP_IDCARD
x.EMP_IDCARD,x.TRY_PERIOD
FROM
t_employee_contract_info x
WHERE
......
......@@ -137,6 +137,15 @@
<if test="tFascTemplate.isMustEdit != null and tFascTemplate.isMustEdit.trim() != ''">
AND a.is_must_edit = #{tFascTemplate.isMustEdit}
</if>
<if test="tFascTemplate.isMustEditArray != null and tFascTemplate.isMustEditArray.length > 0">
AND a.is_must_edit in
<foreach item="statusStr" index="index" collection="tFascTemplate.isMustEditArray" open="("
separator="," close=")">
#{statusStr}
</foreach>
</if>
<if test="tFascTemplate.createBy != null and tFascTemplate.createBy.trim() != ''">
AND a.CREATE_BY = #{tFascTemplate.createBy}
</if>
......@@ -222,6 +231,23 @@
</if>
</select>
<!--导出条数-->
<select id="getTFascTemplateExportCount" resultType="java.lang.Long">
SELECT
count(1)
FROM t_fasc_template a
<where>
a.delete_flag = '0'
<include refid="tFascTemplate_where"/>
<if test="idList != null and idList.size>0">
AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
</where>
</select>
<!--获取所有要更新是否必填的模板数据-->
<select id="getTFascTemplateResutList" resultMap="tFascTemplateMap">
SELECT
......
......@@ -90,6 +90,7 @@
<result property="riskServerItem" column="RISK_SERVER_ITEM"/>
<result property="unitSeriousIllnessProp" column="UNIT_SERIOUS_ILLNESS_PROP"/>
<result property="bpoFlag" column="BPO_FLAG"/>
<result property="bpoEnable" column="BPO_ENABLE"/>
<result property="buBelong" column="BU_BELONG"/>
<result property="firstIndicatorBelong" column="FIRST_INDICATOR_BELONG"/>
<result property="secondIndicatorBelong" column="SECOND_INDICATOR_BELONG"/>
......@@ -187,6 +188,7 @@
a.RISK_SERVER_ITEM,
a.UNIT_SERIOUS_ILLNESS_PROP,
a.BPO_FLAG,
a.BPO_ENABLE,
a.BU_BELONG,
a.ISSUE_STATUS,
a.FIRST_INDICATOR_BELONG,
......@@ -229,6 +231,7 @@
<result property="commitUserName" column="COMMIT_USER_NAME"/>
<result property="stopFlag" column="STOP_FLAG"/>
<result property="bpoFlag" column="BPO_FLAG"/>
<result property="bpoEnable" column="BPO_ENABLE"/>
<!-- 2025-01-10 FXJ V1.7.5 -->
<result property="hasContainRisks" column="HAS_CONTAIN_RISKS"/>
......@@ -444,6 +447,7 @@
a.RISK_SERVER_ITEM,
a.UNIT_SERIOUS_ILLNESS_PROP,
a.BPO_FLAG,
a.BPO_ENABLE,
a.BU_BELONG,
a.ISSUE_STATUS,
a.FIRST_INDICATOR_BELONG,
......@@ -506,6 +510,7 @@
a.INVOICE_TITLE_SALARY,
a.INVOICE_TITLE_INSURANCE,
a.BPO_FLAG,
a.BPO_ENABLE,
a.SERVER_ITEM
FROM t_settle_domain a
where a.DELETE_FLAG = '0'
......
......@@ -34,9 +34,9 @@ spring:
servlet:
multipart:
#所有上传文件最大大小
max-request-size: 600MB
max-request-size: 800MB
#单个文件最大大小
max-file-size: 600MB
max-file-size: 800MB
#swagger 文档 https://springdoc.org/
### OpenAPI3 注解
# OpenAPI 3 注解位置
......
......@@ -298,6 +298,15 @@ public class ChecksUtil {
if (mobileList.size() > CommonConstants.ZERO_INT){
TCheckMobile mobile = null;
for (String mb : mobileList){
//广电号码放行,硬编码 后续要优化
if (mb.indexOf("192") == 0){
mobile = new TCheckMobile();
mobile.setMobile(mb);
mobile.setStatus(CommonConstants.ONE_STRING);
mobile.setMessage("广电号码放行");
checkMobileMap.put(mb,mobile);
continue;
}
jsonObject = ChecksUtil.invokeMobileBasic(mb);
// 2.处理返回结果
if (jsonObject != null) {
......@@ -342,10 +351,19 @@ public class ChecksUtil {
}
} else {
// 记录错误日志,正式项目中请换成log打印
return R.failed("手机号校验失败:" + jsonObject.get(ChecksConstants.MESSAGE).getAsString());
//return R.failed("手机号校验失败:" + jsonObject.get(ChecksConstants.MESSAGE).getAsString());
mobile = new TCheckMobile();
mobile.setMobile(mb);
mobile.setStatus(CommonConstants.TEN_STRING);
mobile.setMessage(getJsonElementValue(jsonObject.get(ChecksConstants.MESSAGE))+getJsonElementValue(jsonObject.get(ChecksConstants.REMARK)));
checkMobileMap.put(mb,mobile);
}
} else {
return R.failed(ChecksConstants.NO_DATA_RESULT);
mobile = new TCheckMobile();
mobile.setMobile(mb);
mobile.setStatus(CommonConstants.TEN_STRING);
mobile.setMessage("调用第三方服务失败!");
checkMobileMap.put(mb,mobile);
}
}
}
......
......@@ -658,7 +658,7 @@ public interface CommonConstants {
List<String> processInsurancesStatus = Stream.of("1","2","5").collect(Collectors.toList());
List<String> processListPreArchivesStatus = Stream.of("0","1","2","3","4","5").collect(Collectors.toList());
List<String> processListPreArchivesStatus = Stream.of("0","1","2","3","4","5","7").collect(Collectors.toList());
String[] INSURANCE_ALERT_STATUS = {"0","1","2","3","4","5"};
List<String> deptList = Stream.of("安徽一册档案管理有限公司","安徽顾合企业管理咨询有限公司","安徽赤道线数字传媒科技有限公司","劳务业务中心","易服智享&研究院").collect(Collectors.toList());
......
......@@ -87,6 +87,27 @@ public class BigDecimalUtils {
return isZero ? (r.compareTo(BigDecimal.ZERO) == -1 ? BigDecimal.ZERO : r) : r;
}
/**
* BigDecimal的减法运算,允许返回负数值
* @author : Lingma
* 2026年1月26日
* @param b1 被减数
* @param bn 需要减的减数数组
* @return 返回实际减法结果,如果结果为负数也会返回
*/
public static BigDecimal subtractAllowNegative(BigDecimal b1, BigDecimal... bn) {
if (null == b1) {
b1 = BigDecimal.ZERO;
}
BigDecimal r = b1;
if (null != bn) {
for (BigDecimal b : bn) {
r = r.subtract((null == b ? BigDecimal.ZERO : b));
}
}
return r;
}
/**
* 整型的减法运算,小于0时返回0
* @author : shijing
......
......@@ -65,4 +65,7 @@ public class BaseSearchVO implements Serializable {
private Date startDate;
//入职登记表ID
private String registerId;
}
......@@ -112,7 +112,37 @@ public class InsuranceDaprUtil {
}
return res;
}
/**
* @Author fxj
* @Description 通过如入职ID删除商险待办数据
* @Date 20:28 2026/1/22
* @Param
* @return
**/
public R<Boolean> delInsurancePreByRegisterId(BaseSearchVO paramVo) {
R<Boolean> res = HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(),daprInsurancesProperties.getAppId()
,"/temployeeinsurancepre/inner/delInsurancePreByRegisterId", paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("通过如入职ID删除商险待办数据!");
}
return res;
}
/**
* @Author fxj
* @Description 拒绝入职状态更新
* @Date 20:28 2026/1/22
* @Param
* @return
**/
public R<Boolean> refuseInsurancePreByRegisterId(BaseSearchVO paramVo) {
R<Boolean> res = HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(),daprInsurancesProperties.getAppId()
,"/temployeeinsurancepre/inner/refuseInsurancePreByRegisterId", paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("拒绝入职更新商险待办数据!");
}
return res;
}
/**
* @param paramVo 查询参数,主要是身份证与项目编码
* @Description: 查询人员的已减完成的商险(返回值,则表示有未减完成的商险
......
......@@ -140,6 +140,16 @@ public class SocialDaprUtils {
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tincomedetail/inner/deleteById", JSON.toJSONString(infoVo), Object.class, SecurityConstants.FROM_IN);
}
/**
* @Author fxj
* @Description 通过收入id收入数据
* @Date 16:56 2026/1/27
* @Param
* @return
**/
public void deleteIncomeById(TIncomeDetail infoVo) {
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tincome/inner/deleteById", JSON.toJSONString(infoVo), Object.class, SecurityConstants.FROM_IN);
}
/**
* @Author huyc
* @Description 更新结算信息
......@@ -348,11 +358,23 @@ public class SocialDaprUtils {
* @Param
* @return
**/
public void deleteUnProcessSocialPreInfo(String id){
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl()
public R<Boolean> deleteUnProcessSocialPreInfo(String id){
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl()
, daprProperties.getAppId(),"/tdispatchinfopre/deleteUnProcessSocialPreInfo" , id
, Object.class, SecurityConstants.FROM_IN);
}
/**
* @Author huych
* @Description 拒绝入职更新社保已购买非流程中的数据
* @Date 2025-10-10 15:51:36
* @Param
* @return
**/
public R<Boolean> updateRefuseSocialPreInfo(String id){
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl()
, daprProperties.getAppId(),"/tdispatchinfopre/updateRefuseSocialPreInfo" , id
, Object.class, SecurityConstants.FROM_IN);
}
/**
* @Author fxj
......@@ -366,6 +388,11 @@ public class SocialDaprUtils {
"/tdispatchinfopre/deleteUnProcessFundPreInfo", id, Boolean.class, SecurityConstants.FROM_IN);
}
public R<Boolean> updateRefuseFundPreInfo(String id) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),
"/tdispatchinfopre/updateRefuseFundPreInfo", id, Boolean.class, SecurityConstants.FROM_IN);
}
/**
* @Author fxj
* @Description 获取公积金待购买信息
......
......@@ -128,4 +128,8 @@ public class EmployeeRegistration extends BaseEntity {
@Schema(description = "离职处理状态:0待确认1待处理2处理中3已处理")
private String leaveStatus;
@TableField(exist = false)
@Schema(description = "拒绝入职原因")
private String leaveReason;
}
......@@ -84,4 +84,7 @@ public class EmployeeRegistrationLeaveExportVo {
@ExcelProperty("减档")
private String doStatusEmp;
@ExcelProperty("前端客服")
private String customerUsernameNew;
}
......@@ -62,7 +62,8 @@ public class EmployeeRegistrationLeaveSearchVo extends EmployeeRegistrationLeave
private List<String> idList;
@Schema(description = "状态多个")
// 0待确认1待处理2处理中3已处理
@Schema(description = "离职处理状态多个")
@TableField(exist = false)
private String[] processStatusArray;
......
......@@ -17,6 +17,7 @@
package com.yifu.cloud.plus.v1.csp.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -204,4 +205,8 @@ public class EmployeeRegistrationLeaveTableVo extends EmployeeRegistrationLeaveE
@Schema(description = "项目档案失败时间")
private LocalDateTime failEmpProjectTime;
@TableField(exist = false)
@Schema(description = "前端客服")
private String customerUsernameNew;
}
......@@ -132,6 +132,20 @@ public class EmployeeRegistrationController {
return employeeRegistrationService.updateRegist(employeeRegistration);
}
/**
* @Author fxj
* @Description 拒绝入职
* @Date 20:08 2026/1/22
* @Param
* @return
**/
@Operation(summary = "拒绝入职")
@SysLog("拒绝入职")
@PostMapping("/refuseOffer")
public R refuseOffer(@RequestBody EmployeeRegistration employeeRegistration) {
return employeeRegistrationService.refuseOffer(employeeRegistration);
}
/**
* 单个更新,更新入离职日期和手机号码
*
......
......@@ -181,4 +181,5 @@ public interface EmployeeRegistrationService extends IService<EmployeeRegistrati
EkpDeptContractInfoVo selectContractInfoByDetptNo(EkpDeptContractInfoVo vo);
R refuseOffer(EmployeeRegistration employeeRegistration);
}
......@@ -841,6 +841,9 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
case "5": // 全部成功
leave.setLeaveStatus("3"); // 已处理
break;
case "6": // 无需处理
leave.setLeaveStatus("3"); // 已处理
break;
// case "1": // 未执行 - 保持原有状态(可能是待处理)
// case "6": // 无需处理 - 保持原有状态
// default: // 其他情况保持原有状态不变
......@@ -1242,6 +1245,10 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
List<ErrorMessage> contractParamList ;
List<ErrorMessage> projectParamList ;
List<ErrorMessage> empParamList ;
String closeRemark = "已在其他入口处理";
BaseSearchVO returnVo;
BaseSearchVO paramVo;
R<BaseSearchVO> returnR;
// 社保-完成
if (!socialOldList.isEmpty()) {
TDispatchReduceListVo paramListVo = new TDispatchReduceListVo();
......@@ -1281,6 +1288,21 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
leave.setDoStatusSocial(CommonConstants.THREE_STRING);
}
}
// 1社保:加一重保险:失败的再查一下是否已完结,变为无需处理
if (CommonConstants.THREE_STRING.equals(leave.getDoStatusSocial())) {
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
returnR = socialDaprUtils.getSocialAndFundStatusByClose(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isNotNull(returnVo.getResultIdOne())) {
leave.setSocialId(returnVo.getResultIdOne());
leave.setDoStatusSocial(CommonConstants.ONE_STRING);
leave.setCloseRemarkSocial(closeRemark);
}
}
}
}
}
}
......@@ -1323,6 +1345,21 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
leave.setDoStatusFund(CommonConstants.THREE_STRING);
}
}
// 2公积金:加一重保险:失败的再查一下是否已完结,变为无需处理
if (CommonConstants.THREE_STRING.equals(leave.getDoStatusFund())) {
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
returnR = socialDaprUtils.getSocialAndFundStatusByClose(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isNotNull(returnVo.getResultIdTwo())) {
leave.setFundId(returnVo.getResultIdTwo());
leave.setDoStatusFund(CommonConstants.ONE_STRING);
leave.setCloseRemarkFund(closeRemark);
}
}
}
}
}
}
......@@ -1351,6 +1388,7 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
// 错误的商险派单
List<String> errorList = new ArrayList<>();
List<String> successList = new ArrayList<>();
String insuranceIdTemp;
for (EmployeeRegistrationLeave leave : leaveList) {
if (judgeToUpdateInsurance(isExit, doType, nowTime, leave) ) {
errorMsg = new StringBuilder();
......@@ -1381,9 +1419,31 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
}
}
}
// 3商险:加一重保险:失败的再查一下是否已完结,变为无需处理
if (CommonConstants.THREE_STRING.equals(leave.getDoStatusInsurance())) {
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
insuranceIdTemp = "";
returnR = insuranceDaprUtil.getInsurancesStatusByClose(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isNotNull(returnVo.getResultIdOne())) {
insuranceIdTemp = returnVo.getResultIdOne();
}
}
// 这个反着查的,有未减完的,表示不可以关闭它,只能忽略它
if (Common.isEmpty(insuranceIdTemp)) {
leave.setInsuranceId(leave.getInsuranceIdOld());
leave.setDoStatusInsurance(CommonConstants.ONE_STRING);
leave.setCloseRemarkInsurance(closeRemark);
}
}
}
// 批量处理商险明细表的状态为失败:
if (!errorList.isEmpty()) {
// 可以再将【3商险:加一重保险】里无需处理的部分摘出来,改为无需处理,也可以不变,不影响总状态
leaveInsuranceMapper.updateLeaveInsuranceListByIdAndStatus(CommonConstants.THREE_STRING, errorList);
}
if (!successList.isEmpty()) {
......@@ -1451,6 +1511,41 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
}
}
}
// 4合同:加一重保险:失败的再查一下是否已完结,变为无需处理
String contractId = "";
String contractIdEnd = "";
for (EmployeeRegistrationLeave leave : leaveList) {
// 判断了不等于 空、无需处理、完成,再去查合同
if (judgeToQueryContract(isExit, doType, nowTime, leave) ) {
contractId = "";
contractIdEnd = "";
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
returnR = archivesDaprUtil.getEmpAndContractStatus(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isNotNull(returnVo.getResultIdThree())) {
contractId = returnVo.getResultIdThree();
}
if (Common.isNotNull(returnVo.getResultIdFourStatus())) {
contractIdEnd = returnVo.getResultIdFourStatus();
}
}
if (Common.isEmpty(contractId)) {
if (Common.isNotNull(contractIdEnd)) {
leave.setContractId(contractIdEnd);
} else {
// errorInfo.append("未找到终止的合同!")
// 社保派减,同步减合同,是没有终止的合同的,而是在合同本身改状态
leave.setContractId(leave.getContractIdOld());
}
leave.setDoStatusContract(CommonConstants.ONE_STRING);
leave.setCloseRemarkContract(closeRemark);
}
}
}
// 项目-完成
if (!listParamProject.isEmpty()) {
projectParamList = new ArrayList<>();
......@@ -1488,6 +1583,22 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
leave.setDoStatusProject(CommonConstants.EIGHT_STRING);
}
}
// 5项目档案:加一重保险:失败的再查一下是否已完结,变为无需处理
if (CommonConstants.NINE_STRING.equals(leave.getDoStatusProject())) {
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
returnR = archivesDaprUtil.getEmpAndContractStatus(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isEmpty(returnVo.getResultIdTwo())) {
leave.setEmpProjectId(leave.getEmpProjectIdOld());
leave.setCloseRemarkEmpProject(closeRemark);
leave.setDoStatusProject(CommonConstants.ONE_STRING);
}
}
}
}
} else {
// 全部成功
......@@ -1538,6 +1649,21 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
leave.setDoStatusEmp(CommonConstants.EIGHT_STRING);
}
}
// 6人员档案:加一重保险:失败的再查一下是否已完结,变为无需处理
if (CommonConstants.NINE_STRING.equals(leave.getDoStatusEmp())) {
paramVo = new BaseSearchVO();
paramVo.setEmpIdCard(leave.getEmpIdcard());
paramVo.setDeptNo(leave.getDeptNo());
returnR = archivesDaprUtil.getEmpAndContractStatus(paramVo);
if (null != returnR && Common.isNotNull(returnR.getData())) {
returnVo = returnR.getData();
if (Common.isEmpty(returnVo.getResultIdOne())) {
leave.setEmpId(leave.getEmpIdOld());
leave.setCloseRemarkEmp(closeRemark);
leave.setDoStatusEmp(CommonConstants.ONE_STRING);
}
}
}
}
} else {
// 全部成功
......@@ -1595,6 +1721,7 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
);
}
// 判断是否要发起
private boolean judgeToUpdateContract(String isExit, String doType, LocalDateTime nowTime, EmployeeRegistrationLeave leave) {
return (Common.isEmpty(doType) || doType.contains(CommonConstants.FOUR_STRING))
&& Common.isNotNull(leave.getContractIdOld()) && (CommonConstants.ZERO_STRING.equals(isExit)
......@@ -1606,6 +1733,17 @@ public class EmployeeRegistrationLeaveServiceImpl extends ServiceImpl<EmployeeRe
);
}
// 判断是否要关闭为无需处理
private boolean judgeToQueryContract(String isExit, String doType, LocalDateTime nowTime, EmployeeRegistrationLeave leave) {
return (Common.isEmpty(doType) || doType.contains(CommonConstants.FOUR_STRING))
&& Common.isNotNull(leave.getContractIdOld()) && (CommonConstants.ZERO_STRING.equals(isExit)
|| (CommonConstants.ONE_STRING.equals(isExit) && Common.isNotNull(leave.getContractExpectedTime()) && leave.getContractExpectedTime().isBefore(nowTime)))
&& Common.isNotNull(leave.getDoStatusContract())
&& !leave.getDoStatusContract().equals(CommonConstants.ZERO_STRING)
&& !leave.getDoStatusContract().equals(CommonConstants.ONE_STRING)
&& !leave.getDoStatusContract().equals(CommonConstants.EIGHT_STRING);
}
private boolean judgeToUpdateSocial(String isExit, String doType, LocalDateTime nowTime, EmployeeRegistrationLeave leave) {
return (Common.isEmpty(doType) || doType.contains(CommonConstants.ONE_STRING))
&& Common.isNotNull(leave.getSocialDispatchIdOld()) && (CommonConstants.ZERO_STRING.equals(isExit)
......
......@@ -1135,7 +1135,9 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
//前端客服的所有项目权限赋值
EmployeeRegistrationSearchVo searchVo = new EmployeeRegistrationSearchVo();
initSearchVo(searchVo);
searchVo.setStatusList(CommonConstants.processPreStatus);
List<String> statusList = CommonConstants.processPreStatus;
CommonConstants.processPreStatus.add(CommonConstants.THREE_STRING);
searchVo.setStatusList(statusList);
searchVo.setTypeList(CommonConstants.processPreStatus);
searchVo.setDeptNo(preVo.getDeptNo());
if (Common.isNotNull(preVo.getIdcardList())) {
......@@ -1162,6 +1164,12 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
exitCheckVo.setEmpIdcard(registration.getEmpIdcard());
exitCheckVo.setDeptName(registration.getDeptName());
exitCheckVo.setDeptNo(registration.getDeptNo());
if (CommonConstants.THREE_STRING.equals(registration.getProcessStatus())) {
exitCheckVo.setType(preVo.getServerItem());
exitCheckVo.setErrorMsg("已拒绝入职,不可操作!");
errorList.add(exitCheckVo);
continue;
}
if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) {
//批量的商险是否已购买默认为否
if (Common.isEmpty(preVo.getInsuranceIsBuy())) {
......@@ -2290,7 +2298,9 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
//第一次确认接收场景
if (Common.isNotNull(insuranceDetail)) {
//项目不同
if (!preVo.getDeptNo().equals(insuranceDetail.getDeptNo()) && (insuranceDetail.getBuyHandleStatus() == CommonConstants.ONE_INT ||
if (!preVo.getDeptNo().equals(insuranceDetail.getDeptNo()) && (
insuranceDetail.getBuyHandleStatus() == CommonConstants.ONE_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.SIX_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.TWO_INT ||
insuranceDetail.getBuyHandleStatus() == CommonConstants.THREE_INT)) {
erorFlag = true;
......@@ -2305,6 +2315,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo.setProcessStatus(CommonConstants.SIX_STRING);
} else if (insuranceDetail.getBuyHandleStatus() == CommonConstants.FOUR_INT) {
preVo.setProcessStatus(CommonConstants.FIVE_STRING);
} else if (insuranceDetail.getBuyHandleStatus() == CommonConstants.SIX_INT) {
preVo.setProcessStatus(CommonConstants.SEVEN_STRING);
}
//是否地市自购
preVo.setIsAddress(insuranceDetail.getIsAdress());
......@@ -2384,5 +2396,27 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
}
}
}
/**
* @Author fxj
* @Description 拒绝入职--入职待确认列表
* @Date 20:14 2026/1/22
* @Param
* @return
**/
@Override
public R refuseOffer(EmployeeRegistration registration) {
YifuUser user = SecurityUtils.getUser();
EmployeeRegistration registrationNow = baseMapper.selectById(registration.getId());
if (Common.isEmpty(registrationNow)) {
return R.failed(RegistConstants.NO_DATA_TO_HANDLE);
}
if (!CommonConstants.ONE_STRING.equals(registrationNow.getProcessStatus())){
return R.failed("状态非未处理状态,请刷新确认后操作!");
}
registrationNow.setProcessStatus(CommonConstants.THREE_STRING);
logService.saveLog(registration.getId(), CommonConstants.ZERO_STRING, RegistConstants.BACK_RECEIVE, LocalDateTime.now(),
user.getNickname(), registration.getLeaveReason());
baseMapper.updateById(registrationNow);
return R.ok();
}
}
......@@ -68,6 +68,7 @@
<result property="joinLeaveDate" column="join_leave_date"/>
<result property="deptName" column="dept_name"/>
<result property="deptNo" column="dept_no"/>
<result property="customerUsernameNew" column="customer_username_new"/>
</resultMap>
<!-- 新表全量字段-确认、派单时使用 -->
......@@ -248,6 +249,9 @@
#{idStr}
</foreach>
</if>
<if test="employeeRegistrationLeave.customerUsernameNew != null and employeeRegistrationLeave.customerUsernameNew.trim() != ''">
AND b.customer_username_new like CONCAT('%',#{employeeRegistrationLeave.customerUsernameNew},'%')
</if>
<if test="employeeRegistrationLeave.employeeName != null and employeeRegistrationLeave.employeeName.trim() != ''">
AND b.employee_name like CONCAT('%',#{employeeRegistrationLeave.employeeName},'%')
</if>
......@@ -276,6 +280,13 @@
<if test="employeeRegistrationLeave.leaveStatus != null and employeeRegistrationLeave.leaveStatus.trim() != ''">
AND a.leave_status = #{employeeRegistrationLeave.leaveStatus}
</if>
<if test="employeeRegistrationLeave.processStatusArray != null and employeeRegistrationLeave.processStatusArray.length > 0">
AND a.leave_status in
<foreach item="statusStr" index="index" collection="employeeRegistrationLeave.processStatusArray" open="("
separator="," close=")">
#{statusStr}
</foreach>
</if>
<if test="employeeRegistrationLeave.doStatus != null and employeeRegistrationLeave.doStatus.trim() != ''">
AND a.do_status = #{employeeRegistrationLeave.doStatus}
</if>
......@@ -406,7 +417,8 @@ when '4' then '待减员' when '5' then '待办理' when '6' then '减员中' wh
b.emp_idcard,
DATE_FORMAT(b.join_leave_date,'%Y-%m-%d') join_leave_date,
b.dept_name,
b.dept_no
b.dept_no,
b.customer_username_new
</sql>
<!-- 离职确认列表 -->
......
......@@ -213,7 +213,7 @@
AND a.data_source = #{employeeRegistration.dataSource}
</if>
<if test="employeeRegistration.customerUsernameNew != null and employeeRegistration.customerUsernameNew.trim() != ''">
AND a.customer_username_new = #{employeeRegistration.customerUsernameNew}
AND a.customer_username_new like CONCAT('%',#{employeeRegistration.customerUsernameNew},'%')
</if>
<if test="employeeRegistration.departIdSet != null and employeeRegistration.departIdSet.size > 0">
AND a.emp_deptid in
......
......@@ -121,6 +121,12 @@ public class InsurancesConstants {
* 投保记录不存在
*/
public static final String DATA_IS_NOT_EXIST = "投保记录不存在";
/**
* 投保记录为提前缴费不可删除
*/
public static final String NOT_JFCD_ERROR = "投保记录为提前缴费不可删除";
/**
* 未找到符合条件的参保记录
*/
......@@ -221,6 +227,11 @@ public class InsurancesConstants {
* 商险减员中,无法退回
*/
public static final String REDUCE_ROLLBACK_REDUCE_IS_NOT_ALLOW = "商险减员中,无法退回";
/**
* 实缴数据支出中或已支出,若要退回,请撤回支出结算后尝试!
*/
public static final String REDUCE_ROLLBACK_PAY_IS_NOT_ALLOW = "实缴数据支出中或已支出,若要退回,请撤回支出结算后尝试!";
/**
* 员工姓名不能为空
*/
......@@ -461,6 +472,11 @@ public class InsurancesConstants {
* 商险待投保,无法登记保单保费
*/
public static final String BUY_HANDLE_ONE_NOT_REGISTERED = "商险待投保,无法登记保单保费";
/**
* 商险待投保,无法登记保单保费
*/
public static final String BUY_HANDLE_SIX_NOT_REGISTERED = "商险待缴费,无法登记保单保费";
/**
* 商险投保中,无法登记保单保费
*/
......@@ -1176,6 +1192,11 @@ public class InsurancesConstants {
*/
public static final String ACTUAL_SETTLE_BILL = "实缴";
/**
* 差额
*/
public static final String BALANCE_SETTLE_BILL = "差额";
/**
* 新增结算单
*/
......
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -116,6 +114,7 @@ public class EkpInsurancesInfo {
private String fd_3af9197b31071c;
@Schema(description = "实际结算月份")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Date fd_3af9d11088facc;
@Schema(description = "有无预估")
......@@ -181,4 +180,8 @@ public class EkpInsurancesInfo {
@Schema(description = "创建时间")
private Date createTime;
@Schema(description = "是否见费出单")
private String fd_jfcd;
}
......@@ -54,7 +54,7 @@ public class TEmployeeInsurancePre extends BaseEntity {
@Schema(description = "登记人")
private String registUser;
@Schema(description = "状态,0待确认,1待派单,2派单失败,3待投保,4投保中,5投保退回,6已完成")
@Schema(description = "状态,0待确认,1待派单,2派单失败,3待投保,4投保中,5投保退回,6已完成,7待缴费")
private String processStatus;
@Schema(description = "前端客服")
......@@ -159,5 +159,9 @@ public class TEmployeeInsurancePre extends BaseEntity {
@TableField(exist = false)
@Schema(description = "修改类型:1新增;2修改;3删除;4状态346为不可编辑")
private String modelType;
/**
* 是否拒绝入职: 0 是 1 否
*/
@Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse;
}
......@@ -292,5 +292,9 @@ public class TInsuranceAlert extends BaseEntity {
@Schema(description = "保单生效日期-新")
private LocalDate policyEffectNew;
@TableField(exist = false)
@Schema(description = "前端客服")
private String customerUsername;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -207,9 +208,9 @@ public class TInsuranceDetail extends BaseEntity {
private String insuranceHandleCityName;
/**
* 结算类型 (0、与薪资合并结算 1、单独结算)
* 结算类型 (0、与薪资合并结算 1、单独结算 2、差额结算--只做结算用)
*/
@Schema(description = "结算类型 (0、与薪资合并结算 1、单独结算)")
@Schema(description = "结算类型 (0、与薪资合并结算 1、单独结算 2、差额结算)")
private Integer settleType;
/**
......@@ -231,9 +232,9 @@ public class TInsuranceDetail extends BaseEntity {
private Integer signFlag;
/**
* 投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员
* 投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员 6待缴费
*/
@Schema(description = "投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
@Schema(description = "投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员 6待缴费")
private Integer buyHandleStatus;
/**
......@@ -406,5 +407,44 @@ public class TInsuranceDetail extends BaseEntity {
@Schema(description = "是否地市自购")
private String isAdress;
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间: EKP已收/已垫付 更新时间, 退单或撤销匹配 清空时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间")
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
/**
* 预计办理日期
*/
@Schema(description = "预计办理日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime;
/**
* 差额settleId
*/
@TableField(exist = false)
@Schema(description = "差额settleId")
private String balanceId;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -39,9 +39,9 @@ public class TInsuranceSettle implements Serializable {
private String settleHandleStatus;
/**
* 结算类型 (0、与薪资合并结算 1、单独结算)
* 结算类型 (0、与薪资合并结算 1、单独结算 2、差额)
*/
@Schema(description = "结算类型 (0、与薪资合并结算 1、单独结算)")
@Schema(description = "结算类型 (0、与薪资合并结算 1、单独结算 2、差额)")
private Integer settleType;
/**
......
......@@ -91,4 +91,10 @@ public class TInsuranceType extends BaseEntity {
@Schema(description = "启用状态")
private String enable;
/**
* 是否见费出单 0是 1 否
*/
@NotBlank(message = "是否见费出单不能为空")
@Schema(description = "是否见费出单")
private String isJfcd;
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.chrono.ChronoLocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
......@@ -311,7 +312,94 @@ public class LocalDateUtil {
}*/
return dif;
}
/**
* @Author fxj
* @Description
* 计算相差月份, 如果开始时间晚于结束时间会对调--纯享版,不+1
* 公式:(endYear - starYear) * 12 + endMonth - startMonth
* @Date 17:05 2026/1/20
* @Param
* @return
**/
public static long betweenMonthTwo(String startDate,String endDate){
long dif = 0;
//在日期字符串非空时执行
if (!Common.isEmpty(startDate) && !Common.isEmpty(endDate)) {
Date parseStartDate = null;
Date parseEndDate = null;
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat(NORM_DATE_PATTERN, Locale.CHINA);
try {
//将字符串转为日期格式,如果此处字符串为非合法日期就会抛出异常。
parseStartDate = sdf.parse(startDate);
parseEndDate = sdf.parse(endDate);
//如果开始时间晚于结束时间对调
if (parseStartDate.after(parseEndDate)) {
Date t = parseStartDate;
parseStartDate = parseEndDate;
parseEndDate = t;
}
Calendar starCalendar = Calendar.getInstance();
starCalendar.setTime(parseStartDate);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(parseEndDate);
int starYear = starCalendar.get(Calendar.YEAR);
int startMonth = starCalendar.get(Calendar.MONTH);
int endYear = endCalendar.get(Calendar.YEAR);
int endMonth = endCalendar.get(Calendar.MONTH);
dif = (endYear - starYear) * 12 + endMonth - startMonth;
} catch (ParseException e) {
e.printStackTrace();
}
}
return dif;
}
/**
* 计算两个日期之间的月数(Excel DATEDIF逻辑)
* @param startDateStr 开始日期,格式:yyyy/MM/dd
* @param endDateStr 结束日期,格式:yyyy/MM/dd
* @return 月数(整月数 + 1)
*/
public static int calculateMonths(String startDateStr, String endDateStr) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 解析日期
LocalDate startDate = LocalDate.parse(startDateStr, formatter);
LocalDate endDate = LocalDate.parse(endDateStr, formatter);
// 计算整月数(Excel DATEDIF的"m"参数逻辑)
int monthsBetween = calculateFullMonths(startDate, endDate);
// 加1(根据Excel公式要求)
return monthsBetween + 1;
}
/**
* 计算两个日期之间的整月数(模仿Excel DATEDIF的"m"参数)
*/
private static int calculateFullMonths(LocalDate startDate, LocalDate endDate) {
// 如果开始日期晚于结束日期,返回0
if (startDate.isAfter(endDate)) {
return 0;
}
// 计算年份和月份的差值
int years = endDate.getYear() - startDate.getYear();
int months = endDate.getMonthValue() - startDate.getMonthValue();
int totalMonths = years * 12 + months;
// 如果结束日的日份小于开始日的日份,减1个月
// 这是Excel DATEDIF的规则:不足整月的不计入
if (endDate.getDayOfMonth() < startDate.getDayOfMonth()) {
totalMonths--;
}
return totalMonths;
}
/**
* 判断两个时间段是否有交集
*
......
......@@ -43,7 +43,7 @@ public class EkpInteractiveParam implements Serializable {
/**
* 单据类型 (0、与薪资合并结算 1、单独结算)
*/
@Schema(description = "单据类型 (1、预估单 2、实缴单)")
@Schema(description = "单据类型 (1、预估单 2、实缴单 3、差额)")
private String settleType;
/**
......@@ -70,6 +70,12 @@ public class EkpInteractiveParam implements Serializable {
@Schema(description = "客户编码")
private String customerCode;
@Schema(description ="客户名称")
private String unitName;
@Schema(description ="客户编码")
private String unitNo;
/**
* 员工姓名
*/
......@@ -190,4 +196,16 @@ public class EkpInteractiveParam implements Serializable {
@Schema(description = "是否BPO", name = "bpoFlag")
@ExcelIgnore
private String bpoFlag;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 差额settleId
*/
@Schema(description = "差额settleId")
private String balanceId;
}
......@@ -3,6 +3,8 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* @Description: 查询EKP中的状态,拦截批量保单号保费
......@@ -14,12 +16,34 @@ import java.io.Serializable;
public class EkpSettleStatusVo implements Serializable {
/**
* 结算状态
* 结算状态: 已结算 结算中 未结算 无需结算
**/
private String settleStatus;
/**
* 支出状态
* 支出状态: 已结算 结算中 未结算 无需结算
**/
private String payStatus;
/**
* 收款状态: 已收 垫付 未收
**/
private String paymentStatus;
/**
* 商险ID
**/
private String detailId;
/**
* 应收
**/
private Double paymentBalance;
/**
* 待收
**/
private String statusUpdateTime;
}
......@@ -27,4 +27,19 @@ public class EkpStatusParamVo implements Serializable {
* 结算单类型 0 社保/管理费 1公积金/风险金
*/
private String typeFlag;
/**
* 收款结算单退单或款项撤销表示 0 表示要退单&撤销款项
*/
private String callBackFlag;
/**
* 收款结算单退单或款项撤销表示 商险ID
*/
private String detailIds;
/**
* 0代表收款结算单已收或垫付
*/
private String paymentStatsus;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -8,6 +9,8 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
......@@ -232,4 +235,43 @@ public class InsuranceAddParam implements Serializable {
private String isExit;
private List<TInsurancePreDetail> inProgressList;
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间: EKP已收/已垫付 更新时间, 退单或撤销匹配 清空时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间")
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
/**
* 预计办理日期
*/
@Schema(description = "预计办理日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime;
/**
* 预估保费
*/
@Schema(description = "预估保费")
private BigDecimal estimatePremium;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -9,6 +10,7 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
......@@ -237,4 +239,42 @@ public class InsuranceBatchParam implements Serializable {
private String isExit;
private List<TInsurancePreDetail> inProgressList;
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间: EKP已收/已垫付 更新时间, 退单或撤销匹配 清空时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间")
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
/**
* 预计办理日期
*/
@Schema(description = "预计办理日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime;
/**
* 预估保费
*/
@Schema(description = "预估保费")
private BigDecimal estimatePremium;
}
......@@ -412,4 +412,36 @@ public class InsuranceDetailVO implements Serializable {
*/
@Schema(description = "是否地市自购")
private String isAdress;
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间: EKP已收/已垫付 更新时间, 退单或撤销匹配 清空时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间")
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
/**
* 预计办理日期
*/
@Schema(description = "预计办理日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -192,4 +193,17 @@ public class InsuranceExportListOneVO implements Serializable {
*/
@Schema(description = "客户名称")
private String unitName;
/**
* 默认结算信息id
*/
@ExcelIgnore
@Schema(description = "默认结算信息id")
private String defaultSettleId;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
}
package com.yifu.cloud.plus.v1.yifu.insurances.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.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -204,4 +207,11 @@ public class InsuranceExportListVO implements Serializable {
@ExcelProperty(value = "派单备注")
private String remarkDispatch;
/**
* 默认结算信息id
*/
@ExcelIgnore
@Schema(description = "默认结算信息id")
private String defaultSettleId;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
......@@ -16,6 +18,11 @@ import java.util.List;
@Schema(description = "投保列表请求参数")
public class InsuranceListParam extends BaseEntity {
/**
* 派单ID
*/
@Schema(description = "派单ID")
private String id;
/**
* 项目编码
*/
......@@ -123,5 +130,43 @@ public class InsuranceListParam extends BaseEntity {
*/
@Schema(description = "是否地市自购")
private String isAdress;
//2026-01-20 v1.7.19 fxj 新增
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间--开始
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间--开始")
private String paymentTimeStart;
/**
* 缴费时间--结束
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间--结束")
private String paymentTimeEnd;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 预估保费--开始
*/
@Schema(description = "预估保费--开始")
private BigDecimal estimatePremiumStart;
/**
* 预估保费--截止
*/
@Schema(description = "预估保费--截止")
private BigDecimal estimatePremiumEnd;
}
......@@ -8,8 +8,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @author licancan
......@@ -49,7 +51,7 @@ public class InsuranceListVO implements Serializable {
* 购买月数
*/
@Schema(description = "购买月数")
private Long buyMonth;
private String buyMonth;
/**
* 项目名称
......@@ -175,4 +177,48 @@ public class InsuranceListVO implements Serializable {
*/
@Schema(description = "是否地市自购")
private String isAdress;
/**
* 预估缴费状态 0待缴费、1已缴费
*/
@Schema(description = "预估缴费状态 0待缴费、1已缴费")
private String paymentStatus;
/**
* 缴费时间: EKP已收/已垫付 更新时间, 退单或撤销匹配 清空时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "缴费时间")
private String paymentTime;
/**
* 是否见费出单 0是 1 否 (新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是,否则为否)
*/
@Schema(description = "是否见费出单")
private String isJfcd;
/**
* 购买周期 (格式:4个月/117天)
*/
@Schema(description = "购买周期")
private String purchaseCycle;
/**
* 预计办理日期
*/
@Schema(description = "预计办理日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime;
/**
* 预估保费
*/
@Schema(description = "预估保费")
private BigDecimal estimatePremium;
/**
* 计费方式
*/
@Schema(description = "计费方式(0:按天,1:按月)")
private Integer billingType;
}
......@@ -61,4 +61,10 @@ public class InsuranceTypeExportVo {
@Schema(description = "启用状态")
private String enable;
/**
* 是否见费出单 0是 1 否
*/
@Schema(description = "是否见费出单")
private String isJfcd;
}
......@@ -68,7 +68,7 @@ public class TEmployeeInsurancePreVo implements Serializable {
* 状态,0短信待发送,1信息待填写,2信息待审核,3拒绝入职4已完成
*/
@ExcelAttribute(name = "状态,0短信待发送,1信息待填写,2信息待审核,3拒绝入职4已完成")
@Schema(description = "状态,0待确认,1待派单,2派单失败,3待投保,4投保中,5投保退回,6已完成")
@Schema(description = "状态,0待确认,1待派单,2派单失败,3待投保,4投保中,5投保退回,6已完成, 待缴费")
@ExcelProperty("状态,0待确认,1待派单,2派单失败,3待投保,4投保中,5投保退回,6已完成")
private String processStatus;
/**
......
......@@ -20,6 +20,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
......@@ -101,4 +102,8 @@ public class TInsuranceAlertExportVO {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "状态")
private String processStatus;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "前端客服")
private String customerUsername;
}
......@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.EmployeeRegistrationPre;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPre;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
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.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
......@@ -312,4 +314,48 @@ public class TEmployeeInsurancePreController {
return tEmployeeInsurancePreService.getExitInsuranceListByEmpPreId(empPreId);
}
/**
* @Author fxj
* @Description 通过如入职ID删除商险待办数据
* @Date 20:31 2026/1/22
* @Param
* @return
**/
@Operation(description = "通过如入职ID删除商险待办数据")
@Inner
@PostMapping("/inner/delInsurancePreByRegisterId")
public Boolean delInsurancePreByRegisterId(@RequestBody BaseSearchVO preVo) {
if (null == preVo || preVo.getRegisterId() == null){
return false;
}
return tEmployeeInsurancePreService.delInsurancePreByRegisterId(preVo);
}
/**
* @Author fxj
* @Description 拒绝入职更新商险待办数据
* @Date 11:13 2026/1/27
* @Param
* @return
**/
@Operation(description = "拒绝入职更新商险待办数据")
@Inner
@PostMapping("/inner/refuseInsurancePreByRegisterId")
public Boolean refuseInsurancePreByRegisterId(@RequestBody BaseSearchVO preVo) {
if (null == preVo || preVo.getRegisterId() == null){
return false;
}
return tEmployeeInsurancePreService.refuseInsurancePreByRegisterId(preVo);
}
/**
* 通过id查询商险待签订任务记录表
* @param registId
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/getInfoByRegistId" )
public R<TEmployeeInsurancePre> getInfoByRegistId(@RequestParam("registId" ) String registId) {
return tEmployeeInsurancePreService.getInfoByRegistId(registId);
}
}
......@@ -15,6 +15,7 @@ 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.insurances.constants.InsurancesConstants;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceOperate;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceDetailService;
......@@ -94,6 +95,21 @@ public class TInsuranceDetailController {
return R.ok(tInsuranceDetailService.getInsuranceListPage(page, param, mId));
}
/**
* @Author fxj
* @Description
* @Date 11:55 2026/1/27
* @Param
* @return
**/
@Operation(summary = "投保页查询待缴费金额", description = "投保分页查询")
@PostMapping("/getInsuranceListPagePaymentMoney")
public R<Double> getInsuranceListPagePaymentMoney(@RequestBody InsuranceListParam param,
@RequestParam(required = false) String mId) {
param.setPaymentStatus(CommonConstants.ZERO_STRING);
return R.ok(tInsuranceDetailService.getInsuranceListPagePaymentMoney(param, mId));
}
/**
* 投保不分页查询
*
......@@ -788,7 +804,12 @@ public class TInsuranceDetailController {
@SysLog("更新商险收款状态--EKP调用接口")
@PostMapping("/updateInsuranceSettleStatus")
public R updateInsuranceSettleStatus(@RequestBody EkpStatusParamVo vo) {
return tInsuranceDetailService.updateInsuranceSettleStatus(vo);
if (null != vo && "0".equals(vo.getCallBackFlag())){
//收款结算单退单或款项撤销处理逻辑
return tInsuranceDetailService.callBackInsuranceBuyHandleStatus(vo);
}else {
return tInsuranceDetailService.updateInsuranceSettleStatus(vo);
}
}
/**
......@@ -955,4 +976,76 @@ public class TInsuranceDetailController {
return tInsuranceDetailService.getInsurancesStatusByClose(paramVo);
}
/**
* @Author fxj
* @Description 查询提前缴费的预估结算状态
* @Date 10:27 2026/1/21
* @Param
* @return
**/
@Operation(summary = "查询提前缴费的预估结算状态", description = "查询提前缴费的预估结算状态")
@GetMapping("/getSettleStatusFromEkp")
public R getSettleStatusFromEkp(@RequestParam String id) {
TInsuranceDetail detail = tInsuranceDetailService.getById(id);
if (detail == null) {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
}
return tInsuranceDetailService.getSettleStatusFromEkpInsuranceDetailAsso(detail.getId(),detail.getDefaultSettleId());
}
/**
* @Author fxj
* @Description 查询实缴的结算&支出状态
* @Date 10:27 2026/1/21
* @Param
* @return
**/
@Operation(summary = "查询实缴的结算&支出状态", description = "查询实缴的结算&支出状态")
@GetMapping("/getPaymentSettleStatusFromEkp")
public R getPaymentSettleStatusFromEkp(@RequestParam String id) {
TInsuranceDetail detail = tInsuranceDetailService.getById(id);
if (detail == null) {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
}
EkpSettleStatusVo vo = tInsuranceDetailService.getSettleStatusFromEkpInsuranceDetail(detail.getId(),detail.getDefaultSettleId());
if (null != vo){
return R.ok(vo);
}
return R.failed();
}
/**
* @Author fxj
* @Description 撤回 --待缴费状态的投保记录 可撤回
* @Date 10:33 2026/1/21
* @Param
* @return
**/
@Operation(summary = "撤回", description = "撤回")
@PostMapping("/callBack")
public R callBack(@RequestParam String id) {
TInsuranceDetail detail = tInsuranceDetailService.getById(id);
if (detail == null) {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
}
if (null != detail.getBuyHandleStatus() && CommonConstants.SIX_INT != detail.getBuyHandleStatus().intValue()){
return R.failed("请选择待缴费状态的投保记录!");
}
return tInsuranceDetailService.callBack(detail);
}
/**
* @Author fxj
* @Description 手动拉取缴费状态
* @Date 10:52 2026/1/21
* @Param
* @return
**/
@Operation(summary = "手动拉取缴费状态", description = "手动拉取缴费状态")
@PostMapping("/pullPaymentStatus")
public R pullPaymentStatus() {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
return tInsuranceDetailService.pullPaymentStatus(null,user );
}
}
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.ekp;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.EkpInsurancesInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -49,6 +50,24 @@ public interface EkpSettleMapper {
*/
EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String id);
/**
* @Author fxj
* @Description 从商险订单明细中获取当前保单的结算状态--提前缴费专用
* @Date 10:17 2026/1/21
* @Param
* @return
**/
EkpSettleStatusVo getSettleStatusFromEkpAsso(@Param("id")String id);
/**
* @Author fxj
* @Description 从商险订单明细中获取当前保单的结算状态--提前缴费专用
* @Date 10:17 2026/1/21
* @Param
* @return
**/
List<EkpSettleStatusVo> getSettleStatusFromEkpAssoByIds(@Param("ids")List<String> ids);
List<EkpInsuranceViewVo> selectSettleStatusBySettleNo(@Param("settleNo") String settleNo, @Param("payFlag") String payFlag);
List<EkpSocialViewVo> selectSocialViewStatusBySettleNo(@Param("settleNo") String settleNo,@Param("payFlag") String payFlag);
......@@ -63,4 +82,15 @@ public interface EkpSettleMapper {
EkpInsuranceDeptInfoVo getInsuranceEkpDeptInfo(@Param("deptNo") String deptNo);
void deleteEkpInsuranceDetail(@Param("id")String id);
List<EkpSettleStatusVo> getBalanceByInsuranceId(@Param("id")String id);
void deleteEkpInsuranceDetailAsso(@Param("id")String id);
void callBackBalance(@Param("id")String id);
void deleteEkpManagerInfo(@Param("id")String id);
void deleteEkpEkpRiskInfo(@Param("id")String id);
}
......@@ -31,6 +31,8 @@ public interface TInsuranceDetailMapper extends BaseMapper<TInsuranceDetail> {
*/
IPage<InsuranceListVO> getInsuranceListPage(Page<InsuranceListVO> page, @Param("param") InsuranceListParam param);
Double getInsuranceListPagePaymentMoney(@Param("param") InsuranceListParam param);
/**
* 投保不分页查询
*
......
......@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.ekp;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.EkpInsurancesInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
......@@ -70,4 +71,19 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> {
*/
List<EkpSocialViewVo> selectSalarylViewBySettleNo(String settleNo,String payFlag);
EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetailAsso(String id);
List<EkpSettleStatusVo> getSettleStatusFromEkpAssoByIds(List<String> ids);
void deleteEkpInsuranceDetail(String id);
void deleteEkpManagerInfo(String id);
void deleteEkpEkpRiskInfo(String id);
List<EkpSettleStatusVo> getBalanceByInsuranceId(String id);
void deleteEkpInsuranceDetailAsso(String id);
void callBackBalance(String id);
}
......@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.ekp.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.EkpInsurancesInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.ekp.EkpSettleMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.ekp.EkpSettleService;
......@@ -123,4 +124,60 @@ public class EkpSettleServiceImpl implements EkpSettleService {
public Class<TInsuranceTypeRate> getEntityClass() {
return null;
}
@Override
public EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetailAsso(String id) {
return ekpSettleMapper.getSettleStatusFromEkpAsso(id);
}
@Override
public List<EkpSettleStatusVo> getSettleStatusFromEkpAssoByIds(List<String> ids) {
return ekpSettleMapper.getSettleStatusFromEkpAssoByIds(ids);
}
@Override
public void deleteEkpInsuranceDetail(String id) {
//删除商险明细数据
ekpSettleMapper.deleteEkpInsuranceDetail(id);
}
@Override
public void deleteEkpManagerInfo(String id) {
//删除管理费明细数据
ekpSettleMapper.deleteEkpManagerInfo(id);
}
@Override
public void deleteEkpEkpRiskInfo(String id) {
//删除风险金明细数据
ekpSettleMapper.deleteEkpEkpRiskInfo(id);
}
@Override
public List<EkpSettleStatusVo> getBalanceByInsuranceId(String id) {
return ekpSettleMapper.getBalanceByInsuranceId(id);
}
/**
* @Author fxj
* @Description 见费出单直接删除实缴及实缴与预估的差额
* @Date 17:28 2026/1/21
* @Param
* @return
**/
@Override
public void deleteEkpInsuranceDetailAsso(String id) {
ekpSettleMapper.deleteEkpInsuranceDetailAsso(id);
}
/**
* @Author fxj
* @Description 见费出单直接删除实缴与预估的差额
* @Date 15:45 2026/1/22
* @Param
* @return
**/
@Override
public void callBackBalance(String id) {
ekpSettleMapper.callBackBalance(id);
}
}
......@@ -23,6 +23,18 @@ public interface TBusinessOperateService extends IService<TBusinessOperate> {
*/
<T> TBusinessOperate saveModificationRecord(String businessId, T oldInfo, T newInfo, String remark);
/**
* 保存修改记录
*
* @author licancan
* @param businessId 业务表主键
* @param oldInfo 老的实体类
* @param newInfo 新的实体类
* @param remark 备注
* @return {@link TBusinessOperate}
*/
<T> TBusinessOperate saveModificationRecord(String businessId, T oldInfo, T newInfo, String remark,String userName);
/**
* 根据业务主键获取操作记录
*
......
......@@ -7,6 +7,7 @@ import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.EmployeeRegistrationPre;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
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.insurances.entity.TEmployeeInsurancePre;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
......@@ -131,4 +132,10 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc
**/
List<InsuranceAutoParam> getInsuranceAutoParamList(List<InsuranceAddParam> addParamList, List<InsuranceBatchParam> batchParamList
, List<InsuranceReplaceParam> replaceParamList);
Boolean delInsurancePreByRegisterId(BaseSearchVO preVo);
Boolean refuseInsurancePreByRegisterId(BaseSearchVO preVo);
R<TEmployeeInsurancePre> getInfoByRegistId(String registId);
}
......@@ -489,6 +489,8 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
DeptSettleVo deptYgGetSettleStatusFromEkpInsuranceDetail(String detailId, String defaultSettleId);
EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String detailId, String settleId);
/**
* @param changeDeptVo
* @Description: ekp费用划转,商险划转项目
......@@ -600,4 +602,13 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
BaseSearchVO getInsurancesStatusByClose(BaseSearchVO paramVo);
R getSettleStatusFromEkpInsuranceDetailAsso(String id,String settleId);
R callBack(TInsuranceDetail detail);
R pullPaymentStatus(String idStr,YifuUser user );
R callBackInsuranceBuyHandleStatus(EkpStatusParamVo vo);
Double getInsuranceListPagePaymentMoney(InsuranceListParam param, String mId);
}
......@@ -67,6 +67,31 @@ public class TBusinessOperateServiceImpl extends ServiceImpl<TBusinessOperateMap
return null;
}
@Override
public <T> TBusinessOperate saveModificationRecord(String businessId, T oldInfo, T newInfo, String remark,String userName) {
try{
//比较记录不影响业务逻辑,用try套住
//比较差异
String differenceKey = HrEquator.comparisonValue(oldInfo, newInfo);
//如果有差异保存差异
if(!Common.isEmpty(differenceKey)){
TBusinessOperate operate = new TBusinessOperate();
operate.setBusinessId(businessId);
operate.setCreateTime(LocalDateTime.now());
operate.setOldInfo(JSON.toJSONString(oldInfo,features));
operate.setNewInfo(JSON.toJSONString(newInfo,features));
operate.setDifferenceInfo(differenceKey);
operate.setRemark(remark);
operate.setCreateName(userName);
baseMapper.insert(operate);
return operate;
}
}catch (Exception e){
log.error(JSON.toJSON(oldInfo)+"插入修改记录报错>>>",e);
}
return null;
}
/**
* 根据业务主键获取操作记录
*
......
......@@ -21,6 +21,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.LocalDateTimeUtils;
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.dapr.util.ArchivesDaprUtil;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
......@@ -299,10 +300,10 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
).collect(Collectors.toList());
if (autoAddParamList.isEmpty()) {
LambdaUpdateWrapper<TEmployeeInsurancePre> updateWrapper = new LambdaUpdateWrapper<>();
/*LambdaUpdateWrapper<TEmployeeInsurancePre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(TEmployeeInsurancePre::getId,pushIdList)
.set(TEmployeeInsurancePre::getProcessStatus, CommonConstants.THREE_STRING);
this.update(updateWrapper);
this.update(updateWrapper);*/
} else {
// 将 autoAddParamList 中的id等信息提取出来,放入一个 Set 中
Set<String> autoAddParamSet = new HashSet<>();
......@@ -406,11 +407,11 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
updateList.add(updatePre);
} else {
// 派单成功的
// 派单成功的 在各个口禅
//nonExistingList.add(pre)
updatePre.setProcessStatus(CommonConstants.THREE_STRING);
updateList.add(updatePre);
/*updatePre.setProcessStatus(CommonConstants.THREE_STRING);
updateList.add(updatePre)*/;
}
}
if (!updateList.isEmpty()) {
......@@ -676,6 +677,7 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
.eq(TInsuranceDetail::getIsOverdue, CommonConstants.ZERO_INT)
.eq(TInsuranceDetail::getBuyHandleStatus, CommonConstants.THREE_INT)
.or().eq(TInsuranceDetail::getBuyHandleStatus, CommonConstants.TWO_INT)
.or().eq(TInsuranceDetail::getBuyHandleStatus, CommonConstants.SIX_INT)
.or().eq(TInsuranceDetail::getBuyHandleStatus, CommonConstants.ONE_INT)));
return count == preVo.getExitInsuranceInfoList().size();
}
......@@ -812,6 +814,7 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
).collect(Collectors.toList());
}
private InsuranceAutoParam convertAddParam(InsuranceAddParam addParam) {
InsuranceAutoParam autoParam = new InsuranceAutoParam();
// 复制InsuranceAddParam的字段
......@@ -986,5 +989,32 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
vo.setPreList(preList);
return vo;
}
/**
* @Author fxj
* @Description 通过如入职ID删除商险待办数据
* @Date 20:31 2026/1/22
* @Param
* @return
**/
@Override
public Boolean delInsurancePreByRegisterId(BaseSearchVO preVo) {
return this.remove(Wrappers.<TEmployeeInsurancePre>query().lambda()
.eq(TEmployeeInsurancePre::getRegisterId, preVo.getRegisterId()));
}
@Override
public Boolean refuseInsurancePreByRegisterId(BaseSearchVO preVo) {
LambdaUpdateWrapper<TEmployeeInsurancePre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TEmployeeInsurancePre::getRegisterId, preVo.getRegisterId());
updateWrapper.set(TEmployeeInsurancePre::getIsRefuse, CommonConstants.ZERO_STRING);
return this.update(updateWrapper);
}
@Override
public R<TEmployeeInsurancePre> getInfoByRegistId(String registId) {
if (Common.isEmpty(registId)){
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
return R.ok(baseMapper.selectOne(Wrappers.<TEmployeeInsurancePre>query().lambda()
.notIn(TEmployeeInsurancePre::getProcessStatus, Arrays.asList("0","1","2","5"))
.eq(TEmployeeInsurancePre::getRegisterId, registId).last(CommonConstants.LAST_ONE_SQL)));
}
}
......@@ -379,10 +379,10 @@ public class TInsurancePreRenewDetailServiceImpl extends ServiceImpl<TInsuranceP
List<InsuranceAutoParam> autoAddParamList = this.getInsuranceAutoParamList(paramList, batchParamList, replaceParamList);
if (autoAddParamList.isEmpty()) {
LambdaUpdateWrapper<TInsurancePreRenewDetail> updateWrapper = new LambdaUpdateWrapper<>();
/*LambdaUpdateWrapper<TInsurancePreRenewDetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(TInsurancePreRenewDetail::getId, pushIdList)
.set(TInsurancePreRenewDetail::getProcessStatus, CommonConstants.THREE_STRING);
this.update(updateWrapper);
this.update(updateWrapper);*/
} else {
// 将 autoAddParamList 中的id等信息提取出来,放入一个 Set 中
Set<String> autoAddParamSet = new HashSet<>();
......@@ -465,8 +465,8 @@ public class TInsurancePreRenewDetailServiceImpl extends ServiceImpl<TInsuranceP
} else {
// 派单成功的
updatePre.setProcessStatus(CommonConstants.THREE_STRING);
updateList.add(updatePre);
/*updatePre.setProcessStatus(CommonConstants.THREE_STRING);
updateList.add(updatePre);*/
}
}
if (!updateList.isEmpty()) {
......
......@@ -93,6 +93,10 @@ public class TInsuranceTypeServiceImpl extends ServiceImpl<TInsuranceTypeMapper,
if(!ValidityUtil.validate50(receiptUnitName)){
return R.failed("收款单位名称格式不正确");
}
if (!CommonConstants.ZERO_STRING.equals(insuranceType.getIsJfcd())
&& !CommonConstants.ONE_STRING.equals(insuranceType.getIsJfcd())){
return R.failed("是否见费出单必填且只能为是或否");
}
LambdaQueryWrapper<TInsuranceCompany> companyWrapper = new LambdaQueryWrapper<>();
companyWrapper.eq(TInsuranceCompany::getId,companyId).eq(TInsuranceCompany::getDeleteFlag, CommonConstants.ZERO_INT);
TInsuranceCompany insuranceCompany = tInsuranceCompanyService.getOne(companyWrapper);
......@@ -158,6 +162,10 @@ public class TInsuranceTypeServiceImpl extends ServiceImpl<TInsuranceTypeMapper,
if(Common.isEmpty(byId) || byId.getDeleteFlag() == CommonConstants.ONE_INT){
return R.failed("当前险种信息不存在或已被删除");
}
if (!CommonConstants.ZERO_STRING.equals(insuranceType.getIsJfcd())
&& !CommonConstants.ONE_STRING.equals(insuranceType.getIsJfcd())){
return R.failed("是否见费出单必填且只能为是或否");
}
if(byId.getName().equals(insuranceType.getName())){
insuranceType.setUpdateBy(user.getId());
insuranceType.setUpdateTime(LocalDateTime.now());
......
......@@ -63,13 +63,63 @@
<select id="getSettleStatusFromEkpInsuranceDetail" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSettleStatusVo">
select
fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus
fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus,fd_3adfe6ef5dfaac paymentStatus
from
ekp_insurances_info
where
fd_3b0a5743acab7e = #{id} and fd_3adfe6af71a1cc = '实缴' limit 1
fd_3b0a5743acab7e like CONCAT(#{id},'%') and fd_3adfe6af71a1cc = '实缴' limit 1
</select>
<select id="getSettleStatusFromEkpAsso" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSettleStatusVo">
select
fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus,fd_3adfe6ef5dfaac paymentStatus,fd_3b0a5743acab7e detailId
from
ekp_insurances_info
where
fd_3b0a5743acab7e = #{id} and fd_3adfe6af71a1cc = '预估' and fd_jfcd='是' limit 1
</select>
<select id="getSettleStatusFromEkpAssoByIds" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSettleStatusVo">
select
fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus,fd_3adfe6ef5dfaac paymentStatus,fd_3b0a5743acab7e detailId,update_time_status statusUpdateTime
from
ekp_insurances_info
where
fd_3adfe6af71a1cc = '预估' and fd_jfcd='是'
<if test="ids != null and ids.size() > 0">
and fd_3b0a5743acab7e in
<foreach item="id" index="index" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<select id="getBalanceByInsuranceId" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSettleStatusVo">
select
fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus,fd_3adfe6ef5dfaac paymentStatus,fd_3b0a5743acab7e detailId,fd_3adfe6e30f2a3c paymentBalance
from
ekp_insurances_info
where
fd_3adfe6af71a1cc = '差额' and fd_jfcd='是' and
fd_3b0a5743acab7e like CONCAT(#{id},'%')
</select>
<delete id="deleteEkpInsuranceDetail">
delete from ekp_insurances_info where fd_3b0a5743acab7e=#{id} and fd_jfcd='是' and fd_3adfe6af71a1cc = '预估'
</delete>
<delete id="deleteEkpInsuranceDetailAsso">
delete from ekp_insurances_info where fd_3b0a5743acab7e like CONCAT(#{id},'%') and fd_jfcd='是' and (fd_3adfe6af71a1cc = '差额' or fd_3adfe6af71a1cc = '实缴')
</delete>
<delete id="callBackBalance">
delete from ekp_insurances_info where fd_3b0a5743acab7e like CONCAT(#{id},'%') and fd_jfcd='是' and fd_3adfe6af71a1cc = '差额'
</delete>
<delete id="deleteEkpManagerInfo">
delete from ekp_manager_info where fd_3b13dc864a3052 = #{id}
</delete>
<delete id="deleteEkpEkpRiskInfo">
delete from ekp_risk_info where fd_3b13db120a8224 = #{id}
</delete>
<select id="getDeptSettle" resultMap="BaseDeptResultMap">
select
<include refid="Base_Column_Dept"></include>
......
......@@ -107,6 +107,9 @@
</sql>
<sql id="tEmployeeInsurancePre_where">
<if test="tEmployeeInsurancePre != null">
<if test="tEmployeeInsurancePre.isRefuse != null and tEmployeeInsurancePre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tEmployeeInsurancePre.isRefuse}
</if>
<if test="tEmployeeInsurancePre.id != null and tEmployeeInsurancePre.id.trim() != ''">
AND a.id = #{tEmployeeInsurancePre.id}
</if>
......@@ -145,7 +148,7 @@
</foreach>
</if>
<if test="tEmployeeInsurancePre.customerUsername != null and tEmployeeInsurancePre.customerUsername.trim() != ''">
AND a.customer_username = #{tEmployeeInsurancePre.customerUsername}
AND a.customer_username like CONCAT('%',#{tEmployeeInsurancePre.customerUsername},'%')
</if>
<if test="tEmployeeInsurancePre.deptName != null and tEmployeeInsurancePre.deptName.trim() != ''">
AND a.dept_name like CONCAT('%',#{tEmployeeInsurancePre.deptName},'%')
......@@ -294,6 +297,7 @@
WHEN a.process_status ='4' THEN "投保中"
WHEN a.process_status ='5' THEN "投保退回"
WHEN a.process_status ='6' THEN "已完成"
WHEN a.process_status ='7' THEN "待缴费"
ELSE a.process_status END as process_status,
a.customer_username,
concat(DATE_FORMAT(a.policy_start,'%Y-%m-%d'),'-',DATE_FORMAT(a.policy_end,'%Y-%m-%d')) as policy_start_end,
......
......@@ -19,6 +19,7 @@
<result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
<result property="isAdress" column="IS_ADRESS" jdbcType="VARCHAR"/>
<result property="enable" column="ENABLE" jdbcType="VARCHAR"/>
<result property="isJfcd" column="IS_JFCD" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
......@@ -68,7 +69,7 @@
a.BANK_NAME as bankName,
a.BANK_NO as bankNo,
a.AGE_LIMIT as ageLimit,
a.IS_ADRESS as isAdress,a.ENABLE as enable
a.IS_ADRESS as isAdress,a.ENABLE as enable,a.IS_JFCD as isJfcd
from
t_insurance_type a,
t_insurance_company b
......@@ -91,6 +92,9 @@
<if test="insuranceType.enable != null and insuranceType.enable.trim() != ''">
and a.ENABLE = #{insuranceType.enable}
</if>
<if test="insuranceType.isJfcd != null and insuranceType.isJfcd.trim() != ''">
and a.IS_JFCD = #{insuranceType.isJfcd}
</if>
ORDER BY a.CREATE_TIME DESC
</select>
......@@ -102,7 +106,7 @@
a.BANK_NO as bankNo,
a.RECEIPT_UNIT_NAME as receiptUnitName,
if(a.AGE_LIMIT = '0','限制(16-70岁)','无') as ageLimit,
if(a.IS_ADRESS = '0','是',if(ifnull(a.IS_ADRESS,3) = 3,'','否')) as isAdress,a.ENABLE as enable
if(a.IS_ADRESS = '0','是',if(ifnull(a.IS_ADRESS,3) = 3,'','否')) as isAdress,a.ENABLE as enable,a.IS_JFCD as isJfcd
from
t_insurance_type a,
t_insurance_company b
......@@ -122,6 +126,9 @@
<if test="insuranceType.enable != null and insuranceType.enable.trim() != ''">
and a.ENABLE = #{insuranceType.enable}
</if>
<if test="insuranceType.isJfcd != null and insuranceType.isJfcd.trim() != ''">
and a.IS_JFCD = #{insuranceType.isJfcd}
</if>
ORDER BY a.CREATE_TIME DESC
</select>
......@@ -136,7 +143,7 @@
a.BANK_NAME as bankName,
a.BANK_NO as bankNo,
a.AGE_LIMIT as ageLimit,
a.IS_ADRESS as isAdress,a.ENABLE as enable
a.IS_ADRESS as isAdress,a.ENABLE as enable,a.IS_JFCD as isJfcd
from
t_insurance_type a,
t_insurance_company b
......
......@@ -59,6 +59,7 @@
<result property="policyStartNew" column="POLICY_START_NEW" jdbcType="DATE"/>
<result property="policyEndNew" column="POLICY_END_NEW" jdbcType="DATE"/>
<result property="policyEffectNew" column="POLICY_EFFECT_NEW" jdbcType="DATE"/>
<result property="customerUsername" column="CUSTOMER_USERNAME" jdbcType="VARCHAR"/>
</resultMap>
<!-- 商险续签待办专用 -->
......@@ -111,6 +112,7 @@
b.error_time
,DATE_FORMAT(b.expected_collection_time,'%Y-%m-%d %H:%i') expected_collection_time
,b.INSURANCES_ID_NEW
,b.CUSTOMER_USERNAME
</sql>
<sql id="tInsuranceAlert_where">
<if test="tInsuranceAlert != null">
......@@ -249,6 +251,9 @@
<if test="tInsuranceAlert.haveWorkDay != null and tInsuranceAlert.haveWorkDay.trim() != ''">
AND a.HAVE_WORK_DAY = #{tInsuranceAlert.haveWorkDay}
</if>
<if test="tInsuranceAlert.customerUsername != null and tInsuranceAlert.customerUsername.trim() != ''">
AND b.CUSTOMER_USERNAME like CONCAT('%',#{tInsuranceAlert.customerUsername},'%')
</if>
<if test="tInsuranceAlert.deptNoList != null and tInsuranceAlert.deptNoList.size > 0">
AND a.DEPT_NO in
<foreach item="idStr" index="index" collection="tInsuranceAlert.deptNoList" open="(" separator=","
......@@ -421,7 +426,8 @@
,'临期' isOverdue,a.HAVE_WORK_DAY,'否' EXPIRE_IGNORE_FLAG,a.CREATE_NAME,a.ALERTER
,DATE_FORMAT(b.expected_collection_time,'%Y-%m-%d %H:%i') expected_collection_time
,case b.process_status when '0' then '待确认' when '1' then '待派单' when '2' then '派单失败'
when '3' then '待投保' when '4' then '投保中' when '5' then '投保退回' when '6' then '已投保' else '-' end process_status
when '3' then '待投保' when '4' then '投保中' when '5' then '投保退回' when '6' then '已投保' when '7' then '待缴费' else '-' end process_status
,b.CUSTOMER_USERNAME
FROM t_insurance_alert a
JOIN t_insurance_pre_renew_detail b ON a.INSURANCES_PRE_RENEW_DETAIL_ID = b.ID
<where>
......
......@@ -437,6 +437,16 @@ public class SysHouseHoldInfo extends BaseEntity {
@ExcelProperty("医保推送类型")
private String isSingleYsdPush;
/**
* 推送时,医保完成后才推送社保,默认0否
*/
@ExcelAttribute(name = "根据医保结果办理养工失" )
@Schema(description ="根据医保结果办理养工失")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("根据医保结果办理养工失")
private String isYsdOkPushYgs;
/**
* 户与失败原因关联list
*/
......
......@@ -677,4 +677,10 @@ public class TDispatchInfoPre extends BaseEntity {
@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 否
*/
@Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse;
}
......@@ -72,5 +72,14 @@ public class TSocialFreindPushAndGet {
@ExcelProperty("创建人姓名")
@Schema(description = "创建人姓名")
private String createUserName;
/**
* 创建人ID
*/
@ExcelAttribute(name = "创建人ID", isNotEmpty = true, errorInfo = "创建人ID不能为空", maxLength = 64)
@NotBlank(message = "创建人ID不能为空")
@Length(max = 64, message = "创建人ID不能超过64个字符")
@ExcelProperty("创建人ID")
@Schema(description = "创建人ID")
private String createBy;
}
......@@ -93,5 +93,13 @@ public class TSocialFriendReduceSet {
@ExcelProperty("类型")
@Schema(description = "类型1:社保;2:医保;3池州特殊减员映射")
private String mvpType;
/**
* 户名称(可以为空)
*/
@ExcelAttribute(name = "户名称", maxLength = 50)
@Length(max = 50, message = "户名称")
@ExcelProperty("户名称")
@Schema(description = "户名称")
private String huName;
}
......@@ -204,7 +204,7 @@ public class SociaFriendYgsAddVo implements Serializable {
@ExcelProperty("是否强制停保" )
private String sfqztb;
// 池州特殊减员映射1:减员原因
// 池州特殊减员映射1:减员原因(用作花名册)
@ExcelProperty("池州特殊减员映射1:减员原因")
private String chiZhouTbyy;
// 池州特殊减员映射2:劳动用工备案解除/终止原因
......
......@@ -233,6 +233,22 @@ public class TDispatchInfoController {
return new R<>(tDispatchInfoService.getTSocialSoldierHandlePage(page,tDispatchInfo));
}
/**
* @Description: 获取税友自动化办理推送的条数,限制【社保办理权限】菜单的办理人权限
* @Author: hgw
* @Date: 2026-01-21 09点16分
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.baomidou.mybatisplus.core.metadata.IPage < com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo>>
**/
@Operation(description = "获取税友自动化办理推送的条数,限制【社保办理权限】菜单的办理人权限")
@GetMapping("/countSocialFriendByAuth")
public R<Long> countSocialFriendByAuth() {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed("请登录!");
}
return new R<>(tDispatchInfoService.countSocialFriendByAuth(user.getId()));
}
/**
* @Description: 简单分页查询--自动化办理查询
* @Author: hgw
......
......@@ -13,6 +13,7 @@ import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
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.insurances.entity.TEmployeeInsurancePre;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfoPre;
import com.yifu.cloud.plus.v1.yifu.social.service.TDispatchInfoPreService;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreSearchVo;
......@@ -56,7 +57,7 @@ public class TDispatchInfoPreController {
//typeSuB 0 社保 1 公积金
if (Common.isEmpty(tDispatchInfoPre.getTypeSub())){
tDispatchInfoPre.setTypeSub(CommonConstants.ZERO_STRING);
}else if (Common.isEmpty(tDispatchInfoPre.getTypeSub())){
}else if (!Common.isEmpty(tDispatchInfoPre.getTypeSub())){
tDispatchInfoPre.setTypeSub(tDispatchInfoPre.getTypeSub());
}
return new R<>(tDispatchInfoPreService.getTDispatchInfoPrePage(page, tDispatchInfoPre));
......@@ -358,8 +359,8 @@ public class TDispatchInfoPreController {
@Operation(description = "删除非流程中的社保待购买数据")
@Inner
@PostMapping("/deleteUnProcessSocialPreInfo")
public void deleteUnProcessSocialPreInfo(@RequestBody String id) {
tDispatchInfoPreService.deleteUnProcessSocialPreInfo(id);
public Boolean deleteUnProcessSocialPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.deleteUnProcessSocialPreInfo(id);
}
/**
......@@ -372,10 +373,22 @@ public class TDispatchInfoPreController {
@Operation(description = "删除非流程中的公积金待购买数据")
@Inner
@PostMapping("/deleteUnProcessFundPreInfo")
public void deleteUnProcessFundPreInfo(@RequestBody String id) {
tDispatchInfoPreService.deleteUnProcessFundPreInfo(id);
public Boolean deleteUnProcessFundPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.deleteUnProcessFundPreInfo(id);
}
/**
* @Author fxj
* @Description 拒绝入职更新非流程中的公积金待购买数据
* @Date 11:09 2026/1/27
* @Param
* @return
**/
@Operation(description = "拒绝入职更新非流程中的公积金待购买数据")
@Inner
@PostMapping("/updateRefuseFundPreInfo")
public Boolean updateRefuseFundPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateRefuseFundPreInfo(id);
}
/**
* 派单当日9点统一推送确认信息 公积金可以通用
......@@ -402,4 +415,29 @@ public class TDispatchInfoPreController {
public void pushDisConfrimSocial() {
tDispatchInfoPreService.pushDisConfrimSocial();
}
/**
* 通过id查询社保或公积金待签订任务记录表
* @param registId
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/getInfoByRegistId" )
public R<TDispatchInfoPre> getInfoByRegistId(@RequestParam("registId" ) String registId, @RequestParam("type" ) String type) {
return tDispatchInfoPreService.getInfoByRegistId(registId,type);
}
/**
* @Author fxj
* @Description 拒绝入职更新非流程中的社保待购买数据
* @Date 11:04 2026/1/27
* @Param
* @return
**/
@Operation(description = "拒绝入职更新非流程中的社保待购买数据")
@Inner
@PostMapping("/updateRefuseSocialPreInfo")
public Boolean updateRefuseSocialPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateRefuseSocialPreInfo(id);
}
}
......@@ -242,4 +242,16 @@ public class TIncomeController {
public Boolean updateSocialSettleStatus(@RequestBody List<EkpInsuranceViewVo> viewVo) {
return tIncomeService.updateIncomeSettleStatus(viewVo);
}
/**
* 通过id删除收入明细表
*
* @param tIncomeDetail
* @return R
*/
@Inner
@PostMapping("/inner/deleteById")
public void deleteMainById(@RequestBody TIncomeDetail tIncomeDetail) {
tIncomeService.removeById(tIncomeDetail.getId());
}
}
......@@ -74,7 +74,7 @@ public class TIncomeDetailController {
* @return R
*/
@Inner
@PostMapping("/deleteById")
@PostMapping("/inner/deleteById")
public void deleteById(@RequestBody TIncomeDetail tIncomeDetail) {
tIncomeDetailService.removeById(tIncomeDetail.getId());
}
......
......@@ -84,7 +84,7 @@ public class TSocialFriendController {
@SysLog("1定时任务推送税友")
@Inner
public R<String> doPushFriendTest() {
return tSocialFriendPushService.pushFriend(null);
return tSocialFriendPushService.pushFriend(null, null, CommonConstants.ONE_INT, null);
}
@Operation(description = "2定时任务获取税友")
......@@ -102,12 +102,12 @@ public class TSocialFriendController {
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation(description = "主动推送税友")
@GetMapping("/doPushFriendByActive")
@PostMapping("/doPushFriendByActive")
@SysLog("主动推送税友")
public R<String> doPushFriendActive() {
public R<String> doPushFriendActive(@RequestBody List<String> dispatchIdList) {
if (atomicPush.incrementAndGet() <= 1) {
try {
R<String> failed = getCore(CommonConstants.ONE_INT);
R<String> failed = getCore(CommonConstants.ONE_INT, dispatchIdList);
if (failed != null) return failed;
} finally {
atomicPush.decrementAndGet();
......@@ -126,7 +126,7 @@ public class TSocialFriendController {
* @Date: 2025/3/18 17:27
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
private R<String> getCore(int type) {
private R<String> getCore(int type, List<String> dispatchIdList) {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getNickname())) {
return R.failed("请先登录!");
......@@ -136,16 +136,18 @@ public class TSocialFriendController {
LocalDateTime now = LocalDateTime.now();
// 计算10分钟前的时间
LocalDateTime tenMinutesAgo = now.minusMinutes(10);
LocalDateTime time = tSocialFreindPushAndGetService.getMaxTimeByType(type);
LocalDateTime time = tSocialFreindPushAndGetService.getMaxTimeByType(type, user.getId());
if (Common.isEmpty(time) || time.isBefore(tenMinutesAgo)) {
TSocialFreindPushAndGet info = new TSocialFreindPushAndGet();
info.setType(type);
info.setCreateTime(now);
info.setCreateUserName(user.getNickname());
info.setCreateBy(user.getId());
tSocialFreindPushAndGetService.save(info);
if (type == CommonConstants.ONE_INT) {
// isAuto 参数:是否自动,自动要查户配置。手动可推送养工失。 手动的都推送(大部分都是推送,芜湖要先推送医保办理成功后才推送社保)
//doJointFriendTask.pushFriendByAsync()
tSocialFriendPushService.pushFriend(null);
tSocialFriendPushService.pushFriend(null, dispatchIdList, CommonConstants.ZERO_INT, user.getId());
} else {
//doJointFriendTask.getInfoByRequestIdByAsync()
tSocialFriendService.getInfoByRequestId();
......@@ -174,7 +176,7 @@ public class TSocialFriendController {
public R<String> doGetFriendByActive() {
if (atomicGet.incrementAndGet() <= 1) {
try {
R<String> failed = getCore(CommonConstants.TWO_INT);
R<String> failed = getCore(CommonConstants.TWO_INT, null);
if (failed != null) return failed;
} finally {
atomicGet.decrementAndGet();
......
......@@ -51,6 +51,8 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoExportVo>
**/
List<TDispatchInfoExportVo> exportDispatch(@Param("tDispatchInfo") TDispatchInfoSearchVo tDispatchInfo);
// 派单导出count
long exportDispatchCount(@Param("tDispatchInfo") TDispatchInfoSearchVo tDispatchInfo);
/**
* @Description: 派单审核导出
......@@ -123,6 +125,12 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
IPage<TSocialSoldierPageVo> getTSocialSoldierHandlePage(Page<TSocialSoldierPageVo> page,
@Param("tDispatchInfo") SocialHandleSearchVo tDispatchInfo,
@Param("idsStr") List<String> idsStr);
/**
* @Description: 获取税友自动化办理推送的条数,限制【社保办理权限】菜单的办理人权限
* @Author: hgw
* @Date: 2026/1/21
**/
Long countSocialFriendByAuth(@Param("userId") String userId);
/**
* @Description: 社保士兵列表查询
......
......@@ -54,4 +54,6 @@ public interface TDispatchInfoPreMapper extends BaseMapper<TDispatchInfoPre> {
long selectFundCount(@Param("tDispatchInfoPre") TDispatchInfoPreSearchVo searchVo);
long selectSocialCount(@Param("tDispatchInfoPre") TDispatchInfoPreSearchVo searchVo);
}
......@@ -39,5 +39,5 @@ public interface TSocialFreindPushAndGetMapper extends BaseMapper<TSocialFreindP
* @Date: 2025/3/18 15:57
* @return: java.time.LocalDateTime
**/
LocalDateTime getMaxTimeByType(@Param("type") Integer type);
LocalDateTime getMaxTimeByType(@Param("type") Integer type, @Param("createUserId") String createUserId);
}
......@@ -39,7 +39,8 @@ public interface TSocialFriendMapper extends BaseMapper<TSocialInfo> {
* @Author hgw
* @Date 2024-5-10 21:16:41
**/
List<SociaFriendYgsAddVo> getSocialSoldierYgsAddVoList(@Param("idsStr") List<String> idsStr);
List<SociaFriendYgsAddVo> getSocialSoldierYgsAddVoList(@Param("idsStr") List<String> idsStr, @Param("pushIdsStr") List<String> pushIdsStr
, @Param("isAuto") Integer isAuto, @Param("userId") String userId);
/**
* 社保士兵养工失减少模板
......@@ -47,7 +48,8 @@ public interface TSocialFriendMapper extends BaseMapper<TSocialInfo> {
* @Author hgw
* @Date 2024-5-10 21:16:41
**/
List<SociaFriendYgsAddVo> getSocialSoldierYgsReduceVoList(@Param("idsStr") List<String> idsStr);
List<SociaFriendYgsAddVo> getSocialSoldierYgsReduceVoList(@Param("idsStr") List<String> idsStr, @Param("pushIdsStr") List<String> pushIdsStr
, @Param("isAuto") Integer isAuto, @Param("userId") String userId);
/**
* 社保士兵医生大增加模板
......@@ -55,7 +57,8 @@ public interface TSocialFriendMapper extends BaseMapper<TSocialInfo> {
* @Author hgw
* @Date 2024-5-10 21:16:41
**/
List<SociaFriendYgsAddVo> getSocialSoldierYsdAddVoList(@Param("idsStr") List<String> idsStr);
List<SociaFriendYgsAddVo> getSocialSoldierYsdAddVoList(@Param("idsStr") List<String> idsStr, @Param("pushIdsStr") List<String> pushIdsStr
, @Param("isAuto") Integer isAuto, @Param("userId") String userId);
/**
* 社保士兵医生大减少模板
......@@ -63,8 +66,11 @@ public interface TSocialFriendMapper extends BaseMapper<TSocialInfo> {
* @Author hgw
* @Date 2024-5-10 21:16:41
**/
List<SociaFriendYgsAddVo> getSocialSoldierYsdReduceVoList(@Param("idsStr") List<String> idsStr);
List<SociaFriendYgsAddVo> getSocialSoldierYsdReduceVoList(@Param("idsStr") List<String> idsStr, @Param("pushIdsStr") List<String> pushIdsStr
, @Param("isAuto") Integer isAuto, @Param("userId") String userId);
// 当前徽州区的户名配置表,后续可扩展类型,存其他对应表
List<String> getSpecialHuName();
}
......@@ -77,9 +77,9 @@ public interface TDispatchInfoPreService extends IService<TDispatchInfoPre> {
EmployeePreSocialListVo getSocialPreInfoStatus(String id);
void deleteUnProcessSocialPreInfo(String id);
Boolean deleteUnProcessSocialPreInfo(String id);
void deleteUnProcessFundPreInfo(String id);
Boolean deleteUnProcessFundPreInfo(String id);
/**
* 社保待购买信息单个/批量发起签署任务
......@@ -106,4 +106,10 @@ public interface TDispatchInfoPreService extends IService<TDispatchInfoPre> {
R confirmFund(List<String> idList);
Boolean getFundPreStatus(String id);
R<TDispatchInfoPre> getInfoByRegistId(String registId,String type);
Boolean updateRefuseSocialPreInfo(String id);
Boolean updateRefuseFundPreInfo(String id);
}
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