Commit 3f5ebec7 authored by hongguangwu's avatar hongguangwu

Merge branch 'develop'

parents cc688308 3132739c
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre; import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -100,6 +101,9 @@ public class EmployeeRegistrationPre extends BaseEntity { ...@@ -100,6 +101,9 @@ public class EmployeeRegistrationPre extends BaseEntity {
@Schema(description = "档案所在地-市编号") @Schema(description = "档案所在地-市编号")
private String cityCode; private String cityCode;
@Schema(description = "商险是否已购买 0 是 1 否")
private String insuranceIsBuy;
@Schema(description = "档案所在地-县编号") @Schema(description = "档案所在地-县编号")
@TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(updateStrategy = FieldStrategy.IGNORED)
private String townCode; private String townCode;
...@@ -126,6 +130,10 @@ public class EmployeeRegistrationPre extends BaseEntity { ...@@ -126,6 +130,10 @@ public class EmployeeRegistrationPre extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private TEmployeeContractPre employeeContractPre; private TEmployeeContractPre employeeContractPre;
@Schema(description = "商险流程中信息集合")
@TableField(exist = false)
private List<TInsurancePreDetail> exitInsuranceInfoList;
@Schema(description = "附件集合") @Schema(description = "附件集合")
@TableField(exist = false) @TableField(exist = false)
private List<TAttaInfo> attaList; private List<TAttaInfo> attaList;
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* @Author fxj
* @Description 系统配置表
* @Date 9:38 2025/3/13
* @Param
* @return
**/
@Data
@TableName("sys_config")
@Schema(description = "系统配置表")
public class SysConfig {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 配置键
*/
@ExcelAttribute(name = "配置键", isNotEmpty = true, errorInfo = "配置键不能为空", maxLength = 32)
@NotBlank(message = "配置键不能为空")
@Length(max = 32, message = "配置键不能超过32个字符")
@ExcelProperty("配置键")
@Schema(description = "配置键")
private String configKey;
/**
* 配置值
*/
@ExcelAttribute(name = "配置值", isNotEmpty = true, errorInfo = "配置值不能为空")
@NotBlank(message = "配置值不能为空")
@ExcelProperty("配置值")
@Schema(description = "配置值")
private String configValue;
/**
* 配置值1
*/
@ExcelAttribute(name = "配置值1")
@ExcelProperty("配置值1")
@Schema(description = "配置值1")
private String configValue1;
/**
* 配置值2
*/
@ExcelAttribute(name = "配置值2")
@ExcelProperty("配置值2")
@Schema(description = "配置值2")
private String configValue2;
/**
* 备注
*/
@ExcelAttribute(name = "备注", maxLength = 255)
@Length(max = 255, message = "备注不能超过255个字符")
@ExcelProperty("备注")
@Schema(description = "备注")
private String remark;
}
...@@ -30,6 +30,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute; ...@@ -30,6 +30,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
/** /**
...@@ -574,4 +575,10 @@ public class TGzEmpInfo extends BaseEntity { ...@@ -574,4 +575,10 @@ public class TGzEmpInfo extends BaseEntity {
@Schema(description = "持卡人姓名") @Schema(description = "持卡人姓名")
private String accountName; private String accountName;
@Schema(description = "档案状态(0:已提交,1:暂存)")
private String empStatus;
@Schema(description = "档案提交时间")
private LocalDateTime submitTime;
} }
...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo; ...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -116,16 +117,26 @@ public class EmployeeRegistrationPreVo implements Serializable { ...@@ -116,16 +117,26 @@ public class EmployeeRegistrationPreVo implements Serializable {
@Schema(description = "更新人") @Schema(description = "更新人")
private String updateBy; private String updateBy;
@Schema(description = "商险是否已购买 0 是 1 否")
private String insuranceIsBuy;
@Schema(description = "身份证合集") @Schema(description = "身份证合集")
private List<String> idcardList; private List<String> idcardList;
@Schema(description = "商险待派单信息集合") @Schema(description = "商险待派单信息集合")
private List<TEmployeeInsurancePreVo> employeeInsurancePreVos; private List<TEmployeeInsurancePreVo> employeeInsurancePreVos;
@Schema(description = "商险流程中信息集合")
private List<TInsurancePreDetail> exitInsuranceInfoList;
@Schema(description = "合同待派单信息") @Schema(description = "合同待派单信息")
private TEmployeeContractPreVo employeeContractPreVos; private TEmployeeContractPreVo employeeContractPreVos;
@Schema(description = "附件集合") @Schema(description = "附件集合")
private List<TAttaInfoSaveVo> attaList; private List<TAttaInfoSaveVo> attaList;
@TableField(exist = false)
@Schema(description = "修改类型:1新增;2修改;3删除;4状态346为不可编辑")
private String modelType;
} }
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* HCM档案子Vo
* 不良记录
* @author chenyuxi
* @date 2025-08-08
*/
@Data
@ColumnWidth(30)
public class HcmArchiveBadRecordVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "发生时间")
private String happenDate;
@Schema(description = "不良记录描述")
private String remark;
@Schema(description = "身份证号")
private String empIdCard;
}
...@@ -60,13 +60,73 @@ public class HcmArchiveBasicVo implements Serializable { ...@@ -60,13 +60,73 @@ public class HcmArchiveBasicVo implements Serializable {
@Schema(description = "民族") @Schema(description = "民族")
private String nation; private String nation;
// 户籍所在地 // 户籍所在地
@Schema(description = "籍贯") @Schema(description = "籍贯(省+市+区)")
private String nativePlace; private String nativePlace;
@Schema(description = "政治面貌") @Schema(description = "政治面貌")
private String political; private String political;
// 通讯地址 // 通讯地址
@Schema(description = "联系地址") @Schema(description = "联系地址(省+市+区+详细地址)")
private String contactAddress; private String contactAddress;
// 1.7.14新增推送字段
@Schema(description = "手机号")
private String empPhone;
@Schema(description = "户籍所在地(省+市+区)")
private String householdPlace;
@Schema(description = "紧急联系人")
private String emergencyContactName;
@Schema(description = "紧急联系人与本人关系")
private String emergencyContactRelation;
@Schema(description = "紧急联系人电话")
private String emergencyContactPhone;
@Schema(description = "银行卡号")
private String bankNo;
@Schema(description = "开户行(总行)")
private String bankName;
@Schema(description = "社保户")
private String socialHouseholdName;
@Schema(description = "最高学历字典值")
private String educationValue;
// 户口性质
@Schema(description = "户口类型字典值")
private String residentTypeValue;
@Schema(description = "婚姻状况字典值")
private String maritalStatusValue;
@Schema(description = "民族字典值")
private String nationValue;
@Schema(description = "政治面貌字典值")
private String politicalValue;
@Schema(description = "身份证-省")
private Integer idProvince;
@Schema(description = "身份证-市")
private Integer idCity;
@Schema(description = "身份证-县")
private Integer idTown;
@Schema(description = "通信地址省")
private Integer contactProvince;
@Schema(description = "通信地址市")
private Integer contactCity;
@Schema(description = "通信地址县")
private Integer contactTown;
} }
...@@ -52,4 +52,10 @@ public class HcmArchiveCertificateVo implements Serializable { ...@@ -52,4 +52,10 @@ public class HcmArchiveCertificateVo implements Serializable {
@Schema(description = "证照附件") @Schema(description = "证照附件")
private String annex; private String annex;
@Schema(description = "身份证号")
private String empIdCard;
@Schema(description = "资格类型")
private String certificateType;
} }
...@@ -33,16 +33,16 @@ import java.io.Serializable; ...@@ -33,16 +33,16 @@ import java.io.Serializable;
public class HcmArchiveEducationVo implements Serializable { public class HcmArchiveEducationVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
// 学校
@Schema(description = "学校名称") @Schema(description = "学校名称")
private String schoolName; private String schoolName;
// 工作部门
@Schema(description = "专业") @Schema(description = "专业")
private String major; private String major;
// 工作岗位
@Schema(description = "学历") @Schema(description = "学历")
private String education; private String education;
// 入学时间
@Schema(description = "入校日期") @Schema(description = "入校日期")
private String joinDate; private String joinDate;
// 毕业时间 // 毕业时间
...@@ -55,4 +55,13 @@ public class HcmArchiveEducationVo implements Serializable { ...@@ -55,4 +55,13 @@ public class HcmArchiveEducationVo implements Serializable {
@Schema(description = "学历附件") @Schema(description = "学历附件")
private String annex; private String annex;
@Schema(description = "身份证号")
private String empIdCard;
@Schema(description = "学历值")
private String educationValue;
@Schema(description = "学历类型值")
private String educationTypeValue;
} }
...@@ -53,4 +53,10 @@ public class HcmArchiveFamilyVo implements Serializable { ...@@ -53,4 +53,10 @@ public class HcmArchiveFamilyVo implements Serializable {
@Schema(description = "职位/职务") @Schema(description = "职位/职务")
private String jobName; private String jobName;
@Schema(description = "与本人关系")
private String relation;
@Schema(description = "身份证号")
private String empIdCard;
} }
...@@ -52,4 +52,7 @@ public class HcmArchiveJobVo implements Serializable { ...@@ -52,4 +52,7 @@ public class HcmArchiveJobVo implements Serializable {
@Schema(description = "职位描述") @Schema(description = "职位描述")
private String remark; private String remark;
@Schema(description = "身份证号")
private String empIdCard;
} }
...@@ -48,5 +48,8 @@ public class HcmEmployeeInfoVO extends RowIndex implements Serializable { ...@@ -48,5 +48,8 @@ public class HcmEmployeeInfoVO extends RowIndex implements Serializable {
// 合同信息-含附件 // 合同信息-含附件
private List<HcmContractVo> contract; private List<HcmContractVo> contract;
// 不良记录
private List<HcmArchiveBadRecordVo> archiveBadRecord;
} }
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @Author fxj
* @Description 项目客服信息
* @Date 17:35 2025/8/14
* @Param
* @return
**/
@Data
public class ProjectCustomerServiceVo implements Serializable {
/**
* 项目编码
*/
@Schema(description = "项目编码")
private String departNo;
/**
* 项目名称
*/
@Schema(description = "项目名称")
private String departName;
/**
* 前端客服-登录账号
*/
@Schema(description ="登录账号")
private String csLoginName;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import lombok.Data;
import java.util.Map;
import java.util.Set;
/**
* 获取社保公积信息
*
* @author chenyuxi
* @date 2025/8/6
* @since v1.7.14
**/
@Data
public class SocialFundVo {
private Set<String> empIdCardSet;
private Map<String,String> socialFundByIdCard;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 地区包装类
* @author chenyuxi
* @date 2025/8/6
* @since v1.7.14
*/
@Data
public class SysAreaVo implements Serializable {
private Integer id;
private String name;
}
...@@ -48,6 +48,10 @@ public class TGzEmpInfoExportMain implements Serializable { ...@@ -48,6 +48,10 @@ public class TGzEmpInfoExportMain implements Serializable {
@ExcelProperty("员工档案提交时间") @ExcelProperty("员工档案提交时间")
private String createTime; private String createTime;
@ExcelAttribute(name = "档案状态", isDataId = true, readConverterExp = "0=已提交,1=暂存")
@ExcelProperty("档案状态")
private String empStatus;
@ExcelAttribute(name = "档案推送瓜子状态", isDataId = true, readConverterExp = "0=待推送,1=已推送") @ExcelAttribute(name = "档案推送瓜子状态", isDataId = true, readConverterExp = "0=待推送,1=已推送")
@ExcelProperty("档案推送瓜子状态") @ExcelProperty("档案推送瓜子状态")
private String empPushStatus; private String empPushStatus;
......
...@@ -11,4 +11,6 @@ public class EmployeeContractConstants { ...@@ -11,4 +11,6 @@ public class EmployeeContractConstants {
public static final String NOT_AUDIT = "未审核通过,无法更新"; public static final String NOT_AUDIT = "未审核通过,无法更新";
public static final String INVALID = "作废、终止,无法更新"; public static final String INVALID = "作废、终止,无法更新";
public static final String CONTRACT_ALERT_DEFAULT_PERSON = "CONTRACT_ALERT_DEFAULT_PERSON";
} }
...@@ -236,4 +236,16 @@ public class TEmpContractAlertController { ...@@ -236,4 +236,16 @@ public class TEmpContractAlertController {
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) { public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tEmpContractAlertService.importDiy(file.getInputStream()); return tEmpContractAlertService.importDiy(file.getInputStream());
} }
/**
* @Author fxj
* @Description 每日09:00推送一条整合的续签代码信息给配置的人员
* @Date 16:03 2025/8/15
**/
@Operation(description = "每天10:00推送整合后的待办商险数据给对应项目的前端客服信息")
@Inner
@PostMapping("/inner/pushContractAlertToWx")
public void pushInsuranceAlertToWx() {
tEmpContractAlertService.pushContractAlertToWx();
}
} }
package com.yifu.cloud.plus.v1.yifu.archives.mapper;/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.SysConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @Author fxj
* @Description 系统配置表
* @Date 9:40 2025/3/13
* @Param
* @return
**/
@Mapper
public interface SysConfigMapper extends BaseMapper<SysConfig> {
/**
* 系统限制配置表简单分页查询
*
* @param configKey 键
* @return
*/
SysConfig getSysConfigLimitByKey(@Param("configKey") String configKey);
}
...@@ -110,4 +110,6 @@ public interface TEmployeeContractInfoMapper extends BaseMapper<TEmployeeContrac ...@@ -110,4 +110,6 @@ public interface TEmployeeContractInfoMapper extends BaseMapper<TEmployeeContrac
String getMinDateByCardAndDeptId(@Param("vo") IdNameNoVo vo); String getMinDateByCardAndDeptId(@Param("vo") IdNameNoVo vo);
void updateContractEnd( @Param("tEmployeeContractInfo")TEmployeeContractInfo tEmployeeContractInfo); void updateContractEnd( @Param("tEmployeeContractInfo")TEmployeeContractInfo tEmployeeContractInfo);
List<TEmployeeContractInfo> getContractAlertDeptNosList();
} }
...@@ -146,4 +146,19 @@ public interface TEmployeeInfoMapper extends BaseMapper<TEmployeeInfo> { ...@@ -146,4 +146,19 @@ public interface TEmployeeInfoMapper extends BaseMapper<TEmployeeInfo> {
void updateEmployeeAgeTask(); void updateEmployeeAgeTask();
Set<String> getEmpOnlineMap(@Param("empIdCardList")List<String> empIdCardList); Set<String> getEmpOnlineMap(@Param("empIdCardList")List<String> empIdCardList);
List<HcmArchiveBasicVo> getHcmArchiveBasicList(@Param("idCardSet") Set<String> idCardSet);
List<HcmArchiveFamilyVo> getHcmArchiveFamilyList(@Param("idCardSet") Set<String> idCardSet);
List<HcmArchiveEducationVo> getHcmArchiveEducationList(@Param("idCardSet") Set<String> idCardSet);
List<HcmArchiveJobVo> getHcmArchiveJobList(@Param("idCardSet") Set<String> idCardSet);
List<HcmArchiveBadRecordVo> getHcmArchiveBadRecordList(@Param("idCardSet") Set<String> idCardSet);
List<HcmArchiveCertificateVo> getHcmArchiveCertificateList(@Param("idCardSet") Set<String> idCardSet);
List<SysAreaVo> getSysAreaList(@Param("areaIdSet") Set<Integer> areaIdSet);
} }
...@@ -115,4 +115,5 @@ public interface TSettleDomainMapper extends BaseMapper<TSettleDomain> { ...@@ -115,4 +115,5 @@ public interface TSettleDomainMapper extends BaseMapper<TSettleDomain> {
List<String> getAllDeptByCustomerLoginName(@Param(value = "userLoginName") String userLoginName); List<String> getAllDeptByCustomerLoginName(@Param(value = "userLoginName") String userLoginName);
List<ProjectCustomerServiceVo> getServiceInfoByCodes(@Param(value = "codes")List<String> deptNos);
} }
...@@ -68,4 +68,5 @@ public interface TEmpContractAlertService extends IService<TEmpContractAlert> { ...@@ -68,4 +68,5 @@ public interface TEmpContractAlertService extends IService<TEmpContractAlert> {
R<List<ErrorMessage>> importDiy(InputStream inputStream); R<List<ErrorMessage>> importDiy(InputStream inputStream);
void pushContractAlertToWx();
} }
...@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* 项目档案表 * 项目档案表
...@@ -312,4 +313,6 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> { ...@@ -312,4 +313,6 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
**/ **/
void doSaveBelongDept(TEmployeeProject p, String feedbackType); void doSaveBelongDept(TEmployeeProject p, String feedbackType);
Map<String,String> getSocialFundByEmpIdcardSet(Set<String> empIdCardSet);
} }
...@@ -702,9 +702,9 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper, ...@@ -702,9 +702,9 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
R res = tEmployeeProjectService.deleteEmpPro(oldEmpProject); R res = tEmployeeProjectService.deleteEmpPro(oldEmpProject);
resStr.append(res.getMsg()); resStr.append(res.getMsg());
} }
//保存变更记录
saveChangeInfo(newEmpProject, updateTEmployeeProject);
} }
//保存变更记录
saveChangeInfo(newEmpProject, updateTEmployeeProject);
return R.ok(null,resStr.toString()); return R.ok(null,resStr.toString());
} }
......
...@@ -31,24 +31,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -31,24 +31,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.vo.EkpDeptInfoVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysUserListVo;
import com.yifu.cloud.plus.v1.yifu.archives.config.WxConfig;
import com.yifu.cloud.plus.v1.yifu.archives.constants.ArchivesConstants; import com.yifu.cloud.plus.v1.yifu.archives.constants.ArchivesConstants;
import com.yifu.cloud.plus.v1.yifu.archives.constants.EmployeeContractConstants;
import com.yifu.cloud.plus.v1.yifu.archives.entity.*; import com.yifu.cloud.plus.v1.yifu.archives.entity.*;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.*; import com.yifu.cloud.plus.v1.yifu.archives.mapper.*;
import com.yifu.cloud.plus.v1.yifu.archives.service.FeedBackDetailService; import com.yifu.cloud.plus.v1.yifu.archives.service.FeedBackDetailService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpContractAlertService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpContractAlertService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeFeedBackAllVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ContractAlertSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpContractAlertUpdateVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeContractCheckVO;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*; import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils; import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.archives.entity.SysConfig;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -57,6 +64,7 @@ import java.io.InputStream; ...@@ -57,6 +64,7 @@ import java.io.InputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 员工合同续签待办 * 员工合同续签待办
...@@ -79,6 +87,17 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -79,6 +87,17 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
private final FeedBackDetailService feedBackDetailService; private final FeedBackDetailService feedBackDetailService;
private final TSettleDomainMapper settleDomainMapper;
@Autowired
private UpmsDaprUtils upmsDaprUtils;
@Autowired
private SysConfigMapper sysConfigMapper;
@Autowired
private WxConfig wxConfig;
@Override @Override
public IPage<TEmpContractAlert> pageDiy(Page page, ContractAlertSearchVo searchVo) { public IPage<TEmpContractAlert> pageDiy(Page page, ContractAlertSearchVo searchVo) {
LambdaQueryWrapper<TEmpContractAlert> wrapper = buildQueryWrapper(searchVo); LambdaQueryWrapper<TEmpContractAlert> wrapper = buildQueryWrapper(searchVo);
...@@ -789,4 +808,132 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -789,4 +808,132 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
} }
return null; return null;
} }
/**
* @Author fxj
* @Description 获取合同续签但前端客服异常的数据发送给柳毅晨(可配置)
* @Date 17:05 2025/8/14
* @Param
* @return
**/
@Override
public void pushContractAlertToWx() {
try {
//获取所有合同提醒的数据--去重
List<TEmployeeContractInfo> contractAlertList = contractInfoMapper.getContractAlertDeptNosList();
//从contractAlertList 对象的 中获取所有元素的 deptNo 属性,要去空和去重。放到 deptNos 中
List<String> deptNos = new ArrayList<>();
if (contractAlertList != null) {
for (TEmployeeContractInfo contract : contractAlertList) {
if (Common.isNotNull(contract) && !Common.isEmpty(contract.getDeptNo())) {
deptNos.add(contract.getDeptNo());
}
}
}
//通过项目获取所有项目的前端客服信息
List<ProjectCustomerServiceVo> deptInfoVos = settleDomainMapper.getServiceInfoByCodes(deptNos);
//需要提醒的项目信息
StringBuilder sb = new StringBuilder();
if (!Common.isEmpty(deptInfoVos)){
StringBuilder userNames = new StringBuilder();
//获取所有项目对应的客服信息
initUserNames(deptInfoVos, sb, userNames);
Map<String, SysUser> sysUserMap = getSysUserMap(userNames);
if (Common.isNotKong(sysUserMap)){
SysUser user;
for (ProjectCustomerServiceVo dept : deptInfoVos) {
if (Common.isEmpty(dept.getCsLoginName())){
continue;
}
user = sysUserMap.get(dept.getCsLoginName());
if (!Common.isNotNull(user)){
Common.appendStr(sb,dept.getDepartNo(),CommonConstants.DUNHAO_STRING);
}else if (!CommonConstants.ZERO_STRING.equals(user.getLockFlag()) || !CommonConstants.ZERO_STRING.equals(user.getDelFlag())){
//锁定标识:lockFlag != 0 都算作异常 删除标识:deleteFlag != 0 算作异常
Common.appendStr(sb,dept.getDepartNo(),CommonConstants.DUNHAO_STRING);
}
}
}
if (sb.length() > 0){
// 获取默认提醒人
SysConfig sysConfig = sysConfigMapper.getSysConfigLimitByKey(EmployeeContractConstants.CONTRACT_ALERT_DEFAULT_PERSON);
if (Common.isNotNull(sysConfig) && Common.isNotKong(sysConfig.getConfigValue2())){
sendMessageToWx(sysConfig.getConfigValue2(),sb);
}
}
}
}catch (Exception e){
// 记录日志或进行适当异常处理
log.error("推送合同提醒到企业微信时发生异常", e);
}
}
//发送企业微信待办
private void sendMessageToWx(String useruserWx, StringBuilder content) {
if (Common.isEmpty(useruserWx) || Common.isEmpty(content)) {
return;
}
StringBuilder sendUser = null;
if (Common.isNotKong(useruserWx)) {
sendUser = new StringBuilder(useruserWx);
}
if (sendUser != null) {
RestTemplate restTemplate = new RestTemplate();
Map<String, Object> requestMap = new HashMap<>();
Map<String, Object> textcard = new HashMap<>();
textcard.put("title", "合同到期提醒");
textcard.put("url", String.format(SecurityConstants.WX_GET_MESSAGE_AUTH_URL, wxConfig.getCorpid(), wxConfig.getDomainName() + "/auth/oauth/wxLogin", "66" ));
content.append("的所属前端客服当前状态异常,请及时更新服务手册数据,跟进项目情况。");
textcard.put("description", "项目编码为"+content);
requestMap.put("touser", sendUser);
requestMap.put("agentid", wxConfig.getAgentid());
requestMap.put("msgtype", "textcard");
requestMap.put("textcard", textcard);
// 必须加上header说明
if (!wxConfig.sendTextCard(restTemplate, requestMap)) {
wxConfig.sendTextCard(restTemplate, requestMap);
}
}
}
private Map<String, SysUser> getSysUserMap(StringBuilder userNames) {
Map<String, SysUser> sysUserMap = null;
if (!Common.isEmpty(userNames.toString())) {
try {
R<SysUserListVo> res = upmsDaprUtils.getUserIdsByUserNames(userNames.toString());
List<SysUser> users = null;
if (Common.isNotNull(res) && Common.isNotNull(res.getData()) && Common.isNotNull(res.getData().getUserList())) {
users = res.getData().getUserList();
}
if (Common.isNotKong(users)) {
sysUserMap = users.stream().collect(Collectors.toMap(k -> k.getUsername(), v -> v));
}
}catch (Exception e){
log.error("获取用户映射时发生异常", e);
}
}
return sysUserMap;
}
private void initUserNames(List<ProjectCustomerServiceVo> deptInfoVos, StringBuilder sb, StringBuilder userNames) {
// 使用 Set 来确保用户名唯一性
Set<String> uniqueUserNames = new HashSet<>();
for (ProjectCustomerServiceVo deptInfoVo : deptInfoVos) {
if (Common.isNotNull(deptInfoVo)) {
// 不为空后面要查询对应账号状态异常的
if (Common.isNotNull(deptInfoVo.getCsLoginName())) {
uniqueUserNames.add(deptInfoVo.getCsLoginName());
} else {
Common.appendStr(sb,deptInfoVo.getDepartNo(),CommonConstants.DUNHAO_STRING);
}
}
}
// 将去重后的用户名添加到 userNames 中
for (String userName : uniqueUserNames) {
Common.appendStr(userNames, userName,CommonConstants.COMMA_STRING);
}
}
} }
...@@ -209,12 +209,18 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe ...@@ -209,12 +209,18 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
newInfo.setAttaIdList(null); newInfo.setAttaIdList(null);
oldInfo.setAttaList(null); oldInfo.setAttaList(null);
newInfo.setAttaList(null); newInfo.setAttaList(null);
//商险是否已购买list不做比较
oldInfo.setExitInsuranceInfoList(newInfo.getExitInsuranceInfoList());
//比较记录不影响业务逻辑,用try套住 //比较记录不影响业务逻辑,用try套住
//记录商险是否已购买日志
String isBuyOld = oldInfo.getInsuranceIsBuy();
String isBuyNew = newInfo.getInsuranceIsBuy();
oldInfo.setInsuranceIsBuy(newInfo.getInsuranceIsBuy());
//比较差异 //比较差异
String differenceKey = HrEquator.comparisonValue(oldInfo, newInfo); String differenceKey = HrEquator.comparisonValue(oldInfo, newInfo);
//如果有差异保存差异 //如果有差异保存差异
List<TEmployeeInsurancePre> newList = newInfo.getInsurancePreList(); List<TEmployeeInsurancePre> newList = newInfo.getInsurancePreList();
String diffTitle = null; String diffTitle = null;
String logId = String.valueOf(UUID.randomUUID()).replaceAll("-", ""); String logId = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
// 要保存的明细 // 要保存的明细
...@@ -237,18 +243,49 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe ...@@ -237,18 +243,49 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
oldMap = new HashMap<>(); oldMap = new HashMap<>();
} }
List<TEmployeeInsurancePre> saveOrUpdateList = new ArrayList<>(); List<TEmployeeInsurancePre> saveOrUpdateList = new ArrayList<>();
// 是否修改了商险
boolean isModifyInsurance = false;
TEmployeeInsurancePre oldInsurance;
TEmployeePreLogDetail detailInsuranceLog;
String differenceInsuranceKey;
//如果服务类型包含商险处理商险明细数据
newInfo.setId(empPreId);
if (Common.isNotNull(newInfo.getServerItem()) && newInfo.getServerItem().contains("商险")) {
//是否已购买商险单独加日志
if (Common.isEmpty(isBuyOld) || (Common.isNotNull(isBuyOld) && !isBuyOld.equals(isBuyNew))) {
//单独记录是否已购买商险的变更记录
differenceInsuranceKey = "insuranceIsBuy";
detailInsuranceLog = new TEmployeePreLogDetail();
detailInsuranceLog.setModelType(CommonConstants.TWO_STRING);
detailInsuranceLog.setType(CommonConstants.TWO_STRING);
Map<String, Object> old = new HashMap<>();
old.put("insuranceIsBuy", isBuyOld);
Map<String, Object> simNew = new HashMap<>();
simNew.put("insuranceIsBuy", isBuyNew);
this.setLogBaseInfo(empPreId, old, simNew, user, differenceInsuranceKey, logId, detailInsuranceLog);
isModifyInsurance = true;
detailList.add(detailInsuranceLog);
}
if (!newInfo.getExitInsuranceInfoList().isEmpty()) {
newInfo.getExitInsuranceInfoList().forEach(insurancePreVo -> insurancePreVo.setRegisterId(empPreId));
}
HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(), daprInsurancesProperties.getAppId()
, "/temployeeinsurancepre/inner/updateInfoSaveInsurancePreInfo"
, newInfo, Boolean.class, SecurityConstants.FROM_IN);
}
//如果服务类型不包含商险删除商险明细数据
if (Common.isNotNull(newInfo.getServerItem()) && !newInfo.getServerItem().contains("商险")) {
HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(), daprInsurancesProperties.getAppId()
, "/temployeeinsurancepre/inner/deleteInsurancePreInfo"
, newInfo, Boolean.class, SecurityConstants.FROM_IN);
}
if (newList != null && !newList.isEmpty()) { if (newList != null && !newList.isEmpty()) {
// 是否修改了商险
boolean isModifyInsurance = false;
TEmployeeInsurancePre oldInsurance;
String differenceInsuranceKey;
TEmployeePreLogDetail detailInsuranceLog;
for (TEmployeeInsurancePre newInsurance : newList) { for (TEmployeeInsurancePre newInsurance : newList) {
differenceInsuranceKey = null; differenceInsuranceKey = null;
if (Common.isNotNull(newInsurance.getModelType())) { if (Common.isNotNull(newInsurance.getModelType())) {
// 1:新增 // 1:新增
if (CommonConstants.ONE_STRING.equals(newInsurance.getModelType())) { if (CommonConstants.ONE_STRING.equals(newInsurance.getModelType())) {
saveOrUpdateList.add(newInsurance); saveOrUpdateList.add(newInsurance);
detailInsuranceLog = new TEmployeePreLogDetail(); detailInsuranceLog = new TEmployeePreLogDetail();
detailInsuranceLog.setModelType(newInsurance.getModelType()); detailInsuranceLog.setModelType(newInsurance.getModelType());
...@@ -305,6 +342,13 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe ...@@ -305,6 +342,13 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
diffTitle = "商险信息"; diffTitle = "商险信息";
} }
} }
} else {
// 没有变更
if (Common.isNotNull(diffTitle)) {
diffTitle += "、商险信息";
} else {
diffTitle = "商险信息";
}
} }
String differenceContractKey = null; String differenceContractKey = null;
...@@ -402,6 +446,12 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe ...@@ -402,6 +446,12 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
newInfo.setAttaIdList(null); newInfo.setAttaIdList(null);
oldInfo.setAttaList(null); oldInfo.setAttaList(null);
newInfo.setAttaList(null); newInfo.setAttaList(null);
//记录商险是否已购买日志
String isBuyOld = oldInfo.getInsuranceIsBuy();
String isBuyNew = newInfo.getInsuranceIsBuy();
//商险是否已购买list不做比较
oldInfo.setExitInsuranceInfoList(newInfo.getExitInsuranceInfoList());
oldInfo.setInsuranceIsBuy(newInfo.getInsuranceIsBuy());
//比较记录不影响业务逻辑,用try套住 //比较记录不影响业务逻辑,用try套住
//比较差异 //比较差异
String differenceKey = HrEquator.comparisonValue(oldInfo, newInfo); String differenceKey = HrEquator.comparisonValue(oldInfo, newInfo);
...@@ -431,8 +481,32 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe ...@@ -431,8 +481,32 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
TEmployeeInsurancePre oldInsurance; TEmployeeInsurancePre oldInsurance;
String differenceInsuranceKey; String differenceInsuranceKey;
TEmployeePreLogDetail detailInsuranceLog; TEmployeePreLogDetail detailInsuranceLog;
if (Common.isEmpty(isBuyOld) ||(Common.isNotNull(isBuyOld) && !isBuyOld.equals(isBuyNew))) {
//单独记录是否已购买商险的变更记录
differenceInsuranceKey = "insuranceIsBuy";
detailInsuranceLog = new TEmployeePreLogDetail();
detailInsuranceLog.setModelType(CommonConstants.TWO_STRING);
detailInsuranceLog.setType(CommonConstants.TWO_STRING);
Map<String,Object> old = new HashMap<>();
old.put("insuranceIsBuy", isBuyOld);
Map<String,Object> simNew = new HashMap<>();
simNew.put("insuranceIsBuy", isBuyNew);
this.setPreLogBaseInfo(empPreId, old, simNew, userId, nickName, differenceInsuranceKey, logId, detailInsuranceLog);
isModifyInsurance = true;
detailList.add(detailInsuranceLog);
}
for (TEmployeeInsurancePre newInsurance : newList) { for (TEmployeeInsurancePre newInsurance : newList) {
differenceInsuranceKey = null; differenceInsuranceKey = null;
if (CommonConstants.THREE_STRING.equals(newInsurance.getModelType())) {
// 3:删除
detailInsuranceLog = new TEmployeePreLogDetail();
detailInsuranceLog.setModelType(newInsurance.getModelType());
detailInsuranceLog.setType(CommonConstants.TWO_STRING);
this.setPreLogBaseInfo(empPreId, newInsurance, null, userId, nickName, differenceInsuranceKey, logId, detailInsuranceLog);
isModifyInsurance = true;
detailList.add(detailInsuranceLog);
continue;
}
// 2:修改有老ID // 2:修改有老ID
if (Common.isNotNull(newInsurance.getId())) { if (Common.isNotNull(newInsurance.getId())) {
oldInsurance = oldMap.get(newInsurance.getId()); oldInsurance = oldMap.get(newInsurance.getId());
......
...@@ -2157,4 +2157,17 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap ...@@ -2157,4 +2157,17 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
} }
} }
@Override
public Map<String,String> getSocialFundByEmpIdcardSet(Set<String> empIdCardSet) {
// 获取社保和公积金派减信息
SocialFundVo vo = new SocialFundVo();
vo.setEmpIdCardSet(empIdCardSet);
Map<String,String> socialFundMap = new HashMap<>();
R<SocialFundVo> reduceVoR = HttpDaprUtil.invokeMethodPost(daprSocialProperties.getAppUrl(), daprSocialProperties.getAppId()
, "/tsocialfundinfo/inner/getSocialAndFundReduceListByEmpIdCardSet", vo, SocialFundVo.class, SecurityConstants.FROM_IN);
if (null != reduceVoR && reduceVoR.getData() != null){
socialFundMap = reduceVoR.getData().getSocialFundByIdCard();
}
return socialFundMap;
}
} }
...@@ -491,6 +491,10 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -491,6 +491,10 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
YifuUser user = getNewYifuUser(); YifuUser user = getNewYifuUser();
TGzEmpInfo tGzEmpInfo = tGzEmpInfoVo; TGzEmpInfo tGzEmpInfo = tGzEmpInfoVo;
Integer offerId = tGzEmpInfoVo.getOfferId(); Integer offerId = tGzEmpInfoVo.getOfferId();
// 1.7.14: 档案状态必传
if (Common.isEmpty(tGzEmpInfoVo.getEmpStatus())) {
return R.failed("档案状态必传!");
}
if (Common.isEmpty(offerId)) { if (Common.isEmpty(offerId)) {
return R.failed("请传参流程ID!"); return R.failed("请传参流程ID!");
} else { } else {
...@@ -504,30 +508,33 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -504,30 +508,33 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
// 测试 郭彤:这个提示改下吧,没必要吧ID还有状态枚举值列出来 2025-6-30 18:09:05 // 测试 郭彤:这个提示改下吧,没必要吧ID还有状态枚举值列出来 2025-6-30 18:09:05
// return R.failed("瓜子Offer状态不对("+gzOfferInfo.getOfferStatus()+"),不可编辑,Offer的ID="+ offerId) // return R.failed("瓜子Offer状态不对("+gzOfferInfo.getOfferStatus()+"),不可编辑,Offer的ID="+ offerId)
} }
gzOfferInfo.setOfferStatus("12"); // 1.7.14: 档案状态是提交,才更新offer状态
gzOfferInfoMapper.updateById(gzOfferInfo); if(CommonConstants.ZERO_STRING.equals(tGzEmpInfoVo.getEmpStatus())){
gzOfferInfo.setOfferStatus("12");
// 记录状态变更的offer操作日志 记录来源: 6:(系统触发)C端采集提交 gzOfferInfoMapper.updateById(gzOfferInfo);
this.saveOfferStatusRecord(gzOfferInfo.getId(),CommonConstants.SIX_STRING,
CommonConstants.NINE_STRING,gzOfferInfo.getOfferStatus(),"0","系统触发"); // 记录状态变更的offer操作日志 记录来源: 6:(系统触发)C端采集提交
this.saveOfferStatusRecord(gzOfferInfo.getId(),CommonConstants.SIX_STRING,
// 1.7.13: 同一个流程ID推送过12:候选人信息审核,之前没推送过这个状态的,才触发推送 CommonConstants.NINE_STRING,gzOfferInfo.getOfferStatus(),"0","系统触发");
TGzPushEntry findFailInfo = tGzPushEntryService.getOne(Wrappers.<TGzPushEntry>query().lambda()
.eq(TGzPushEntry::getBizId, gzOfferInfo.getBizId()) // 1.7.13: 同一个流程ID推送过12:候选人信息审核,之前没推送过这个状态的,才触发推送
.eq(TGzPushEntry::getTaskType, "12") TGzPushEntry findFailInfo = tGzPushEntryService.getOne(Wrappers.<TGzPushEntry>query().lambda()
.eq(TGzPushEntry::getDelFlag, CommonConstants.ZERO_STRING) .eq(TGzPushEntry::getBizId, gzOfferInfo.getBizId())
.last(CommonConstants.LAST_ONE_SQL)); .eq(TGzPushEntry::getTaskType, "12")
if (Common.isEmpty(findFailInfo)) { .eq(TGzPushEntry::getDelFlag, CommonConstants.ZERO_STRING)
// 推送状态给瓜子 .last(CommonConstants.LAST_ONE_SQL));
if(!CommonConstants.ZERO_STRING.equals(gzOfferInfo.getBizId())){ if (Common.isEmpty(findFailInfo)) {
TGzPushEntry tGzPushEntry = new TGzPushEntry(); // 推送状态给瓜子
tGzPushEntry.setCreateBy(user.getId()); if(!CommonConstants.ZERO_STRING.equals(gzOfferInfo.getBizId())){
tGzPushEntry.setCreateName(user.getNickname()); TGzPushEntry tGzPushEntry = new TGzPushEntry();
tGzPushEntry.setBizId(gzOfferInfo.getBizId()); tGzPushEntry.setCreateBy(user.getId());
tGzPushEntry.setTaskType("12"); tGzPushEntry.setCreateName(user.getNickname());
tGzPushEntry.setName(gzOfferInfo.getName()); tGzPushEntry.setBizId(gzOfferInfo.getBizId());
tGzPushEntry.setNationalId(gzOfferInfo.getNationalId()); tGzPushEntry.setTaskType("12");
tGzPushEntryService.addPushEntry(tGzPushEntry); tGzPushEntry.setName(gzOfferInfo.getName());
tGzPushEntry.setNationalId(gzOfferInfo.getNationalId());
tGzPushEntryService.addPushEntry(tGzPushEntry);
}
} }
} }
} }
...@@ -536,12 +543,20 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -536,12 +543,20 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
if (Common.isEmpty(gzEmpId)) { if (Common.isEmpty(gzEmpId)) {
tGzEmpInfo.setCreateBy(user.getId()); tGzEmpInfo.setCreateBy(user.getId());
tGzEmpInfo.setCreateName(user.getNickname()); tGzEmpInfo.setCreateName(user.getNickname());
tGzEmpInfo.setCreateTime(LocalDateTime.now()); tGzEmpInfo.setSubmitTime(null);
// 1.7.14: 档案状态是提交,才存 提交时间
if(CommonConstants.ZERO_STRING.equals(tGzEmpInfoVo.getEmpStatus())){
tGzEmpInfo.setSubmitTime(LocalDateTime.now());
}
this.save(tGzEmpInfo); this.save(tGzEmpInfo);
gzEmpId = tGzEmpInfo.getId(); gzEmpId = tGzEmpInfo.getId();
} else { } else {
tGzEmpInfo.setUpdateBy(user.getId()); tGzEmpInfo.setUpdateBy(user.getId());
tGzEmpInfo.setUpdateTime(LocalDateTime.now()); tGzEmpInfo.setUpdateTime(LocalDateTime.now());
// 1.7.14: 档案状态是提交,更新 提交时间
if(CommonConstants.ZERO_STRING.equals(tGzEmpInfoVo.getEmpStatus())){
tGzEmpInfo.setSubmitTime(LocalDateTime.now());
}
this.updateById(tGzEmpInfo); this.updateById(tGzEmpInfo);
} }
// 获取瓜子档案附属信息:先删除后增加: // 获取瓜子档案附属信息:先删除后增加:
...@@ -843,6 +858,22 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -843,6 +858,22 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
if (Common.isEmpty(attaEmp.getAttaName())) { if (Common.isEmpty(attaEmp.getAttaName())) {
attaEmp.setAttaName(CommonConstants.CENTER_SPLIT_LINE_STRING); attaEmp.setAttaName(CommonConstants.CENTER_SPLIT_LINE_STRING);
} }
// 1.7.14: 附件类型映射
// 41(瓜子申明签名)42(瓜子确认签名)NID_A(证件正面) NID_B(证件反面)
// 附件类型转化:声明签字:21;确认签字:22; 9身份证;24 身份证国徽
if("41".equals(atta.getRelationType())){
attaEmp.setRelationType("21");
}
if("42".equals(atta.getRelationType())){
attaEmp.setRelationType("22");
}
if("NID_A".equals(atta.getRelationType())){
attaEmp.setRelationType("9");
}
if("NID_B".equals(atta.getRelationType())){
attaEmp.setRelationType("24");
}
attaEmp.setDomainId(empId); attaEmp.setDomainId(empId);
attaEmp.setCreateBy(user.getId()); attaEmp.setCreateBy(user.getId());
attaEmp.setCreateName(user.getNickname()); attaEmp.setCreateName(user.getNickname());
...@@ -1020,9 +1051,11 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -1020,9 +1051,11 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
// 按gzEmpInfo实体类顺序转化: // 按gzEmpInfo实体类顺序转化:
emp.setEmpName(gzEmpInfo.getName()); emp.setEmpName(gzEmpInfo.getName());
emp.setEmpIdcard(gzEmpInfo.getNationalId()); emp.setEmpIdcard(gzEmpInfo.getNationalId());
emp.setIdProvince(gzEmpInfo.getNativePlaceAreaId()); // 1.7.14: 户籍所在地取值调整
emp.setIdCity(null); emp.setIdProvince(gzEmpInfo.getHukouProvinceAreaId());
emp.setIdTown(null); emp.setIdCity(gzEmpInfo.getHukouCityAreaId());
emp.setIdTown(gzEmpInfo.getHukouCountyAreaId());
// 民族 // 民族
emp.setEmpNational(getDictValue(dictMap, gzEmpInfo.getEthnicGrpCd(), ExcelAttributeConstants.GZ_ETHNIC_GRP_CD)); emp.setEmpNational(getDictValue(dictMap, gzEmpInfo.getEthnicGrpCd(), ExcelAttributeConstants.GZ_ETHNIC_GRP_CD));
// 婚姻状态 // 婚姻状态
...@@ -1050,10 +1083,10 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI ...@@ -1050,10 +1083,10 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
emp.setContactAddress(gzEmpInfo.getAddress()); emp.setContactAddress(gzEmpInfo.getAddress());
// 户口性质 // 户口性质
emp.setEmpRegisType(getDictValue(dictMap, gzEmpInfo.getHukouType(), ExcelAttributeConstants.GZ_HUKOU_TYPE)); emp.setEmpRegisType(getDictValue(dictMap, gzEmpInfo.getHukouType(), ExcelAttributeConstants.GZ_HUKOU_TYPE));
// 1.7.14: 档案所在地取值调整: ”默认为“安徽省-合肥市-蜀山区”
emp.setFileProvince(gzEmpInfo.getHukouProvinceAreaId()); emp.setFileProvince(12);
emp.setFileCity(gzEmpInfo.getHukouCityAreaId()); emp.setFileCity(135);
emp.setFileTown(gzEmpInfo.getHukouCountyAreaId()); emp.setFileTown(1267);
emp.setBankName(getDictValue(dictMap, gzEmpInfo.getBankCd(), ExcelAttributeConstants.GZ_BANK)); emp.setBankName(getDictValue(dictMap, gzEmpInfo.getBankCd(), ExcelAttributeConstants.GZ_BANK));
emp.setBankSubName(gzEmpInfo.getBankName()); emp.setBankSubName(gzEmpInfo.getBankName());
if (Common.isNotNull(gzEmpInfo.getAccountProvinceAreaId())) { if (Common.isNotNull(gzEmpInfo.getAccountProvinceAreaId())) {
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
<result property="updateBy" column="update_by"/> <result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/> <result property="updateTime" column="update_time"/>
<result property="customerUsernameNew" column="customer_username_new"/> <result property="customerUsernameNew" column="customer_username_new"/>
<result property="insuranceIsBuy" column="insurance_is_buy"/>
</resultMap> </resultMap>
<resultMap id="employeeRegistrationPreExportMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreExportVo"> <resultMap id="employeeRegistrationPreExportMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreExportVo">
...@@ -113,7 +114,7 @@ ...@@ -113,7 +114,7 @@
a.update_time, a.update_time,
a.contract_sub_name, a.contract_sub_name,
a.customer_username_new, a.customer_username_new,
province_code,city_code,town_code province_code,city_code,town_code,insurance_is_buy
</sql> </sql>
<sql id="employeeRegistrationPre_where"> <sql id="employeeRegistrationPre_where">
<if test="employeeRegistrationPre != null"> <if test="employeeRegistrationPre != null">
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.archives.mapper.SysConfigMapper">
<resultMap id="sysConfigLimitMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.SysConfig">
<id property="id" column="ID"/>
<result property="configKey" column="CONFIG_KEY"/>
<result property="configValue" column="CONFIG_VALUE"/>
<result property="configValue1" column="CONFIG_VALUE_1"/>
<result property="configValue2" column="CONFIG_VALUE_2"/>
<result property="remark" column="REMARK"/>
</resultMap>
<!-- 根据key获取value -->
<select id="getSysConfigLimitByKey" resultType="com.yifu.cloud.plus.v1.yifu.archives.entity.SysConfig">
SELECT a.CONFIG_VALUE,CONFIG_VALUE_1,CONFIG_VALUE_2
FROM sys_config a
where a.CONFIG_KEY = #{configKey} limit 1
</select>
</mapper>
...@@ -851,4 +851,14 @@ ...@@ -851,4 +851,14 @@
from t_employee_contract_info e from t_employee_contract_info e
where e.EMP_IDCARD = #{vo.no} and e.SETTLE_DOMAIN = #{vo.id} and e.DELETE_FLAG = '0' and e.AUDIT_STATUS = '2' where e.EMP_IDCARD = #{vo.no} and e.SETTLE_DOMAIN = #{vo.id} and e.DELETE_FLAG = '0' and e.AUDIT_STATUS = '2'
</select> </select>
<!--list-->
<select id="getContractAlertDeptNosList" resultMap="tEmployeeContrctInfoMap">
SELECT
distinct a.DEPT_NO
FROM t_employee_contract_info a
<where>
a.DELETE_FLAG = 0
</where>
</select>
</mapper> </mapper>
...@@ -1408,4 +1408,124 @@ ...@@ -1408,4 +1408,124 @@
and DELETE_FLAG ='0' <!-- 未删除 --> and DELETE_FLAG ='0' <!-- 未删除 -->
</select> </select>
<select id="getHcmArchiveBasicList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveBasicVo">
select
a.EMP_NAME empName
,a.EMP_IDCARD empIdCard
,a.EMP_PHONE empPhone
,a.EMP_EMAIL email
,a.EMP_BIRTHDAY bornDate
,if(a.EMP_SEX='2','女',if(a.EMP_SEX='1','男','-')) sex
,a.HIGN_EDUCATION educationValue
,a.EMP_REGIS_TYPE residentTypeValue
,a.EMP_MARRI_STATUS maritalStatusValue
,a.EMP_NATIONAL nationValue
,a.POLITICAL_STATUS politicalValue
,a.ID_PROVINCE idProvince
,a.ID_CITY idCity
,a.ID_TOWN idTown
,a.CONTACT_PROVINCE contactProvince
,a.CONTACT_CITY contactCity
,a.CONTACT_TOWN contactTown
,a.contact_Address contactAddress
,a.BANK_NO bankNo
,a.BANK_NAME bankName
from t_employee_info a
where a.DELETE_FLAG = '0' and a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getSysAreaList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.SysAreaVo">
select a.id id,a.AREA_NAME name from sys_area a
where a.id in
<foreach item="item" index="index" collection="areaIdSet" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getHcmArchiveFamilyList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveFamilyVo">
select
a.RELATIONSHIP_SELF relation
,a.EMP_IDCARD empIdCard
,a.FAMILY_NAME trueName
,a.BIRTHDAY bornTime
,'' political
,a.WORK_UNIT company
,'' jobName
from t_emp_family a
where a.DELETE_FLAG = '0' and a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
order by a.CREATE_TIME desc
</select>
<select id="getHcmArchiveEducationList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveEducationVo">
select
a.SCHOOL schoolName
,a.EMP_IDCARD empIdCard
,a.MAJOR major
,EDUCATION_NAME educationValue
,a.ENTRY_DATE joinDate
,a.GRADUTION_DATE leaveDate
,a.type educationTypeValue
,'' annex
from t_emp_education a
where a.DELETE_FLAG = '0' and a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
order by a.CREATE_TIME desc
</select>
<select id="getHcmArchiveJobList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveJobVo">
select
a.WORK_UNIT companyName
,a.EMP_IDCARD empIdCard
,a.WORK_DEPART deptName
,a.WORK_JOB jobName
,a.START_DATE joinDate
,a.END_DATE leaveDate
,a.REMARK remark
from t_emp_work_recording a
where a.DELETE_FLAG = '0' and a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
order by a.CREATE_TIME desc
</select>
<select id="getHcmArchiveBadRecordList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveBadRecordVo">
select
a.EMP_IDCARD empIdCard
,a.HAPPEN_TIME happenDate
,a.REMARK remark
from t_emp_bad_record a
where a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
order by a.CREATE_TIME desc
</select>
<select id="getHcmArchiveCertificateList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.HcmArchiveCertificateVo">
select
a.QUALIFICATION_TYPE certificateType
,a.EMP_IDCARD empIdCard
,a.CERTIFICATION_NO certificateNo
,a.ASSESSMENT_UNIT certificateOrg
,'' certificateDate
,'' certificateExpireDate
,'' annex
from t_emp_professional_qualification a
where a.DELETE_FLAG = '0' and a.EMP_IDCARD in
<foreach item="item" index="index" collection="idCardSet" open="(" separator="," close=")">
#{item}
</foreach>
order by a.CREATE_TIME desc
</select>
</mapper> </mapper>
...@@ -102,6 +102,8 @@ ...@@ -102,6 +102,8 @@
<result property="hukouCountyAreaId" column="hukou_county_area_id"/> <result property="hukouCountyAreaId" column="hukou_county_area_id"/>
<result property="accountProvinceAreaId" column="account_province_area_id"/> <result property="accountProvinceAreaId" column="account_province_area_id"/>
<result property="accountCityAreaId" column="account_city_area_id"/> <result property="accountCityAreaId" column="account_city_area_id"/>
<result property="empStatus" column="emp_status"/>
<result property="submitTime" column="submit_time"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
a.id, a.id,
...@@ -181,7 +183,9 @@ ...@@ -181,7 +183,9 @@
a.hukou_city_area_id, a.hukou_city_area_id,
a.hukou_county_area_id, a.hukou_county_area_id,
a.account_province_area_id, a.account_province_area_id,
a.account_city_area_id a.account_city_area_id,
a.emp_status,
a.submit_time
</sql> </sql>
<sql id="tGzEmpInfo_where"> <sql id="tGzEmpInfo_where">
<if test="tGzEmpInfo != null"> <if test="tGzEmpInfo != null">
...@@ -194,6 +198,9 @@ ...@@ -194,6 +198,9 @@
<if test="tGzEmpInfo.offerId != null "> <if test="tGzEmpInfo.offerId != null ">
AND a.offer_id = #{tGzEmpInfo.offerId} AND a.offer_id = #{tGzEmpInfo.offerId}
</if> </if>
<if test="tGzEmpInfo.empStatus != null and tGzEmpInfo.empStatus.trim() != ''">
AND a.emp_status = #{tGzEmpInfo.empStatus}
</if>
<if test="tGzEmpInfo.empPushStatus != null and tGzEmpInfo.empPushStatus.trim() != ''"> <if test="tGzEmpInfo.empPushStatus != null and tGzEmpInfo.empPushStatus.trim() != ''">
AND a.emp_push_status = #{tGzEmpInfo.empPushStatus} AND a.emp_push_status = #{tGzEmpInfo.empPushStatus}
</if> </if>
...@@ -211,10 +218,10 @@ ...@@ -211,10 +218,10 @@
</if> </if>
<!--查询提交档案时间--> <!--查询提交档案时间-->
<if test="tGzEmpInfo.createTimeStart != null "> <if test="tGzEmpInfo.createTimeStart != null ">
AND a.create_time &gt;= #{tGzEmpInfo.createTimeStart} AND a.submit_time &gt;= #{tGzEmpInfo.createTimeStart}
</if> </if>
<if test="tGzEmpInfo.createTimeEnd != null "> <if test="tGzEmpInfo.createTimeEnd != null ">
AND a.create_time &lt;= #{tGzEmpInfo.createTimeEnd} AND a.submit_time &lt;= #{tGzEmpInfo.createTimeEnd}
</if> </if>
<if test="tGzEmpInfo.createBy != null and tGzEmpInfo.createBy.trim() != ''"> <if test="tGzEmpInfo.createBy != null and tGzEmpInfo.createBy.trim() != ''">
AND a.create_by = #{tGzEmpInfo.createBy} AND a.create_by = #{tGzEmpInfo.createBy}
...@@ -411,7 +418,7 @@ ...@@ -411,7 +418,7 @@
a.del_flag = '0' a.del_flag = '0'
<include refid="tGzEmpInfo_where"/> <include refid="tGzEmpInfo_where"/>
</where> </where>
ORDER by a.create_time desc,a.id desc ORDER by a.emp_status,a.submit_time desc,a.id desc
</select> </select>
<!--count--> <!--count-->
...@@ -431,10 +438,11 @@ ...@@ -431,10 +438,11 @@
a.id, a.id,
a.biz_id, a.biz_id,
a.offer_id, a.offer_id,
a.emp_status,
a.emp_push_status, a.emp_push_status,
a.contract_push_status, a.contract_push_status,
a.contract_atta_push_status, a.contract_atta_push_status,
date_format(a.create_time, '%Y-%m-%d %H:%i:%s') create_time, date_format(a.submit_time, '%Y-%m-%d %H:%i:%s') create_time,
a.create_by, a.create_by,
a.create_name, a.create_name,
a.update_by, a.update_by,
...@@ -517,7 +525,7 @@ ...@@ -517,7 +525,7 @@
<include refid="tGzEmpInfo_where"/> <include refid="tGzEmpInfo_where"/>
</where> </where>
group by a.id group by a.id
ORDER by a.create_time desc,a.id desc ORDER by a.emp_status,a.submit_time desc,a.id desc
<if test="tGzEmpInfo.limitStart != null"> <if test="tGzEmpInfo.limitStart != null">
limit #{tGzEmpInfo.limitStart},#{tGzEmpInfo.limitEnd} limit #{tGzEmpInfo.limitStart},#{tGzEmpInfo.limitEnd}
</if> </if>
......
...@@ -667,4 +667,20 @@ ...@@ -667,4 +667,20 @@
t_settle_domain a t_settle_domain a
where a.DELETE_FLAG = '0' and a.CS_LOGIN_NAME = #{userLoginName} where a.DELETE_FLAG = '0' and a.CS_LOGIN_NAME = #{userLoginName}
</select> </select>
<select id="getServiceInfoByCodes" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.ProjectCustomerServiceVo">
SELECT
a.DEPART_NO as 'departNo',
a.DEPART_NAME as 'departName',
a.cs_login_name as 'csLoginName'
FROM t_settle_domain a
where 1=1
and a.DELETE_FLAG = '0'
<if test="codes != null and codes.size() > 0">
and a.DEPART_NO in
<foreach collection="codes" item="param" index="index" open="(" close=")" separator=",">
#{param}
</foreach>
</if>
</select>
</mapper> </mapper>
...@@ -638,7 +638,7 @@ public interface CommonConstants { ...@@ -638,7 +638,7 @@ public interface CommonConstants {
List<String> processStatus = Stream.of("0","1").collect(Collectors.toList()); List<String> processStatus = Stream.of("0","1").collect(Collectors.toList());
List<String> processStatusEnd = Stream.of("3","4").collect(Collectors.toList()); List<String> insuranceAutoProcessStatus = Stream.of("0","1","2","5").collect(Collectors.toList());
List<String> processPreStatus = Stream.of("1").collect(Collectors.toList()); List<String> processPreStatus = Stream.of("1").collect(Collectors.toList());
......
...@@ -13,6 +13,7 @@ import java.lang.reflect.Method; ...@@ -13,6 +13,7 @@ import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function; import java.util.function.Function;
...@@ -711,4 +712,43 @@ public class Common { ...@@ -711,4 +712,43 @@ public class Common {
Set<Object> seen = ConcurrentHashMap.newKeySet(); Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t)); return t -> seen.add(keyExtractor.apply(t));
} }
/**
* @Author fxj
* @Description 判断是否为日期 格式 yyyyMMdd
* @Date 11:24 2025/8/6
**/
public static boolean isValidDateAsso(String dateStr) {
// 1. 检查长度是否为8
if (dateStr == null || dateStr.length() != 8) {
return false;
}
// 2. 检查是否全为数字
if (!dateStr.matches("\\d+")) {
return false;
}
try {
Date date = new SimpleDateFormat("yyyyMMdd").parse(dateStr);
} catch (Exception e) {
return false; // 理论上不会发生(因正则已过滤)
}
return true;
}
/**
* @Author fxj
* @Description
* @Date 17:43 2025/8/14
**/
public static void appendStr(StringBuilder sb,String str,String split){
if (Common.isNotNull(sb) && Common.isNotNull(str)){
if (sb.length()>0){
sb.append(Common.isEmpty(split)?",":split);
sb.append(str);
}else {
sb.append(str);
}
}
}
} }
...@@ -1241,6 +1241,17 @@ public class DateUtil { ...@@ -1241,6 +1241,17 @@ public class DateUtil {
public static String getFirstDayString(String yearMonth){ public static String getFirstDayString(String yearMonth){
return yearMonth.substring(0,4)+"-"+yearMonth.substring(4,6)+"-01"; return yearMonth.substring(0,4)+"-"+yearMonth.substring(4,6)+"-01";
} }
/**
* 获取第一天
* @Author fxj
* @Date 2019-10-16
* @param yearMonth YYYYMM 返回 YYYYMMDD
* @return
**/
public static String getFirstDayStringAsso(String yearMonth){
return yearMonth+"01";
}
/** /**
* 当月第一天 * 当月第一天
* @Author fxj * @Author fxj
......
...@@ -85,4 +85,9 @@ public class InsuranceDaprUtil { ...@@ -85,4 +85,9 @@ public class InsuranceDaprUtil {
, daprInsurancesProperties.getAppId(),"/temployeeinsurancepre/inner/updateInsurancePreCustomerName" , updateVo , daprInsurancesProperties.getAppId(),"/temployeeinsurancepre/inner/updateInsurancePreCustomerName" , updateVo
, Object.class, SecurityConstants.FROM_IN); , Object.class, SecurityConstants.FROM_IN);
} }
public R<Boolean> checkExitInsuanceIsProcess(EmployeeRegistrationPreVo preVo) {
return HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(),daprInsurancesProperties.getAppId(),
"/temployeeinsurancepre/inner/checkExitInsuanceIsProcess", JSON.toJSONString(preVo), Boolean.class, SecurityConstants.FROM_IN);
}
} }
...@@ -36,96 +36,113 @@ public class MenuUtil { ...@@ -36,96 +36,113 @@ public class MenuUtil {
private static final String START_STR = "start"; private static final String START_STR = "start";
public void setAuthSql(YifuUser user, BaseEntity entity) { public void setAuthSql(YifuUser user, BaseEntity entity) {
// 是否无权限,默认否
boolean noAuth = false;
// 普通用户: // 普通用户:
if (user != null && Common.isNotNull(user.getId()) && CommonConstants.ONE_STRING.equals(user.getSystemFlag())) { if (user != null && Common.isNotNull(user.getId())) {
// 菜单id if (CommonConstants.ONE_STRING.equals(user.getSystemFlag())) {
String menuId = entity.getMId(); // 菜单id
if (Common.isEmpty(menuId)) { String menuId = entity.getMId();
menuId = entity.getMenuInfo(); if (Common.isEmpty(menuId)) {
} menuId = entity.getMenuInfo();
if (Common.isNotNull(menuId)) { }
String linkId = user.getId(); if (Common.isNotNull(menuId)) {
int linkType = 1; // 用户 String linkId = user.getId();
SysDataAuth sysDataAuth = new SysDataAuth(); int linkType = 1; // 用户
sysDataAuth.setLinkId(linkId); SysDataAuth sysDataAuth = new SysDataAuth();
sysDataAuth.setLinkType(linkType); sysDataAuth.setLinkId(linkId);
// 获取缓存菜单权限的步骤: sysDataAuth.setLinkType(linkType);
Cache cache = cacheManager.getCache(CacheConstants.DATA_AUTH_DETAILS + linkType); // 获取缓存菜单权限的步骤:
Object obj = null; Cache cache = cacheManager.getCache(CacheConstants.DATA_AUTH_DETAILS + linkType);
if (cache != null) { Object obj = null;
obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId); if (cache != null) {
if (Common.isEmpty(obj)) {
HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/dataAuth/refreshAuth", sysDataAuth, SysDataAuth.class, SecurityConstants.FROM_IN);
obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId); obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId);
if (Common.isEmpty(obj)) { if (Common.isEmpty(obj)) {
linkId = user.getUserGroup(); HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
linkType = 0; // 用户组 , "/dataAuth/refreshAuth", sysDataAuth, SysDataAuth.class, SecurityConstants.FROM_IN);
cache = cacheManager.getCache(CacheConstants.DATA_AUTH_DETAILS + linkType); obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId);
if (cache != null) { if (Common.isEmpty(obj)) {
obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId); linkId = user.getUserGroup();
if (Common.isEmpty(obj)) { // 无用户组,直接返回阻断sql
sysDataAuth.setLinkId(linkId); if (Common.isEmpty(linkId)) {
sysDataAuth.setLinkType(linkType); entity.setAuthSql( " and 1=2 ");
HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId() return;
, "/dataAuth/refreshAuth", sysDataAuth, SysDataAuth.class, SecurityConstants.FROM_IN); }
linkType = 0; // 用户组
cache = cacheManager.getCache(CacheConstants.DATA_AUTH_DETAILS + linkType);
if (cache != null) {
obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId); obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId);
if (Common.isEmpty(obj)) {
sysDataAuth.setLinkId(linkId);
sysDataAuth.setLinkType(linkType);
HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/dataAuth/refreshAuth", sysDataAuth, SysDataAuth.class, SecurityConstants.FROM_IN);
obj = cache.get(linkId + CommonConstants.DOWN_LINE_STRING + menuId);
}
} }
} }
} }
} }
} if (Common.isNotNull(obj)) {
if (Common.isNotNull(obj)) { SimpleValueWrapper objs = (SimpleValueWrapper) obj;
SimpleValueWrapper objs = (SimpleValueWrapper) obj; if (Common.isNotNull(objs)) {
if (Common.isNotNull(objs)) { String sql = String.valueOf(objs.get());
String sql = String.valueOf(objs.get()); if (sql.contains("#create_by")) {
if (sql.contains("#create_by")) { sql = sql.replace("#create_by", user.getId());
sql = sql.replace("#create_by", user.getId()); }
} if (sql.contains("#settleDomainId")) {
if (sql.contains("#settleDomainId")) { // 获取人员项目权限
// 获取人员项目权限 R<TSettleDomainListVo> res = HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl()
R<TSettleDomainListVo> res = HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl() , daprArchivesProperties.getAppId(), "/tsettledomain/getSettleDomainIdsByUserId"
, daprArchivesProperties.getAppId(),"/tsettledomain/getSettleDomainIdsByUserId" , user.getId(), TSettleDomainListVo.class, SecurityConstants.FROM_IN);
, user.getId(), TSettleDomainListVo.class, SecurityConstants.FROM_IN); StringBuilder deptStr = new StringBuilder();
StringBuilder deptStr = new StringBuilder(); if (res != null && CommonConstants.SUCCESS == res.getCode()
if (res != null && CommonConstants.SUCCESS == res.getCode() && res.getData() != null && res.getData().getDeptIds() != null
&& res.getData() != null && res.getData().getDeptIds() != null && !res.getData().getDeptIds().isEmpty()) {
&& !res.getData().getDeptIds().isEmpty()) { for (String deptId : res.getData().getDeptIds()) {
for (String deptId : res.getData().getDeptIds()) { deptStr.append(",'").append(deptId).append("'");
deptStr.append(",'").append(deptId).append("'"); }
} }
//sql = sql.replace("or a.settle_domain_id in ('0'#settleDomainId) ", "")
sql = sql.replace("#settleDomainId", deptStr.toString());
} }
//sql = sql.replace("or a.settle_domain_id in ('0'#settleDomainId) ", "") String userIds = "0";
sql = sql.replace("#settleDomainId", deptStr.toString()); if (sql.contains(START_STR)) {
} String deptIds = StringUtils.substringBetween(sql, START_STR, "end");
String userIds = "0"; R<String> userIdR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl()
if (sql.contains(START_STR)) { , daprUpmsProperties.getAppId(), "/user/inner/getUserIdByDeptIds", deptIds
String deptIds = StringUtils.substringBetween(sql,START_STR, "end"); , String.class, SecurityConstants.FROM_IN);
R<String> userIdR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl() if (userIdR != null && CommonConstants.SUCCESS == userIdR.getCode()) {
,daprUpmsProperties.getAppId(),"/user/inner/getUserIdByDeptIds",deptIds userIds = userIdR.getData();
, String.class, SecurityConstants.FROM_IN); }
if (userIdR != null && CommonConstants.SUCCESS == userIdR.getCode()) { sql = sql.replace(START_STR, "").replace("end", "")
userIds = userIdR.getData(); .replace(deptIds, userIds);
} }
sql = sql.replace(START_STR, "").replace("end", "") if (sql.contains("#deptId")) {
.replace(deptIds, userIds); R<String> userIdR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl()
} , daprUpmsProperties.getAppId(), "/user/inner/getUserIdByDeptIds"
if (sql.contains("#deptId")) { , String.valueOf(user.getDeptId()), String.class, SecurityConstants.FROM_IN);
R<String> userIdR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl() if (userIdR != null && CommonConstants.SUCCESS == userIdR.getCode()) {
,daprUpmsProperties.getAppId(),"/user/inner/getUserIdByDeptIds" userIds = userIdR.getData();
,String.valueOf(user.getDeptId()), String.class, SecurityConstants.FROM_IN); }
if (userIdR != null && CommonConstants.SUCCESS == userIdR.getCode()) { sql = sql.replace("#deptId", userIds);
userIds = userIdR.getData(); //sql = sql.replace(" or dept.dept_id = #deptId ", "")
}
if (Common.isNotNull(sql)) {
entity.setAuthSql(sql);
} }
sql = sql.replace("#deptId", userIds);
//sql = sql.replace(" or dept.dept_id = #deptId ", "")
}
if (Common.isNotNull(sql)) {
entity.setAuthSql(sql);
} }
} }
} else {
noAuth = true;
} }
} }
} else {
noAuth = true;
}
// 无权限的,默认无数据
if (noAuth) {
entity.setAuthSql( " and 1=2 ");
} }
} }
} }
...@@ -99,7 +99,7 @@ public class UpmsDaprUtils { ...@@ -99,7 +99,7 @@ public class UpmsDaprUtils {
} }
/** /**
* @Author fxj * @Author fxj
* @Description 通过用户ID 获取 在用的MVP系统的用户 * @Description 通过用户ID 获取 在用的MVP系统的用户
* @Date 17:24 2025/3/12 * @Date 17:24 2025/3/12
**/ **/
public R<SysUsersVo> getUserVoByUserIds(String userIds) { public R<SysUsersVo> getUserVoByUserIds(String userIds) {
...@@ -109,6 +109,21 @@ public class UpmsDaprUtils { ...@@ -109,6 +109,21 @@ public class UpmsDaprUtils {
} }
return allUserVoR; return allUserVoR;
} }
/**
* @Author hgw
* @Description 通过用户ID 获取 在用的MVP系统的用户
* @Date 2025-8-1 14:51:03
**/
public R<SysUsersVo> getInUseUserByIds(String userIds) {
R<SysUsersVo> allUserVoR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId()
,"/user/inner/getInUseUserByIds", userIds, SysUsersVo.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(allUserVoR)){
return R.failed("获取指定用户IDS对应在用的用户信息失败!");
}
return allUserVoR;
}
public R<SysUser> getSimpleUser(String userId) { public R<SysUser> getSimpleUser(String userId) {
R<SysUser> userR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/getSimpleUser",userId, SysUser.class, SecurityConstants.FROM_IN); R<SysUser> userR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/getSimpleUser",userId, SysUser.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(userR)){ if (Common.isEmpty(userR)){
......
...@@ -569,7 +569,9 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -569,7 +569,9 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
!CommonConstants.ONE_STRING.equals(registration.getProcessStatus()))) { !CommonConstants.ONE_STRING.equals(registration.getProcessStatus()))) {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE); return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
} }
if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) { if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()
&& Common.isNotNull(preVo.getInsuranceIsBuy())
&& preVo.getInsuranceIsBuy().equals(CommonConstants.ONE_STRING)) {
List<TEmployeeAutoRegistCheckVo> errorList = new ArrayList<>(); List<TEmployeeAutoRegistCheckVo> errorList = new ArrayList<>();
TEmployeeAutoRegistCheckVo checkVo; TEmployeeAutoRegistCheckVo checkVo;
String key; String key;
...@@ -619,6 +621,19 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -619,6 +621,19 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
} }
} }
if (preVo.getServerItem().contains("商险") && Common.isNotNull(preVo.getInsuranceIsBuy())
&& preVo.getInsuranceIsBuy().equals(CommonConstants.ZERO_STRING)
&& !preVo.getExitInsuranceInfoList().isEmpty()) {
//判断带出的流程中或者已完结的商险数据是否准确
//商险是否存在判断
preVo.setEmpIdcard(registration.getEmpIdcard());
preVo.getExitInsuranceInfoList().forEach(e -> e.setCreateTime(null));
boolean isTrue = checkInsuranceIsProcess(preVo);
if (isTrue) {
return R.other(CommonConstants.TWO_INT,null,"带出的商险已购买数据状态或条数发生变更,请重新确认接收!");
}
}
//点击“接收确认”的时候,监测到该人员该项目下已有在项的档案时,再次提醒:该人员已在项, //点击“接收确认”的时候,监测到该人员该项目下已有在项的档案时,再次提醒:该人员已在项,
//状态将更新成“已处理”;处理记录中,针对此情况,记录真实的进项时间,备注:先于登记入项 //状态将更新成“已处理”;处理记录中,针对此情况,记录真实的进项时间,备注:先于登记入项
EmpProjectStatusVo vo = new EmpProjectStatusVo(); EmpProjectStatusVo vo = new EmpProjectStatusVo();
...@@ -645,7 +660,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -645,7 +660,16 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
initRegistPreInfo(registration, preVo, user, CommonConstants.ZERO_STRING); initRegistPreInfo(registration, preVo, user, CommonConstants.ZERO_STRING);
R<String> domainR = archivesDaprUtil.saveRegistPreInfo(preVo); R<String> domainR = archivesDaprUtil.saveRegistPreInfo(preVo);
if (Common.isNotNull(domainR) && Common.isNotNull(domainR.getData())) { if (Common.isNotNull(domainR) && Common.isNotNull(domainR.getData())) {
if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) { //是否存在商险为是时生成入职确认信息商险明细数据
if (preVo.getServerItem().contains("商险") && Common.isNotNull(preVo.getInsuranceIsBuy())
&& preVo.getInsuranceIsBuy().equals(CommonConstants.ZERO_STRING)
&& !preVo.getExitInsuranceInfoList().isEmpty()) {
preVo.getExitInsuranceInfoList().forEach(insurancePreVo -> insurancePreVo.setRegisterId(domainR.getData()));
//生成入职确认信息商险明细数据
insuranceDaprUtil.saveInsurancePreInfo(preVo);
} else if (preVo.getServerItem().contains("商险")
&& preVo.getInsuranceIsBuy().equals(CommonConstants.ONE_STRING)
&& !preVo.getEmployeeInsurancePreVos().isEmpty()) {
//生成商险待购买的数据 //生成商险待购买的数据
for (TEmployeeInsurancePreVo insurancePreVo : preVo.getEmployeeInsurancePreVos()) { for (TEmployeeInsurancePreVo insurancePreVo : preVo.getEmployeeInsurancePreVos()) {
initInsruancePreInfo(registration, insurancePreVo, user, domainR.getData()); initInsruancePreInfo(registration, insurancePreVo, user, domainR.getData());
...@@ -958,6 +982,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -958,6 +982,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) { if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) {
//生成商险待购买的数据 //生成商险待购买的数据
TEmployeeInsurancePreVo insurancePreVo = preVo.getEmployeeInsurancePreVos().get(0); TEmployeeInsurancePreVo insurancePreVo = preVo.getEmployeeInsurancePreVos().get(0);
//批量的商险是否已购买默认为否
preVo.setInsuranceIsBuy(CommonConstants.ONE_STRING);
initInsruancePreInfo(registration, insurancePreVo, user, domainR.getData()); initInsruancePreInfo(registration, insurancePreVo, user, domainR.getData());
insuranceDaprUtil.saveInsurancePreInfo(preVo); insuranceDaprUtil.saveInsurancePreInfo(preVo);
} }
...@@ -1097,7 +1123,15 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1097,7 +1123,15 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
initRegistPreInfo(registrationNow, preVo, user, CommonConstants.FOUR_STRING); initRegistPreInfo(registrationNow, preVo, user, CommonConstants.FOUR_STRING);
R<String> domainR = archivesDaprUtil.saveRegistPreInfo(preVo); R<String> domainR = archivesDaprUtil.saveRegistPreInfo(preVo);
if (Common.isNotNull(domainR) && Common.isNotNull(domainR.getData())){ if (Common.isNotNull(domainR) && Common.isNotNull(domainR.getData())){
if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) { //是否存在商险为是时生成入职确认信息商险明细数据
if (preVo.getServerItem().contains("商险") && Common.isNotNull(preVo.getInsuranceIsBuy())
&& preVo.getInsuranceIsBuy().equals(CommonConstants.ZERO_STRING)
&& !preVo.getExitInsuranceInfoList().isEmpty()) {
preVo.getExitInsuranceInfoList().forEach(e -> e.setCreateTime(null));
preVo.getExitInsuranceInfoList().forEach(insurancePreVo -> insurancePreVo.setRegisterId(domainR.getData()));
//生成入职确认信息商险明细数据
insuranceDaprUtil.saveInsurancePreInfo(preVo);
} else if (preVo.getServerItem().contains("商险") && !preVo.getEmployeeInsurancePreVos().isEmpty()) {
//生成商险待购买的数据 //生成商险待购买的数据
for (TEmployeeInsurancePreVo insurancePreVo : preVo.getEmployeeInsurancePreVos()) { for (TEmployeeInsurancePreVo insurancePreVo : preVo.getEmployeeInsurancePreVos()) {
initInsruancePreInfo(registrationNow, insurancePreVo, user, domainR.getData()); initInsruancePreInfo(registrationNow, insurancePreVo, user, domainR.getData());
...@@ -1602,6 +1636,13 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1602,6 +1636,13 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo.getExpectedCollectionTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT) + " 15:20", DateUtil.DATETIME_PATTERN_MINUTE)); preVo.getExpectedCollectionTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT) + " 15:20", DateUtil.DATETIME_PATTERN_MINUTE));
} }
//商险状态是否正常判断
private boolean checkInsuranceIsProcess(EmployeeRegistrationPreVo preVo) {
R<Boolean> flag = insuranceDaprUtil.checkExitInsuanceIsProcess(preVo);
//是否已签署为是需要判断合同是否在用或者流程中
return Common.isEmpty(flag) || Boolean.TRUE.equals(!flag.getData());
}
//商险是否存在判断 //商险是否存在判断
private TEmployeeAutoRegistCheckVo checkInsuranceExit(TEmployeeInsurancePreVo preVo,EmployeeRegistration registration) { private TEmployeeAutoRegistCheckVo checkInsuranceExit(TEmployeeInsurancePreVo preVo,EmployeeRegistration registration) {
//查询入职确认信息数据 //查询入职确认信息数据
......
...@@ -104,6 +104,10 @@ public class InsurancesConstants { ...@@ -104,6 +104,10 @@ public class InsurancesConstants {
* 投保记录已存在 * 投保记录已存在
*/ */
public static final String DATA_IS_EXIST = "投保记录已存在"; public static final String DATA_IS_EXIST = "投保记录已存在";
/**
* 本次派单前系统已有该人员在途/在保数据
*/
public static final String DIS_PERSON_DATA_IS_EXIST = "本次派单前系统已有该人员在途/在保数据";
/** /**
* 投保记录不存在 * 投保记录不存在
*/ */
...@@ -468,6 +472,14 @@ public class InsurancesConstants { ...@@ -468,6 +472,14 @@ public class InsurancesConstants {
* 商险已结算,无法登记保单保费 * 商险已结算,无法登记保单保费
*/ */
public static final String SETTLE_HANDLE_THREE_NOT_REGISTERED = "商险已结算,无法登记保单保费"; public static final String SETTLE_HANDLE_THREE_NOT_REGISTERED = "商险已结算,无法登记保单保费";
/**
* 商险支出中,无法登记保单保费
*/
public static final String PAY_SETTLE_ONE_NOT_REGISTERED = "商险支出中,无法登记保单保费";
/**
* 商险已支出,无法登记保单保费
*/
public static final String PAY_SETTLE_TWO_NOT_REGISTERED = "商险已支出,无法登记保单保费";
/** /**
* 保单号不存在或已过期 * 保单号不存在或已过期
*/ */
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -147,6 +148,14 @@ public class TEmployeeInsurancePre extends BaseEntity { ...@@ -147,6 +148,14 @@ public class TEmployeeInsurancePre extends BaseEntity {
@Schema(description = "商险ID") @Schema(description = "商险ID")
private String insurancesId; private String insurancesId;
@Schema(description = "发起失败原因")
private String errorInfo;
@Schema(description = "发起失败时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@JsonIgnore
private LocalDateTime errorTime;
@TableField(exist = false) @TableField(exist = false)
@Schema(description = "修改类型:1新增;2修改;3删除;4状态346为不可编辑") @Schema(description = "修改类型:1新增;2修改;3删除;4状态346为不可编辑")
private String modelType; private String modelType;
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Data
@TableName("t_employee_insurance_pre_qw")
@Schema(description = "商险定时失败的企微")
public class TEmployeeInsurancePreQw {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 前端客服
*/
@ExcelAttribute(name = "前端客服", maxLength = 30)
@Length(max = 30, message = "前端客服不能超过30个字符")
@ExcelProperty("前端客服")
@Schema(description = "前端客服")
private String customerUsername;
/**
* 前端客服登录名
*/
@ExcelAttribute(name = "前端客服登录名", isNotEmpty = true, errorInfo = "前端客服登录名不能为空", maxLength = 30)
@NotBlank(message = "前端客服登录名不能为空")
@Length(max = 30, message = "前端客服登录名不能超过30个字符")
@ExcelProperty("前端客服登录名")
@Schema(description = "前端客服登录名")
private String customerUserLoginname;
/**
* 内容
*/
@ExcelAttribute(name = "内容", isNotEmpty = true, errorInfo = "内容不能为空", maxLength = 200)
@NotBlank(message = "内容不能为空")
@Length(max = 200, message = "内容不能超过200个字符")
@ExcelProperty("内容")
@Schema(description = "内容")
private String description;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("创建时间")
@ColumnWidth(18)
private LocalDateTime createTime;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 商险定时失败的企微的详情
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Data
@TableName("t_employee_insurance_pre_qw_detail")
@Schema(description = "商险定时失败的企微的详情")
public class TEmployeeInsurancePreQwDetail {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 关联主键(t_employee_insurance_pre_qw表的ID)
*/
@ExcelAttribute(name = "关联主键(t_employee_insurance_pre_qw表的ID)", isNotEmpty = true, errorInfo = "关联主键(t_employee_insurance_pre_qw表的ID)不能为空", maxLength = 36)
@NotBlank(message = "关联主键(t_employee_insurance_pre_qw表的ID)不能为空")
@Length(max = 36, message = "关联主键(t_employee_insurance_pre_qw表的ID)不能超过36个字符")
@ExcelProperty("关联主键(t_employee_insurance_pre_qw表的ID)")
@Schema(description = "关联主键(t_employee_insurance_pre_qw表的ID)")
private String mainId;
/**
* 姓名
*/
@ExcelAttribute(name = "姓名", maxLength = 30)
@Length(max = 30, message = "姓名不能超过30个字符")
@ExcelProperty("姓名")
@Schema(description = "姓名")
private String empName;
/**
* 身份证
*/
@ExcelAttribute(name = "身份证", maxLength = 18)
@Length(max = 18, message = "身份证不能超过18个字符")
@ExcelProperty("身份证")
@Schema(description = "身份证")
private String empIdcard;
/**
* 失败原因
*/
@ExcelAttribute(name = "失败原因", maxLength = 200)
@Length(max = 200, message = "失败原因不能超过200个字符")
@ExcelProperty("失败原因")
@Schema(description = "失败原因")
private String errorInfo;
/**
* 失败时间
*/
@ExcelAttribute(name = "失败时间", isDate = true)
@ExcelProperty("失败时间")
@Schema(description = "失败时间")
private LocalDateTime errorTime;
/**
* 商险待派单ID(t_employee_insurance_pre的ID)
*/
@ExcelAttribute(name = "商险待派单ID(t_employee_insurance_pre的ID)", maxLength = 36)
@Length(max = 36, message = "商险待派单ID(t_employee_insurance_pre的ID)不能超过36个字符")
@ExcelProperty("商险待派单ID(t_employee_insurance_pre的ID)")
@Schema(description = "商险待派单ID(t_employee_insurance_pre的ID)")
private String preId;
}
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 入职确认信息已购买商险明细
*
* @author huych
* @date 2025-08-05 15:08:42
*/
@Data
@TableName("t_insurance_pre_detail")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "入职确认信息已购买商险明细")
public class TInsurancePreDetail extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 姓名
*/
@ExcelAttribute(name = "姓名", maxLength = 32)
@Length(max = 32, message = "姓名不能超过32个字符")
@ExcelProperty("姓名")
@Schema(description = "姓名")
private String empName;
/**
* 身份证号
*/
@ExcelAttribute(name = "身份证号", isNotEmpty = true, errorInfo = "身份证号不能为空", maxLength = 32)
@NotBlank(message = "身份证号不能为空")
@Length(max = 32, message = "身份证号不能超过32个字符")
@ExcelProperty("身份证号")
@Schema(description = "身份证号")
private String empIdcardNo;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码", maxLength = 30)
@Length(max = 30, message = "项目编码不能超过30个字符")
@ExcelProperty("项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 投保岗位
*/
@ExcelAttribute(name = "投保岗位", maxLength = 32)
@Length(max = 32, message = "投保岗位不能超过32个字符")
@ExcelProperty("投保岗位")
@Schema(description = "投保岗位")
private String post;
/**
* 保险公司名称
*/
@ExcelAttribute(name = "保险公司名称", maxLength = 60)
@Length(max = 60, message = "保险公司名称不能超过60个字符")
@ExcelProperty("保险公司名称")
@Schema(description = "保险公司名称")
private String insuranceCompanyName;
/**
* 险种名称
*/
@ExcelAttribute(name = "险种名称", maxLength = 50)
@Length(max = 50, message = "险种名称不能超过50个字符")
@ExcelProperty("险种名称")
@Schema(description = "险种名称")
private String insuranceTypeName;
/**
* 购买标准
*/
@ExcelAttribute(name = "购买标准", maxLength = 32)
@Length(max = 32, message = "购买标准不能超过32个字符")
@ExcelProperty("购买标准")
@Schema(description = "购买标准")
private String buyStandard;
/**
* 保单开始时间
*/
@ExcelAttribute(name = "保单开始时间", isDate = true)
@ExcelProperty("保单开始时间")
@Schema(description = "保单开始时间")
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
private Date policyStart;
/**
* 保单结束时间
*/
@ExcelAttribute(name = "保单结束时间", isDate = true)
@ExcelProperty("保单结束时间")
@Schema(description = "保单结束时间")
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
private Date policyEnd;
/**
* 保单生效日期
*/
@ExcelAttribute(name = "保单生效日期", isDate = true)
@ExcelProperty("保单生效日期")
@Schema(description = "保单生效日期")
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
private Date policyEffect;
/**
* 投保类型, 1新增、3批增、4替换
*/
@ExcelAttribute(name = "购买类型, 1新增、3批增、4替换")
@ExcelProperty("投保类型, 1新增、3批增、4替换")
@Schema(description = "投保类型, 1新增、3批增、4替换")
private Integer buyType;
/**
* 投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员
*/
@ExcelAttribute(name = "投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
@ExcelProperty("投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
@Schema(description = "投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
private Integer buyHandleStatus;
/**
* 结算主体名称
*/
@ExcelAttribute(name = "结算主体名称", maxLength = 50)
@Length(max = 50, message = "结算主体名称不能超过50个字符")
@ExcelProperty("结算主体名称")
@Schema(description = "结算主体名称")
private String deptName;
/**
* 客户名称
*/
@ExcelAttribute(name = "客户名称", maxLength = 50)
@Length(max = 50, message = "客户名称不能超过50个字符")
@ExcelProperty("客户名称")
@Schema(description = "客户名称")
private String unitName;
/**
* 客户编码
*/
@ExcelAttribute(name = "客户编码", maxLength = 32)
@Length(max = 32, message = "客户编码不能超过32个字符")
@ExcelProperty("客户编码")
@Schema(description = "客户编码")
private String unitNo;
/**
* 是否地市自购0是 1 否
*/
@ExcelAttribute(name = "是否地市自购0是 1 否", maxLength = 1)
@Length(max = 1, message = "是否地市自购0是 1 否不能超过1个字符")
@ExcelProperty("是否地市自购0是 1 否")
@Schema(description = "是否地市自购0是 1 否")
private String isAdress;
/**
* 入离职登记id
*/
@ExcelAttribute(name = "入离职登记id", maxLength = 32)
@Length(max = 32, message = "入离职登记id不能超过32个字符")
@ExcelProperty("入离职登记id")
@Schema(description = "入离职登记id")
private String registerId;
/**
* 商险购买地省
*/
@Schema(description = "商险购买地省")
private String insuranceProvinceName;
/**
* 商险购买地市
*/
@Schema(description = "商险购买地市")
private String insuranceCityName;
/**
* 派单时间
*/
@ExcelAttribute(name = "派单时间", isDate = true)
@ExcelProperty("派单时间")
@Schema(description = "派单时间")
@TableField(exist = false)
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
private Date disTime;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Description: 查询EKP中的状态,拦截批量保单号保费
* @Author: hgw
* @Date: 2025/8/1 18:02
* @return:
**/
@Data
public class EkpSettleStatusVo implements Serializable {
/**
* 结算状态
**/
private String settleStatus;
/**
* 支出状态
**/
private String payStatus;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author huych
* @description 商险自动化已购买商险明细VO
* @date 2025-8-7 10:20:26
*/
@Data
@Schema(description = "商险自动化已购买商险明细VO")
public class EmployeePreInsuranceListVo implements Serializable {
private static final long serialVersionUID = 628032758008497542L;
private List<TInsurancePreDetail> preList;
}
...@@ -2,11 +2,13 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo; ...@@ -2,11 +2,13 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* @author licancan * @author licancan
...@@ -200,6 +202,9 @@ public class InsuranceAddParam implements Serializable { ...@@ -200,6 +202,9 @@ public class InsuranceAddParam implements Serializable {
@Schema(description = "项目名称") @Schema(description = "项目名称")
private String deptName; private String deptName;
@Schema(description = "投标类型")
private Integer buyType;
@Schema(description ="客户id") @Schema(description ="客户id")
private String unitId; private String unitId;
...@@ -214,4 +219,12 @@ public class InsuranceAddParam implements Serializable { ...@@ -214,4 +219,12 @@ public class InsuranceAddParam implements Serializable {
*/ */
@Schema(description = "是否地市自购") @Schema(description = "是否地市自购")
private String isAdress; private String isAdress;
/**
* 是否已有参保明细标识 1是 空否
*/
@Schema(description = "是否已有参保明细标识")
private String isExit;
private List<TInsurancePreDetail> inProgressList;
} }
package com.yifu.cloud.plus.v1.yifu.insurances.vo; package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* @author huyc * @author huyc
...@@ -25,6 +27,16 @@ public class InsuranceAutoParam implements Serializable { ...@@ -25,6 +27,16 @@ public class InsuranceAutoParam implements Serializable {
*/ */
@Schema(description = "项目编码") @Schema(description = "项目编码")
private String deptNo; private String deptNo;
/**
* 项目名称
*/
@Schema(description = "项目名称")
private String deptName;
/**
* 投标类型
*/
@Schema(description = "投标类型")
private Integer buyType;
/** /**
* 员工姓名 * 员工姓名
...@@ -156,4 +168,12 @@ public class InsuranceAutoParam implements Serializable { ...@@ -156,4 +168,12 @@ public class InsuranceAutoParam implements Serializable {
*/ */
@Schema(description = "前端客服姓名") @Schema(description = "前端客服姓名")
private String customerUserName; private String customerUserName;
/**
* 是否已有参保明细标识 1是 空否
*/
@Schema(description = "是否已有参保明细标识")
private String isExit;
private List<TInsurancePreDetail> inProgressList;
} }
...@@ -2,12 +2,14 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo; ...@@ -2,12 +2,14 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* @author licancan * @author licancan
...@@ -188,15 +190,19 @@ public class InsuranceBatchParam implements Serializable { ...@@ -188,15 +190,19 @@ public class InsuranceBatchParam implements Serializable {
/** /**
* 保单开始时间 * 保单开始时间
*/ */
@JsonIgnore
private LocalDate policyStart; private LocalDate policyStart;
/** /**
* 保单结束时间 * 保单结束时间
*/ */
@JsonIgnore
private LocalDate policyEnd; private LocalDate policyEnd;
@Schema(description = "项目名称")
private String deptName;
@Schema(description = "投标类型")
private Integer buyType;
/** /**
* EKP的 是否BPO: 是 否 * EKP的 是否BPO: 是 否
*/ */
...@@ -204,9 +210,6 @@ public class InsuranceBatchParam implements Serializable { ...@@ -204,9 +210,6 @@ public class InsuranceBatchParam implements Serializable {
@ExcelIgnore @ExcelIgnore
private String bpoFlag; private String bpoFlag;
@Schema(description = "项目名称")
private String deptName;
@Schema(description ="客户id") @Schema(description ="客户id")
private String unitId; private String unitId;
...@@ -221,4 +224,12 @@ public class InsuranceBatchParam implements Serializable { ...@@ -221,4 +224,12 @@ public class InsuranceBatchParam implements Serializable {
*/ */
@Schema(description = "是否地市自购") @Schema(description = "是否地市自购")
private String isAdress; private String isAdress;
/**
* 是否已有参保明细标识 1是 空否
*/
@Schema(description = "是否已有参保明细标识")
private String isExit;
private List<TInsurancePreDetail> inProgressList;
} }
...@@ -3,10 +3,12 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo; ...@@ -3,10 +3,12 @@ package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail; import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* @author licancan * @author licancan
...@@ -136,6 +138,9 @@ public class InsuranceReplaceParam implements Serializable { ...@@ -136,6 +138,9 @@ public class InsuranceReplaceParam implements Serializable {
@Schema(description = "项目名称") @Schema(description = "项目名称")
private String deptName; private String deptName;
@Schema(description = "投标类型")
private Integer buyType;
@Schema(description ="客户id") @Schema(description ="客户id")
private String unitId; private String unitId;
...@@ -151,11 +156,18 @@ public class InsuranceReplaceParam implements Serializable { ...@@ -151,11 +156,18 @@ public class InsuranceReplaceParam implements Serializable {
@Schema(description = "是否地市自购") @Schema(description = "是否地市自购")
private String isAdress; private String isAdress;
/** /**
* 备注 * 备注
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
/**
* 是否已有参保明细标识 1是 空否
*/
@Schema(description = "是否已有参保明细标识")
private String isExit;
private List<TInsurancePreDetail> inProgressList;
} }
...@@ -230,6 +230,13 @@ public class InsuredListVo implements Serializable { ...@@ -230,6 +230,13 @@ public class InsuredListVo implements Serializable {
@ExcelIgnore @ExcelIgnore
private Integer insuranceCity; private Integer insuranceCity;
/**
* 投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员
*/
@Schema(description = "投保办理状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
@ExcelIgnore
private Integer buyHandleStatus;
/** /**
* 商险购买地市 * 商险购买地市
*/ */
......
...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller; ...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo; 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.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
...@@ -12,10 +13,7 @@ import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner; ...@@ -12,10 +13,7 @@ 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.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre; import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TEmployeeInsurancePreService; import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TEmployeeInsurancePreService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EmployeePreLogListVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreSearchVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsuranceSelectVo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -162,8 +160,8 @@ public class TEmployeeInsurancePreController { ...@@ -162,8 +160,8 @@ public class TEmployeeInsurancePreController {
**/ **/
@Operation(description = "商险派单信息单个/批量派单") @Operation(description = "商险派单信息单个/批量派单")
@PostMapping("/batchDispatcherInsurance") @PostMapping("/batchDispatcherInsurance")
public R batchDispatcherInsurance(@RequestBody List<String> idList) { public R batchDispatcherInsurance(@RequestBody List<String> idList,@RequestParam(required = false) String isExit) {
return tEmployeeInsurancePreService.batchDispatcherInsurance(idList); return tEmployeeInsurancePreService.batchDispatcherInsurance(idList, isExit, false);
} }
/** /**
...@@ -190,6 +188,42 @@ public class TEmployeeInsurancePreController { ...@@ -190,6 +188,42 @@ public class TEmployeeInsurancePreController {
return tEmployeeInsurancePreService.saveInsurancePreInfo(preVo); return tEmployeeInsurancePreService.saveInsurancePreInfo(preVo);
} }
/**
* 信息修改入口新增商险已购买明细
* @author huych
* @date 2025-08-14 11:46:16
**/
@Operation(description = "信息修改入口新增商险已购买明细")
@Inner
@PostMapping("/inner/updateInfoSaveInsurancePreInfo")
public Boolean updateInfoSaveInsurancePreInfo(@RequestBody EmployeeRegistrationPre pre) {
return tEmployeeInsurancePreService.updateInfoSaveInsurancePreInfo(pre);
}
/**
* 信息修改入口删除商险已购买明细
* @author huych
* @date 2025-08-14 11:46:16
**/
@Operation(description = "信息修改入口删除商险已购买明细")
@Inner
@PostMapping("/inner/deleteInsurancePreInfo")
public Boolean deleteInsurancePreInfo(@RequestBody EmployeeRegistrationPre pre) {
return tEmployeeInsurancePreService.deleteInsurancePreInfo(pre);
}
/**
* 商险状态是否正常判断
* @author huych
* @date 2025-08-05 16:26:38
**/
@Operation(description = "商险状态是否正常判断")
@Inner
@PostMapping("/inner/checkExitInsuanceIsProcess")
public Boolean checkExitInsuanceIsProcess(@RequestBody EmployeeRegistrationPreVo preVo) {
return tEmployeeInsurancePreService.checkExitInsuanceIsProcess(preVo);
}
/** /**
* 更新商险待购买的前端客服姓名 * 更新商险待购买的前端客服姓名
* @author huych * @author huych
...@@ -265,4 +299,17 @@ public class TEmployeeInsurancePreController { ...@@ -265,4 +299,17 @@ public class TEmployeeInsurancePreController {
return tEmployeeInsurancePreService.deleteInsuranceByPreId(preId); return tEmployeeInsurancePreService.deleteInsuranceByPreId(preId);
} }
/**
* @param empPreId 入职确认信息表ID
* @Description: 获取商险已购买信息
* @Author: huych
* @Date: 2025/8/7 10:25
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail>>
**/
@Inner
@PostMapping("/inner/getExitInsuranceListByEmpPreId")
public EmployeePreInsuranceListVo getExitInsuranceListByEmpPreId(@RequestBody String empPreId){
return tEmployeeInsurancePreService.getExitInsuranceListByEmpPreId(empPreId);
}
} }
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQwDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TEmployeeInsurancePreQwDetailService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/temployeeinsurancepreqwdetail")
@Tag(name = "商险定时失败的企微管理")
public class TEmployeeInsurancePreQwDetailController {
private final TEmployeeInsurancePreQwDetailService tEmployeeInsurancePreQwDetailService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tEmployeeInsurancePreQwDetail 商险定时失败的企微
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TEmployeeInsurancePreQwDetail>> getTEmployeeInsurancePreQwDetailPage(Page<TEmployeeInsurancePreQwDetail> page, TEmployeeInsurancePreQwDetail tEmployeeInsurancePreQwDetail) {
if (tEmployeeInsurancePreQwDetail == null) {
tEmployeeInsurancePreQwDetail = new TEmployeeInsurancePreQwDetail();
}
if (Common.isEmpty(tEmployeeInsurancePreQwDetail.getMainId())) {
tEmployeeInsurancePreQwDetail.setMainId(CommonConstants.ZERO_STRING);
}
return new R<>(tEmployeeInsurancePreQwDetailService.getTEmployeeInsurancePreQwDetailPage(page, tEmployeeInsurancePreQwDetail));
}
}
...@@ -14,6 +14,7 @@ import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner; ...@@ -14,6 +14,7 @@ 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.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.constants.InsurancesConstants; import com.yifu.cloud.plus.v1.yifu.insurances.constants.InsurancesConstants;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceOperate; 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; import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsuranceDetailService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*; import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount;
...@@ -874,4 +875,15 @@ public class TInsuranceDetailController { ...@@ -874,4 +875,15 @@ public class TInsuranceDetailController {
return R.ok(tInsuranceDetailService.policyPageToAutoSelect(page, param, mId)); return R.ok(tInsuranceDetailService.policyPageToAutoSelect(page, param, mId));
} }
/**
* 查询在用或者在途的商险数据
* @param empIdcard 身份证号
* @return
*/
@Operation(description = "查询在用或者在途的商险数据")
@PostMapping("/getOnProcessInsurancesInfo")
public R<List<TInsurancePreDetail>> getInProcessInsurancesInfo(@RequestParam String empIdcard) {
return R.ok(tInsuranceDetailService.getOnProcessInsurancesInfo(empIdcard));
}
} }
...@@ -47,7 +47,7 @@ public interface EkpSettleMapper { ...@@ -47,7 +47,7 @@ public interface EkpSettleMapper {
* @param id * @param id
* @return {@link SettleVo} * @return {@link SettleVo}
*/ */
String getSettleStatusFromEkpInsuranceDetail(String id); EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String id);
List<EkpInsuranceViewVo> selectSettleStatusBySettleNo(@Param("settleNo") String settleNo, @Param("payFlag") String payFlag); List<EkpInsuranceViewVo> selectSettleStatusBySettleNo(@Param("settleNo") String settleNo, @Param("payFlag") String payFlag);
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQwDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Mapper
public interface TEmployeeInsurancePreQwDetailMapper extends BaseMapper<TEmployeeInsurancePreQwDetail> {
/**
* 商险定时失败的企微简单分页查询
*
* @param tEmployeeInsurancePreQwDetail 商险定时失败的企微
* @return
*/
IPage<TEmployeeInsurancePreQwDetail> getTEmployeeInsurancePreQwDetailPage(Page<TEmployeeInsurancePreQwDetail> page
, @Param("tEmployeeInsurancePreQwDetail") TEmployeeInsurancePreQwDetail tEmployeeInsurancePreQwDetail);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQw;
import org.apache.ibatis.annotations.Mapper;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Mapper
public interface TEmployeeInsurancePreQwMapper extends BaseMapper<TEmployeeInsurancePreQw> {
}
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail; import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*; import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -334,5 +335,9 @@ public interface TInsuranceDetailMapper extends BaseMapper<TInsuranceDetail> { ...@@ -334,5 +335,9 @@ public interface TInsuranceDetailMapper extends BaseMapper<TInsuranceDetail> {
*/ */
IPage<InsuredListVo> policyPageToAutoSelect(Page<InsuredListVo> page, @Param("param") InsuredParam param); IPage<InsuredListVo> policyPageToAutoSelect(Page<InsuredListVo> page, @Param("param") InsuredParam param);
/**
* 派单前系统已有在途/在保数据的人员明细
*/
List<TInsurancePreDetail> getOnProcessInsuredList(@Param("empIdCard") String empIdCard);
} }
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import org.apache.ibatis.annotations.Mapper;
/**
* 入职确认信息已购买商险明细
*
* @author huych
* @date 2025-08-05 15:08:42
*/
@Mapper
public interface TInsurancePreDetailMapper extends BaseMapper<TInsurancePreDetail> {
}
...@@ -36,7 +36,7 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> { ...@@ -36,7 +36,7 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> {
* @param id 新增类 * @param id 新增类
* @return {@link R} * @return {@link R}
*/ */
String getSettleStatusFromEkpInsuranceDetail(String id); EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String id);
/** /**
* 根据结算单编号查询商险视图信息 * 根据结算单编号查询商险视图信息
......
...@@ -45,7 +45,7 @@ public class EkpSettleServiceImpl implements EkpSettleService { ...@@ -45,7 +45,7 @@ public class EkpSettleServiceImpl implements EkpSettleService {
} }
@Override @Override
public String getSettleStatusFromEkpInsuranceDetail(String id) { public EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String id) {
return ekpSettleMapper.getSettleStatusFromEkpInsuranceDetail(id); return ekpSettleMapper.getSettleStatusFromEkpInsuranceDetail(id);
} }
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQwDetail;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
public interface TEmployeeInsurancePreQwDetailService extends IService<TEmployeeInsurancePreQwDetail> {
/**
* 商险定时失败的企微简单分页查询
*
* @param tEmployeeInsurancePreQwDetail 商险定时失败的企微
* @return
*/
IPage<TEmployeeInsurancePreQwDetail> getTEmployeeInsurancePreQwDetailPage(Page<TEmployeeInsurancePreQwDetail> page, TEmployeeInsurancePreQwDetail tEmployeeInsurancePreQwDetail);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQw;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
public interface TEmployeeInsurancePreQwService extends IService<TEmployeeInsurancePreQw> {
}
...@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo; 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.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre; import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePre;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EmployeePreLogListVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreSearchVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsuranceSelectVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
...@@ -59,9 +57,10 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc ...@@ -59,9 +57,10 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc
/** /**
* 商险派单信息批量派单 * 商险派单信息批量派单
* @param idList id集合 * @param idList id集合
* @param sameFlag 是否要做重复人员明细校验的标识 1 不需要 空需要
* @return * @return
*/ */
R batchDispatcherInsurance(List<String> idList); R batchDispatcherInsurance(List<String> idList,String sameFlag, boolean pushQiWeiFlag);
/** /**
* 新增商险待购买信息 * 新增商险待购买信息
...@@ -70,6 +69,17 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc ...@@ -70,6 +69,17 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc
*/ */
Boolean saveInsurancePreInfo(EmployeeRegistrationPreVo preVo); Boolean saveInsurancePreInfo(EmployeeRegistrationPreVo preVo);
/**
* 信息修改入口新增商险待购买信息
* @param pre
* @return
*/
Boolean updateInfoSaveInsurancePreInfo(EmployeeRegistrationPre pre);
Boolean deleteInsurancePreInfo(EmployeeRegistrationPre pre);
Boolean checkExitInsuanceIsProcess(EmployeeRegistrationPreVo preVo);
TEmployeeInsuranceSelectVo selectInsurancePreInfoList(TEmployeeInsurancePreVo preVo); TEmployeeInsuranceSelectVo selectInsurancePreInfoList(TEmployeeInsurancePreVo preVo);
void updateInsurancePreCustomerName(EmployeeRegistrationCustomerUserUpdateVo updateVo); void updateInsurancePreCustomerName(EmployeeRegistrationCustomerUserUpdateVo updateVo);
...@@ -101,4 +111,12 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc ...@@ -101,4 +111,12 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc
**/ **/
boolean deleteInsuranceByPreId(String preId); boolean deleteInsuranceByPreId(String preId);
/**
* @param empPreId 入职确认信息表ID
* @Description: 获取商险已购买信息
* @Author: huych
* @Date: 2025/8/7 10:25
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail>>
**/
EmployeePreInsuranceListVo getExitInsuranceListByEmpPreId(String empPreId);
} }
...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.R; ...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail; 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.TInsuranceOperate;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*; import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount;
import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryRiskListVo; import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryRiskListVo;
...@@ -575,5 +576,7 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> { ...@@ -575,5 +576,7 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
*/ */
IPage<InsuredListVo> policyPageToAutoSelect(Page<InsuredListVo> page, InsuredParam param, String mId); IPage<InsuredListVo> policyPageToAutoSelect(Page<InsuredListVo> page, InsuredParam param, String mId);
List<TInsurancePreDetail> getOnProcessInsurancesInfo(String empIdCard);
} }
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
/**
* 入职确认信息已购买商险明细
*
* @author huych
* @date 2025-08-05 15:08:42
*/
public interface TInsurancePreDetailService extends IService<TInsurancePreDetail> {
}
...@@ -53,7 +53,7 @@ public class ScheduleServiceImpl implements ScheduleService { ...@@ -53,7 +53,7 @@ public class ScheduleServiceImpl implements ScheduleService {
transactionTemplate.execute(status -> { transactionTemplate.execute(status -> {
List<String> idList = new ArrayList<>(); List<String> idList = new ArrayList<>();
idList.add(aId); idList.add(aId);
insurancePreService.batchDispatcherInsurance(idList); insurancePreService.batchDispatcherInsurance(idList,CommonConstants.ONE_STRING, false);
return null; return null;
}); });
} }
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQwDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TEmployeeInsurancePreQwDetailMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TEmployeeInsurancePreQwDetailService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Log4j2
@Service
public class TEmployeeInsurancePreQwDetailServiceImpl extends ServiceImpl<TEmployeeInsurancePreQwDetailMapper, TEmployeeInsurancePreQwDetail> implements TEmployeeInsurancePreQwDetailService {
/**
* 商险定时失败的企微简单分页查询
*
* @param tEmployeeInsurancePreQwDetail 商险定时失败的企微
* @return
*/
@Override
public IPage<TEmployeeInsurancePreQwDetail> getTEmployeeInsurancePreQwDetailPage(Page<TEmployeeInsurancePreQwDetail> page, TEmployeeInsurancePreQwDetail tEmployeeInsurancePreQwDetail) {
return baseMapper.getTEmployeeInsurancePreQwDetailPage(page, tEmployeeInsurancePreQwDetail);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQw;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TEmployeeInsurancePreQwMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TEmployeeInsurancePreQwService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 商险定时失败的企微
*
* @author hgw
* @date 2025-08-07 17:49:14
*/
@Log4j2
@Service
public class TEmployeeInsurancePreQwServiceImpl extends ServiceImpl<TEmployeeInsurancePreQwMapper, TEmployeeInsurancePreQw> implements TEmployeeInsurancePreQwService {
}
package com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsurancePreDetailMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.insurance.TInsurancePreDetailService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 入职确认信息已购买商险明细
*
* @author huych
* @date 2025-08-05 15:08:42
*/
@Log4j2
@Service
public class TInsurancePreDetailServiceImpl extends ServiceImpl<TInsurancePreDetailMapper, TInsurancePreDetail> implements TInsurancePreDetailService {
}
...@@ -40,6 +40,7 @@ security: ...@@ -40,6 +40,7 @@ security:
- /actuator/** - /actuator/**
- /swagger-ui/** - /swagger-ui/**
- /insuranceDetail/urgentUpdateIsUse - /insuranceDetail/urgentUpdateIsUse
- /temployeeinsurancepreqwdetail/page
# 文件上传相关 支持阿里云、华为云、腾讯、minio # 文件上传相关 支持阿里云、华为云、腾讯、minio
......
...@@ -61,9 +61,9 @@ ...@@ -61,9 +61,9 @@
group by fd_3b0a5743acab7e group by fd_3b0a5743acab7e
</select> </select>
<select id="getSettleStatusFromEkpInsuranceDetail" resultType="java.lang.String"> <select id="getSettleStatusFromEkpInsuranceDetail" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSettleStatusVo">
select select
fd_3adfe6ec6a8cbe fd_3adfe6ec6a8cbe settleStatus,fd_3adfe6eda67236 payStatus
from from
ekp_insurances_info ekp_insurances_info
where where
......
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
<result property="updateTime" column="update_time"/> <result property="updateTime" column="update_time"/>
<result property="registTime" column="regist_time"/> <result property="registTime" column="regist_time"/>
<result property="registUser" column="regist_user"/> <result property="registUser" column="regist_user"/>
<result property="errorInfo" column="error_info"/>
<result property="errorTime" column="error_time"/>
</resultMap> </resultMap>
<resultMap id="tEmployeeInsurancePreExportMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreExportVo"> <resultMap id="tEmployeeInsurancePreExportMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.TEmployeeInsurancePreExportVo">
...@@ -101,7 +103,7 @@ ...@@ -101,7 +103,7 @@
a.create_name, a.create_name,
a.create_time, a.create_time,
a.update_by, a.update_by,
a.update_time,a.policy_no,a.config_name,a.policy_effect,a.insurances_id,a.regist_time,a.regist_user,a.config_id a.update_time,a.policy_no,a.config_name,a.policy_effect,a.insurances_id,a.regist_time,a.regist_user,a.config_id,a.error_info,a.error_time
</sql> </sql>
<sql id="tEmployeeInsurancePre_where"> <sql id="tEmployeeInsurancePre_where">
<if test="tEmployeeInsurancePre != null"> <if test="tEmployeeInsurancePre != null">
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TEmployeeInsurancePreQwDetailMapper">
<resultMap id="tEmployeeInsurancePreQwDetailMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQwDetail">
<id property="id" column="ID"/>
<result property="mainId" column="MAIN_ID"/>
<result property="empName" column="EMP_NAME"/>
<result property="empIdcard" column="EMP_IDCARD"/>
<result property="errorInfo" column="ERROR_INFO"/>
<result property="errorTime" column="ERROR_TIME"/>
<result property="preId" column="PRE_ID"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.MAIN_ID,
a.EMP_NAME,
a.EMP_IDCARD,
a.ERROR_INFO,
a.ERROR_TIME,
a.PRE_ID
</sql>
<sql id="tEmployeeInsurancePreQwDetail_where">
<if test="tEmployeeInsurancePreQwDetail != null">
<if test="tEmployeeInsurancePreQwDetail.id != null and tEmployeeInsurancePreQwDetail.id.trim() != ''">
AND a.ID = #{tEmployeeInsurancePreQwDetail.id}
</if>
<if test="tEmployeeInsurancePreQwDetail.mainId != null and tEmployeeInsurancePreQwDetail.mainId.trim() != ''">
AND a.MAIN_ID = #{tEmployeeInsurancePreQwDetail.mainId}
</if>
<if test="tEmployeeInsurancePreQwDetail.empName != null and tEmployeeInsurancePreQwDetail.empName.trim() != ''">
AND a.EMP_NAME = #{tEmployeeInsurancePreQwDetail.empName}
</if>
<if test="tEmployeeInsurancePreQwDetail.empIdcard != null and tEmployeeInsurancePreQwDetail.empIdcard.trim() != ''">
AND a.EMP_IDCARD = #{tEmployeeInsurancePreQwDetail.empIdcard}
</if>
<if test="tEmployeeInsurancePreQwDetail.errorInfo != null and tEmployeeInsurancePreQwDetail.errorInfo.trim() != ''">
AND a.ERROR_INFO = #{tEmployeeInsurancePreQwDetail.errorInfo}
</if>
<if test="tEmployeeInsurancePreQwDetail.errorTime != null">
AND a.ERROR_TIME = #{tEmployeeInsurancePreQwDetail.errorTime}
</if>
<if test="tEmployeeInsurancePreQwDetail.preId != null and tEmployeeInsurancePreQwDetail.preId.trim() != ''">
AND a.PRE_ID = #{tEmployeeInsurancePreQwDetail.preId}
</if>
</if>
</sql>
<!--tEmployeeInsurancePreQwDetail简单分页查询-->
<select id="getTEmployeeInsurancePreQwDetailPage" resultMap="tEmployeeInsurancePreQwDetailMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_employee_insurance_pre_qw_detail a
<where>
1=1
<include refid="tEmployeeInsurancePreQwDetail_where"/>
</where>
order by a.id
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TEmployeeInsurancePreQwMapper">
<resultMap id="tEmployeeInsurancePreQwMap"
type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TEmployeeInsurancePreQw">
<id property="id" column="ID"/>
<result property="customerUsername" column="customer_username"/>
<result property="customerUserLoginname" column="customer_user_loginname"/>
<result property="description" column="description"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.customer_username,
a.customer_user_loginname,
a.description
</sql>
<sql id="tEmployeeInsurancePreQw_where">
<if test="tEmployeeInsurancePreQw != null">
<if test="tEmployeeInsurancePreQw.id != null and tEmployeeInsurancePreQw.id.trim() != ''">
AND a.ID = #{tEmployeeInsurancePreQw.id}
</if>
<if test="tEmployeeInsurancePreQw.customerUsername != null and tEmployeeInsurancePreQw.customerUsername.trim() != ''">
AND a.customer_username = #{tEmployeeInsurancePreQw.customerUsername}
</if>
<if test="tEmployeeInsurancePreQw.customerUserLoginname != null and tEmployeeInsurancePreQw.customerUserLoginname.trim() != ''">
AND a.customer_user_loginname = #{tEmployeeInsurancePreQw.customerUserLoginname}
</if>
<if test="tEmployeeInsurancePreQw.description != null and tEmployeeInsurancePreQw.description.trim() != ''">
AND a.description = #{tEmployeeInsurancePreQw.description}
</if>
</if>
</sql>
</mapper>
...@@ -593,6 +593,38 @@ ...@@ -593,6 +593,38 @@
</foreach> </foreach>
</update> </update>
<!-- 派单人员系统已有参保明细查询-->
<select id="getOnProcessInsuredList" resultType="com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail">
select
a.id as id,
a.EMP_NAME as empName,
a.EMP_IDCARD_NO as empIdcardNo,
a.BUY_TYPE as buyType,
a.DEPT_NO as deptNo,
a.DEPT_NAME as deptName,
a.POST as post,
a.POLICY_START as policyStart,
a.POLICY_END as policyEnd,
a.POLICY_EFFECT as policyEffect,
a.INSURANCE_COMPANY_NAME as insuranceCompanyName,
a.INSURANCE_TYPE_NAME as insuranceTypeName,
a.BUY_STANDARD as buyStandard,
a.BUY_HANDLE_STATUS as buyHandleStatus,
a.CREATE_TIME as createTime,
a.CREATE_NAME as createName,
a.UNIT_NAME as unitName,
a.UNIT_NO as unitNo,
a.IS_ADRESS as isAdress,
a.INSURANCE_PROVINCE_NAME as insuranceProvinceName,
a.INSURANCE_CITY_NAME as insuranceCityName
from
t_insurance_detail a
where
a.DELETE_FLAG = 0
and (a.BUY_HANDLE_STATUS in (1,2) or (a.BUY_HANDLE_STATUS = 3 and a.IS_EFFECT = 0 and a.IS_OVERDUE = 0))
AND EMP_IDCARD_NO = #{empIdCard}
</select>
<!-- ***********************减员办理******************************** --> <!-- ***********************减员办理******************************** -->
<!-- 已投保列表分页查询--> <!-- 已投保列表分页查询-->
<select id="getInsuredListPage" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.InsuredListVo"> <select id="getInsuredListPage" resultType="com.yifu.cloud.plus.v1.yifu.insurances.vo.InsuredListVo">
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.insurances.TInsurancePreDetailMapper">
<resultMap id="tInsurancePreDetailMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsurancePreDetail">
<id property="id" column="ID"/>
<result property="empName" column="EMP_NAME"/>
<result property="empIdcardNo" column="EMP_IDCARD_NO"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="post" column="POST"/>
<result property="insuranceCompanyName" column="INSURANCE_COMPANY_NAME"/>
<result property="insuranceTypeName" column="INSURANCE_TYPE_NAME"/>
<result property="buyStandard" column="BUY_STANDARD"/>
<result property="policyStart" column="POLICY_START"/>
<result property="policyEnd" column="POLICY_END"/>
<result property="policyEffect" column="POLICY_EFFECT"/>
<result property="buyType" column="BUY_TYPE"/>
<result property="buyHandleStatus" column="BUY_HANDLE_STATUS"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="deptName" column="DEPT_NAME"/>
<result property="unitName" column="UNIT_NAME"/>
<result property="unitNo" column="UNIT_NO"/>
<result property="isAdress" column="IS_ADRESS"/>
<result property="registerId" column="REGISTER_ID"/>
</resultMap>
</mapper>
...@@ -109,4 +109,18 @@ public class ArchiveTask { ...@@ -109,4 +109,18 @@ public class ArchiveTask {
log.info("-------------每日刷新运营风险管控数据-定时任务开始------------"); log.info("-------------每日刷新运营风险管控数据-定时任务开始------------");
} }
/**
* @Author fxj
* @Description 每天10点刷新合同续签待办信息到微信
* @Date 16:06 2025/8/15
* @Param
* @return
**/
public void everyDaypushContractAlertToWx() {
log.info("-------------每天刷新合同续签待办信息到微信-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl(), daprArchivesProperties.getAppId(),
"/tempcontractalert/inner/pushContractAlertToWx","", Void.class, SecurityConstants.FROM_IN);
log.info("-------------每天刷新合同续签待待办信息到微信-定时任务结束------------");
}
} }
\ No newline at end of file
...@@ -48,6 +48,7 @@ public interface TSalaryEmployeeMapper extends BaseMapper<TSalaryEmployee> { ...@@ -48,6 +48,7 @@ public interface TSalaryEmployeeMapper extends BaseMapper<TSalaryEmployee> {
List<TSalaryEmployeeExportVo> noPageDiy( @Param("tSalaryEmployee") TSalaryEmployeeSearchVo searchVo, @Param("idList")List<String> idList); List<TSalaryEmployeeExportVo> noPageDiy( @Param("tSalaryEmployee") TSalaryEmployeeSearchVo searchVo, @Param("idList")List<String> idList);
List<TSalaryEmployee> getListByIdCard(@Param("idCardList") List<String> idCardList); List<TSalaryEmployee> getListByIdCard(@Param("idCardList") List<String> idCardList);
List<TSalaryEmployee> getListByPhone(@Param("phoneList") List<String> phoneList);
TSalaryEmployee getByEmpIdCard(@Param("empIdCard") String empIdCard); TSalaryEmployee getByEmpIdCard(@Param("empIdCard") String empIdCard);
......
...@@ -71,7 +71,7 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> { ...@@ -71,7 +71,7 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> {
* @Date: 2023/2/9 14:57 * @Date: 2023/2/9 14:57
* @return: java.lang.String * @return: java.lang.String
**/ **/
String saveNewEmployeeList(List<TSalaryEmployee> saveNewEmpList, List<ErrorMessage> errorList); String saveNewEmployeeList(List<TSalaryEmployee> saveNewEmpList, List<ErrorMessage> errorList, Map<String, Integer> phoneExcelMap);
/** /**
* @Description: 更新卡号等信息 * @Description: 更新卡号等信息
...@@ -79,7 +79,8 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> { ...@@ -79,7 +79,8 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> {
* @Date: 2024/7/22 10:27 * @Date: 2024/7/22 10:27
* @return: java.lang.String * @return: java.lang.String
**/ **/
String updateEmployeeBankList(List<TSalaryEmployee> updateEmpBankList, Map<String, TSalaryEmployee> updateEmpBankMap, List<ErrorMessage> errorList); String updateEmployeeBankList(List<TSalaryEmployee> updateEmpBankList, Map<String, TSalaryEmployee> updateEmpBankMap
, List<ErrorMessage> errorList, Map<String, Integer> phoneExcelMap);
/** /**
* @param inputStream * @param inputStream
......
...@@ -633,13 +633,18 @@ public class SalaryAccountUtil implements Serializable { ...@@ -633,13 +633,18 @@ public class SalaryAccountUtil implements Serializable {
} }
} }
if (canSave) { if (canSave) {
// 查本表重
Map<String, Integer> phoneExcelMap = new HashMap<>();
// 新增 // 新增
if (!saveNewEmpList.isEmpty()) { if (!saveNewEmpList.isEmpty()) {
tSalaryEmployeeService.saveNewEmployeeList(saveNewEmpList, errorList); tSalaryEmployeeService.saveNewEmployeeList(saveNewEmpList, errorList, phoneExcelMap);
} }
// 更新人员信息 // 更新人员信息
if (!updateEmpBankList.isEmpty()) { if (!updateEmpBankList.isEmpty()) {
tSalaryEmployeeService.updateEmployeeBankList(updateEmpBankList, updateEmpBankMap, errorList); tSalaryEmployeeService.updateEmployeeBankList(updateEmpBankList, updateEmpBankMap, errorList, phoneExcelMap);
}
if (phoneExcelMap != null && !phoneExcelMap.isEmpty()) {
phoneExcelMap.clear();
} }
} }
} }
...@@ -774,7 +779,7 @@ public class SalaryAccountUtil implements Serializable { ...@@ -774,7 +779,7 @@ public class SalaryAccountUtil implements Serializable {
entity.setEmpId(emp.getId()); entity.setEmpId(emp.getId());
entity.setEmpIdcard(emp.getEmpIdcard()); entity.setEmpIdcard(emp.getEmpIdcard());
entity.setEmpName(emp.getEmpName()); entity.setEmpName(emp.getEmpName());
entity.setEmpPhone(emp.getEmpPhone());
// hgs 2024-7-19 09:33:29 新增按照页面开关与新员工字段,来更新员工信息: // hgs 2024-7-19 09:33:29 新增按照页面开关与新员工字段,来更新员工信息:
if (SalaryConstants.SALARY_STYLE_BANK.equals(salaryStyle)) { if (SalaryConstants.SALARY_STYLE_BANK.equals(salaryStyle)) {
if (CommonConstants.ONE_STRING.equals(newEmpUpdateFlag) && isNewEmployee) { if (CommonConstants.ONE_STRING.equals(newEmpUpdateFlag) && isNewEmployee) {
...@@ -830,6 +835,10 @@ public class SalaryAccountUtil implements Serializable { ...@@ -830,6 +835,10 @@ public class SalaryAccountUtil implements Serializable {
String areaInt = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + emp.getBankProvince().trim()); String areaInt = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + emp.getBankProvince().trim());
if (Common.isNotNull(areaInt)) { if (Common.isNotNull(areaInt)) {
entity.setBankProvince(areaInt); entity.setBankProvince(areaInt);
} else {
error = "第" + i + SalaryConstants.LINE_EMP + emp.getEmpIdcard() + "-开户行省错误,请在工资模板正确填写!";
errorList.add(new ErrorMessage(i, error));
return true;
} }
String areaCityInt = null; String areaCityInt = null;
if (Common.isNotNull(emp.getBankCity())) { if (Common.isNotNull(emp.getBankCity())) {
...@@ -837,6 +846,10 @@ public class SalaryAccountUtil implements Serializable { ...@@ -837,6 +846,10 @@ public class SalaryAccountUtil implements Serializable {
+ CommonConstants.DOWN_LINE_STRING + emp.getBankProvince().trim()); + CommonConstants.DOWN_LINE_STRING + emp.getBankProvince().trim());
if (Common.isNotNull(areaCityInt)) { if (Common.isNotNull(areaCityInt)) {
entity.setBankCity(areaCityInt); entity.setBankCity(areaCityInt);
} else {
error = "第" + i + SalaryConstants.LINE_EMP + emp.getEmpIdcard() + "-开户行市错误或开户行市不在开户行省内,请在工资模板正确填写!";
errorList.add(new ErrorMessage(i, error));
return true;
} }
} }
} }
...@@ -853,6 +866,14 @@ public class SalaryAccountUtil implements Serializable { ...@@ -853,6 +866,14 @@ public class SalaryAccountUtil implements Serializable {
errorList.add(new ErrorMessage(i, error)); errorList.add(new ErrorMessage(i, error));
return true; return true;
} }
// 2025-8-5 17:29:33 以本表为准,且写了是新员工,新增手机号也用表里的 倩倩与荣珍同意
if (Common.isNotNull(entity.getEmpPhone())){
emp.setEmpPhone(entity.getEmpPhone());
} else {
error = "第" + i + SalaryConstants.LINE_EMP + emp.getEmpIdcard() + "-新员工以本次导入为准,手机号不可为空,请在工资模板正确填写!";
errorList.add(new ErrorMessage(i, error));
return true;
}
updateEmpBankList.add(emp); updateEmpBankList.add(emp);
} else if (salaryGiveTimeFlag) { } else if (salaryGiveTimeFlag) {
if (Common.isEmpty(emp.getBankName())) { if (Common.isEmpty(emp.getBankName())) {
...@@ -880,11 +901,17 @@ public class SalaryAccountUtil implements Serializable { ...@@ -880,11 +901,17 @@ public class SalaryAccountUtil implements Serializable {
errorList.add(new ErrorMessage(i, error)); errorList.add(new ErrorMessage(i, error));
return true; return true;
} }
if (Common.isEmpty(emp.getEmpPhone())) {
error = "第" + i + SalaryConstants.LINE_EMP + emp.getEmpIdcard() + "-发放方式为银行发放,但是-手机号-为空,请去薪酬人员查询处更新!";
errorList.add(new ErrorMessage(i, error));
return true;
}
entity.setBankName(emp.getBankName()); entity.setBankName(emp.getBankName());
entity.setBankNo(emp.getBankNo()); entity.setBankNo(emp.getBankNo());
entity.setBankProvince(String.valueOf(emp.getBankProvince())); entity.setBankProvince(String.valueOf(emp.getBankProvince()));
entity.setBankCity(String.valueOf(emp.getBankCity())); entity.setBankCity(String.valueOf(emp.getBankCity()));
entity.setBankSubName(emp.getBankSubName()); entity.setBankSubName(emp.getBankSubName());
entity.setEmpPhone(emp.getEmpPhone());
} else { } else {
if (Common.isNotNull(emp.getBankName())) { if (Common.isNotNull(emp.getBankName())) {
if (bankMap.get(emp.getBankName()) == null) { if (bankMap.get(emp.getBankName()) == null) {
...@@ -916,7 +943,10 @@ public class SalaryAccountUtil implements Serializable { ...@@ -916,7 +943,10 @@ public class SalaryAccountUtil implements Serializable {
} else { } else {
entity.setBankCity(null); entity.setBankCity(null);
} }
entity.setEmpPhone(emp.getEmpPhone());
} }
} else {
entity.setEmpPhone(emp.getEmpPhone());
} }
if (!"3".equals(salaryType) && !"4".equals(salaryType)) { if (!"3".equals(salaryType) && !"4".equals(salaryType)) {
if (emp.getTaxMonth().length() > CommonConstants.dingleDigitIntArray[6]) { if (emp.getTaxMonth().length() > CommonConstants.dingleDigitIntArray[6]) {
...@@ -1239,12 +1269,20 @@ public class SalaryAccountUtil implements Serializable { ...@@ -1239,12 +1269,20 @@ public class SalaryAccountUtil implements Serializable {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + entity.getBankProvince().trim()); areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + entity.getBankProvince().trim());
if (Common.isNotNull(areaStr)) { if (Common.isNotNull(areaStr)) {
newEmp.setBankProvince(areaStr); newEmp.setBankProvince(areaStr);
} else {
error = "第" + i + "行:" + newEmpStr + "-开户行省错误:" + entity.getBankProvince();
errorList.add(new ErrorMessage(i, error));
return false;
} }
if (Common.isNotNull(entity.getBankCity())) { if (Common.isNotNull(entity.getBankCity())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + entity.getBankCity().trim() areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + entity.getBankCity().trim()
+ CommonConstants.DOWN_LINE_STRING + entity.getBankProvince().trim()); + CommonConstants.DOWN_LINE_STRING + entity.getBankProvince().trim());
if (Common.isNotNull(areaStr)) { if (Common.isNotNull(areaStr)) {
newEmp.setBankCity(areaStr); newEmp.setBankCity(areaStr);
} else {
error = "第" + i + "行:" + newEmpStr + "-开户行市错误:" + entity.getBankCity();
errorList.add(new ErrorMessage(i, error));
return false;
} }
} }
} }
......
...@@ -256,6 +256,19 @@ ...@@ -256,6 +256,19 @@
</if> </if>
</select> </select>
<!-- 按手机号查询全部人员 -->
<select id="getListByPhone" resultMap="tSalaryEmployeeMap" >
<if test="phoneList != null and phoneList.size>0">
SELECT
<include refid="Base_Column_List"/>
FROM t_salary_employee a
where a.EMP_PHONE in
<foreach item="idStr" index="index" collection="phoneList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
</select>
<!-- 按身份证查询人员 --> <!-- 按身份证查询人员 -->
<select id="getByEmpIdCard" resultMap="tSalaryEmployeeMap" > <select id="getByEmpIdCard" resultMap="tSalaryEmployeeMap" >
SELECT SELECT
......
...@@ -65,7 +65,7 @@ public class TSocialFriendBackLog { ...@@ -65,7 +65,7 @@ public class TSocialFriendBackLog {
/** /**
* @Description: 类型1社保增 2社保减 3医保增 4医保减 5推送的日志 6社保图片路径7医保图片路径 * @Description: 类型1社保增 2社保减 3医保增 4医保减 5推送的日志 6社保图片路径7医保图片路径
* 8社保解除劳动合同9医保解除劳动合同11社保增拉取 12社保减拉取 13医保增拉取 14医保减拉取16社保单个图片17医保单个图片 * 8社保解除劳动合同9医保解除劳动合同11社保增拉取 12社保减拉取 13医保增拉取 14医保减拉取16社保单个图片17医保单个图片 18 反馈附件下载
* @Author: hgw * @Author: hgw
* @Date: 2025/5/27 10:15 * @Date: 2025/5/27 10:15
**/ **/
...@@ -89,4 +89,13 @@ public class TSocialFriendBackLog { ...@@ -89,4 +89,13 @@ public class TSocialFriendBackLog {
@Schema(description = "创建时间") @Schema(description = "创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
/**
* 任务状态
*/
@ExcelAttribute(name = "任务状态")
@ExcelProperty("任务状态")
@Schema(description = "任务状态")
private String status;
} }
...@@ -1231,6 +1231,16 @@ public class TSocialFundInfo extends BaseEntity { ...@@ -1231,6 +1231,16 @@ public class TSocialFundInfo extends BaseEntity {
@ExcelProperty("派单ID" ) @ExcelProperty("派单ID" )
private String dispatchId; private String dispatchId;
/**
* 社保ID(取值最新办理成功的社保ID)
*/
@Length(max = 32, message = "社保ID(取值最新办理成功的社保ID) 不能超过32个字符" )
@ExcelAttribute(name = "社保ID(取值最新办理成功的社保ID)", maxLength = 32)
@Schema(description = "社保ID(取值最新办理成功的社保ID)" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保ID(取值最新办理成功的社保ID)" )
private String socialIdSuccess;
// 执行月份,整体调基使用的 // 执行月份,整体调基使用的
@TableField(exist = false) @TableField(exist = false)
private String doMonth; private String doMonth;
......
...@@ -141,7 +141,7 @@ public class FundHandleExportVo implements Serializable { ...@@ -141,7 +141,7 @@ public class FundHandleExportVo implements Serializable {
* 公积金停缴日期 * 公积金停缴日期
*/ */
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "公积金停缴日期", isDate = true,needExport = true) @ExcelAttribute(name = "公积金停缴日期", isDate = true,needExport = true)
@Schema(description = "公积金停缴日期" ) @Schema(description = "公积金停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
......
...@@ -75,4 +75,15 @@ public class SocialSoldierBackVo implements Serializable { ...@@ -75,4 +75,15 @@ public class SocialSoldierBackVo implements Serializable {
private String socialHouseholdName; private String socialHouseholdName;
/**
* 请求ID
*/
@ExcelAttribute(name = "请求ID", needExport = true)
@Schema(description = "请求ID")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("请求ID")
private String requestId;
} }
...@@ -219,7 +219,7 @@ public class TDispatchAuditExportVo { ...@@ -219,7 +219,7 @@ public class TDispatchAuditExportVo {
/** /**
* 社保停缴日期 * 社保停缴日期
*/ */
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "社保停缴日期", isDate = true) @ExcelAttribute(name = "社保停缴日期", isDate = true)
@Schema(description = "社保停缴日期" ) @Schema(description = "社保停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
...@@ -229,7 +229,7 @@ public class TDispatchAuditExportVo { ...@@ -229,7 +229,7 @@ public class TDispatchAuditExportVo {
/** /**
* 公积金停缴日期 * 公积金停缴日期
*/ */
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "公积金停缴日期", isDate = true) @ExcelAttribute(name = "公积金停缴日期", isDate = true)
@Schema(description = "公积金停缴日期" ) @Schema(description = "公积金停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
......
...@@ -175,7 +175,7 @@ public class TDispatchInfoExportVo { ...@@ -175,7 +175,7 @@ public class TDispatchInfoExportVo {
/** /**
* 社保停缴日期 * 社保停缴日期
*/ */
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "社保停缴日期", isDate = true) @ExcelAttribute(name = "社保停缴日期", isDate = true)
@Schema(description = "社保停缴日期" ) @Schema(description = "社保停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
...@@ -195,7 +195,7 @@ public class TDispatchInfoExportVo { ...@@ -195,7 +195,7 @@ public class TDispatchInfoExportVo {
/** /**
* 公积金停缴日期 * 公积金停缴日期
*/ */
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "公积金停缴日期", isDate = true) @ExcelAttribute(name = "公积金停缴日期", isDate = true)
@Schema(description = "公积金停缴日期" ) @Schema(description = "公积金停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
......
...@@ -68,20 +68,20 @@ public class TDispatchReduceVo extends RowIndex implements Serializable { ...@@ -68,20 +68,20 @@ public class TDispatchReduceVo extends RowIndex implements Serializable {
/** /**
* 社保停缴日期 * 社保停缴日期
*/ */
@ExcelAttribute(name = "社保停缴日期", isDate = true) @ExcelAttribute(name = "社保停缴日期", isDate = false)
@Schema(description = "社保停缴日期:购买社保时必填" ) @Schema(description = "社保停缴日期:购买社保时必填" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保停缴日期" ) @ExcelProperty("社保停缴日期" )
private Date socialReduceDate; private String socialReduceDate;
/** /**
* 公积金停缴日期 * 公积金停缴日期
*/ */
@ExcelAttribute(name = "公积金停缴日期", isDate = true) @ExcelAttribute(name = "公积金停缴日期", isDate = false)
@Schema(description = "公积金停缴日期" ) @Schema(description = "公积金停缴日期" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金停缴日期" ) @ExcelProperty("公积金停缴日期" )
private Date fundReduceDate; private String fundReduceDate;
/** /**
* 离职日期 * 离职日期
......
package com.yifu.cloud.plus.v1.yifu.social.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @description 派单办理失败发送企微消息
* @date 2025-8-1 11:22:43
*/
@Data
@Schema(description = "派单办理失败发送企微消息")
public class TSocialAlert {
@Schema(description = "客服ID")
private String createBy;
@Schema(description = "客服姓名")
private String createName;
@Schema(description = "社保条数")
private int socialNum;
@Schema(description = "公积金条数")
private int fundNum;
}
\ No newline at end of file
...@@ -249,14 +249,14 @@ public class TSocialFundInfoExportVo extends RowIndex implements Serializable { ...@@ -249,14 +249,14 @@ public class TSocialFundInfoExportVo extends RowIndex implements Serializable {
@ExcelProperty("公积金起缴日期") @ExcelProperty("公积金起缴日期")
private Date providentStart; private Date providentStart;
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "社保停缴日期", isDate = true) @ExcelAttribute(name = "社保停缴日期", isDate = true)
@Schema(description = "社保停缴日期") @Schema(description = "社保停缴日期")
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保停缴日期") @ExcelProperty("社保停缴日期")
private Date socialReduceDate; private Date socialReduceDate;
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyyMM")
@ExcelAttribute(name = "公积金停缴日期", isDate = true) @ExcelAttribute(name = "公积金停缴日期", isDate = true)
@Schema(description = "公积金停缴日期") @Schema(description = "公积金停缴日期")
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
......
...@@ -11,10 +11,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil; ...@@ -11,10 +11,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo; import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialFriendBackLog; import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialFriendBackLog;
import com.yifu.cloud.plus.v1.yifu.social.vo.FriendResult; import com.yifu.cloud.plus.v1.yifu.social.vo.*;
import com.yifu.cloud.plus.v1.yifu.social.vo.SociaFriendYgsAddVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialSoldierBackVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialSoldierExportVo;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -777,7 +774,6 @@ public class SocialFriendConfig { ...@@ -777,7 +774,6 @@ public class SocialFriendConfig {
public HashMap<String, String> getDownloadEmployeeAsync(RestTemplate restTemplate, SysHouseHoldInfo houseHold, public HashMap<String, String> getDownloadEmployeeAsync(RestTemplate restTemplate, SysHouseHoldInfo houseHold,
SocialSoldierBackVo backVo) { SocialSoldierBackVo backVo) {
HashMap<String, String> result = new HashMap<>(); HashMap<String, String> result = new HashMap<>();
try { try {
// 构建请求头 // 构建请求头
HttpHeaders headers = buildCommonHeaders(null); HttpHeaders headers = buildCommonHeaders(null);
...@@ -797,9 +793,6 @@ public class SocialFriendConfig { ...@@ -797,9 +793,6 @@ public class SocialFriendConfig {
if ("Y".equals(head.getString("status"))) { if ("Y".equals(head.getString("status"))) {
String requestId = JSON.parseObject(response.getString("body")).getString("requestId"); String requestId = JSON.parseObject(response.getString("body")).getString("requestId");
result.put(backVo.getSocialId(), requestId); result.put(backVo.getSocialId(), requestId);
/*if (Common.isNotNull(requestId)) {
urls.addAll(getDownloadFeedbackUrls(restTemplate, requestId));
}*/
} }
} }
...@@ -834,11 +827,7 @@ public class SocialFriendConfig { ...@@ -834,11 +827,7 @@ public class SocialFriendConfig {
private JSONObject buildDownloadRequestJson(SysHouseHoldInfo vo, SocialSoldierBackVo exportVo) { private JSONObject buildDownloadRequestJson(SysHouseHoldInfo vo, SocialSoldierBackVo exportVo) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
/*json.put("bizNo", "211429621163811844098020250715-172343"); json.put("bizNo", exportVo.getSocialId() + DateUtil.getThisTime());
json.put("qymc", "安徽皖信人力资源管理有限公司0");
json.put("nsrsbh", "91340152570242449C");
json.put("areaid", "340100");*/
json.put("bizNo", exportVo.getSocialId());
json.put("qymc", vo.getName()); json.put("qymc", vo.getName());
json.put("nsrsbh", vo.getUnitCreditCode()); json.put("nsrsbh", vo.getUnitCreditCode());
json.put("areaid", vo.getAreaCode()); json.put("areaid", vo.getAreaCode());
...@@ -877,18 +866,26 @@ public class SocialFriendConfig { ...@@ -877,18 +866,26 @@ public class SocialFriendConfig {
} }
// 获取反馈 URL 列表 // 获取反馈 URL 列表
public List<String> getDownloadFeedbackUrls(RestTemplate restTemplate, String requestId) { public FeedBackUrlVo getDownloadFeedbackUrls(RestTemplate restTemplate, String requestId, List<TSocialFriendBackLog> backLogList, String socialId) {
FeedBackUrlVo result = new FeedBackUrlVo();
List<String> urls = new ArrayList<>(); List<String> urls = new ArrayList<>();
if (null == backLogList){
backLogList = new ArrayList<>();
}
String downloadEmployeeFeedbackUrl = urlPre + urlDownloadEmployeeFeedback + "?requestId=" + requestId; String downloadEmployeeFeedbackUrl = urlPre + urlDownloadEmployeeFeedback + "?requestId=" + requestId;
int retryCount = 0; int retryCount = 0;
final int maxRetries = 2; final int maxRetries = 4;
final long delayMillis = 2000; // 2 seconds final long delayMillis = 2000; // 2 seconds
TSocialFriendBackLog backLog;
JSONObject dataObject = null;
String msg = "";
String zt= "0";
try { try {
// 构建请求头 // 构建请求头
HttpHeaders headers = buildCommonHeaders(requestId); HttpHeaders headers = buildCommonHeaders(requestId);
// 构建请求体 // 构建请求体
HttpEntity<String> formEntity = new HttpEntity<>(headers); HttpEntity<String> formEntity = new HttpEntity<>(headers);
//具体的项目办理状态:1-处理中,2-处理成功,3-处理失败 如果是处理中继续重试2次,处理成功则返回反馈URL
while (retryCount <= maxRetries) { while (retryCount <= maxRetries) {
ResponseEntity<String> response = restTemplate.exchange( ResponseEntity<String> response = restTemplate.exchange(
...@@ -896,39 +893,52 @@ public class SocialFriendConfig { ...@@ -896,39 +893,52 @@ public class SocialFriendConfig {
// 处理返回值 // 处理返回值
if (response != null && response.getStatusCodeValue() == 200) { if (response != null && response.getStatusCodeValue() == 200) {
JSONObject dataObject = JSON.parseObject(response.getBody()); dataObject = JSON.parseObject(response.getBody());
String head = dataObject.getString("head"); String head = dataObject.getString("head");
if (Common.isNotNull(head)) { if (Common.isNotNull(head)) {
JSONObject headObject = JSON.parseObject(head); JSONObject headObject = JSON.parseObject(head);
if ("Y".equals(headObject.getString("status"))) { if ("Y".equals(headObject.getString("status"))) {
JSONObject bodyObject = JSON.parseObject(dataObject.getString("body")); JSONObject bodyObject = JSON.parseObject(dataObject.getString("body"));
String ryywbljglb = bodyObject.getString("ryywbljglb"); //1:处理中 2:成功 3:失败
JSONArray ryywbljglbArr = JSON.parseArray(ryywbljglb); zt = bodyObject.getString("zt");
if (ryywbljglbArr != null && !ryywbljglbArr.isEmpty()){ if ("2".equals(zt)){
for (Object itemObj : ryywbljglbArr) { String ryywbljglb = bodyObject.getString("ryywbljglb");
JSONObject ryywbljglbItem = (JSONObject) itemObj; JSONArray ryywbljglbArr = JSON.parseArray(ryywbljglb);
JSONArray blxmjglbArr = JSON.parseArray(ryywbljglbItem.getString("blxmjglb")); if (ryywbljglbArr != null && !ryywbljglbArr.isEmpty()){
if (blxmjglbArr != null && !blxmjglbArr.isEmpty()){ for (Object itemObj : ryywbljglbArr) {
for (Object blxmjglbObj : blxmjglbArr) { JSONObject ryywbljglbItem = (JSONObject) itemObj;
JSONObject blxmjglbItem = (JSONObject) blxmjglbObj; JSONArray blxmjglbArr = JSON.parseArray(ryywbljglbItem.getString("blxmjglb"));
JSONArray jgmxlbArr = JSON.parseArray(blxmjglbItem.getString("jgmxlb")); if (blxmjglbArr != null && !blxmjglbArr.isEmpty()){
if (jgmxlbArr != null && !jgmxlbArr.isEmpty()){ for (Object blxmjglbObj : blxmjglbArr) {
for (Object jgmxlbObj : jgmxlbArr) { JSONObject blxmjglbItem = (JSONObject) blxmjglbObj;
JSONObject jgmxlbItem = (JSONObject) jgmxlbObj; //具体的项目办理状态:1-处理中,2-处理成功,3-处理失败
JSONArray wjdzlb = jgmxlbItem.getJSONArray("wjdzlb"); zt = blxmjglbItem.getString("zt");
if ("2".equals(zt)){
if (wjdzlb != null && !wjdzlb.isEmpty()) { JSONArray jgmxlbArr = JSON.parseArray(blxmjglbItem.getString("jgmxlb"));
urls.addAll(wjdzlb.toJavaList(String.class)); if (jgmxlbArr != null && !jgmxlbArr.isEmpty()){
for (Object jgmxlbObj : jgmxlbArr) {
JSONObject jgmxlbItem = (JSONObject) jgmxlbObj;
JSONArray wjdzlb = jgmxlbItem.getJSONArray("wjdzlb");
if (wjdzlb != null && !wjdzlb.isEmpty()) {
urls.addAll(wjdzlb.toJavaList(String.class));
}
}
} }
}else {
msg = bodyObject.getString("cwxx");
} }
} }
} }
} }
} }
}else {
msg = bodyObject.getString("cwxx");
} }
} }
} }
// 先记录每次的反馈请求
} }
// 如果成功获取到数据,则跳出循环 // 如果成功获取到数据,则跳出循环
...@@ -936,9 +946,9 @@ public class SocialFriendConfig { ...@@ -936,9 +946,9 @@ public class SocialFriendConfig {
break; break;
} }
// 如果没有获取到数据,等待一段时间后重试 // 如果没有获取到数据,等待一段时间后重试 (处理中重试)
if (retryCount < maxRetries) { if (retryCount < maxRetries && zt.equals("1")) {
Thread.sleep(delayMillis); Thread.sleep(delayMillis*retryCount);
retryCount++; retryCount++;
} else { } else {
break; break;
...@@ -947,8 +957,19 @@ public class SocialFriendConfig { ...@@ -947,8 +957,19 @@ public class SocialFriendConfig {
} catch (Exception e) { } catch (Exception e) {
log.error("获取税友人员审核查询证明文件反馈链接失败", e); log.error("获取税友人员审核查询证明文件反馈链接失败", e);
} }
backLog = new TSocialFriendBackLog();
return urls; backLog.setId(socialId);
backLog.setRequestId(requestId);
backLog.setSocialId(socialId);
backLog.setStatus(zt);
backLog.setType(18);
backLog.setLogInfo(null==dataObject?"":dataObject.toJSONString());
backLog.setCreateTime(LocalDateTime.now());
backLogList.add(backLog);
result.setUrls(urls);
result.setRequestId(requestId);
result.setMsg(msg);
return result;
} }
......
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