Commit 39705315 authored by fangxinjiang's avatar fangxinjiang

合同续签-fxj

parent 1bcf05c9
...@@ -10,6 +10,8 @@ public class ArchivesConstants { ...@@ -10,6 +10,8 @@ public class ArchivesConstants {
public static final String EMP_BAD_RECORD="不良记录"; public static final String EMP_BAD_RECORD="不良记录";
public static final String EMP_AUTO_RENEWAL_RECORD="员工合同续签待办";
/** /**
* 复档 * 复档
*/ */
......
...@@ -317,6 +317,51 @@ public class TEmpContractAlert extends BaseEntity { ...@@ -317,6 +317,51 @@ public class TEmpContractAlert extends BaseEntity {
@Schema(description = "反馈时间") @Schema(description = "反馈时间")
private Date feedbackTime; private Date feedbackTime;
/**
* 预计合同发起时间
*/
@ExcelAttribute(name = "预计合同发起时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("预计合同发起时间")
@Schema(description = "预计合同发起时间")
private Date expectedCollectionTime;
/**
* 签署方式:1线下签0电子签
*/
@ExcelAttribute(name = "签署方式" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("签署方式")
@Schema(description = "签署方式:1线下签0电子签")
private Integer signType;
/**
* 续签状态:0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9(已归档-电子签+线下签)已完结10撤销签署
*/
@ExcelAttribute(name = "续签状态" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("续签状态")
@Schema(description = "签署方式:0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9(已归档-电子签+线下签)已完结10撤销签署")
private Integer processStatus;
/**
* 前端客服
*/
@ExcelAttribute(name = "前端客服" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("前端客服")
@Schema(description = "前端客服")
private String csName;
/**
* 前端客服
*/
@ExcelAttribute(name = "前端客服" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("前端客服")
@Schema(description = "前端客服")
private String csLoginName;
/** /**
* 合同截止日期 * 合同截止日期
*/ */
...@@ -342,4 +387,12 @@ public class TEmpContractAlert extends BaseEntity { ...@@ -342,4 +387,12 @@ public class TEmpContractAlert extends BaseEntity {
@Schema(description = "合同岗位", name = "post") @Schema(description = "合同岗位", name = "post")
private String post; private String post;
/**
* 是否自动化: 0 是 1 否 默认1
*/
@Length(max = 1, message = "工是否自动化不能超过1个字符")
@ExcelAttribute(name = "是否自动化", maxLength = 32)
@Schema(description = "是否自动化: 0 是 1 否 默认1", name = "autoFlag")
private String autoFlag;
} }
...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; ...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* @Author fxj * @Author fxj
...@@ -47,4 +48,27 @@ public class ContractAlertSearchVo extends TEmpContractAlert { ...@@ -47,4 +48,27 @@ public class ContractAlertSearchVo extends TEmpContractAlert {
* 合同截止时间区间查询--截止 * 合同截止时间区间查询--截止
**/ **/
private LocalDateTime contractEndEnd; private LocalDateTime contractEndEnd;
/**
* @Author fxj
* 合同截止时间区间查询--开始
**/
private LocalDateTime expectedCollectionTimeStart;
/**
* @Author fxj
* 合同截止时间区间查询--截止
**/
private LocalDateTime expectedCollectionTimeEnd;
/**
* @Author fxj
* 续签状态多选查询
**/
private List<String> processStatusList;
/**
* 项目编码列表
*/
@Schema(description = "项目编码列表")
private List<String> deptNoList;
} }
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
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.core.constant.ExcelAttributeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
/**
* @Author fxj
* @Date 2026/2/5
* @Description
* @Version 1.0
*/
@Data
public class TEmpContractAlertExportVo {
/**
* 员工编码
*/
@ExcelAttribute(name = "员工编码" )
@Schema(description ="员工编码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工编码")
private String empCode;
/**
* 员工名称
*/
@ExcelAttribute(name = "员工名称" )
@Schema(description ="员工名称")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工名称")
private String empName;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码" )
@Schema(description = "手机号码")
@ExcelProperty("手机号码")
private String empPhone;
/**
* 身份证号
*/
@ExcelAttribute(name = "身份证号" )
@Schema(description ="身份证号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号")
private String empIdcard;
/**
* 合同开始日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "合同开始日期" )
@Schema(description ="合同开始日期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同开始日期")
private Date contractStart;
/**
* 合同截止日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "合同截止日期" )
@Schema(description ="合同截止日期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同截止日期")
private Date contractEnd;
/**
* 合同岗位
*/
@Length(max = 32, message = "合同岗位不能超过32个字符")
@ExcelAttribute(name = "合同岗位", maxLength = 32, needExport = true)
@Schema(description = "合同岗位", name = "post")
@ExcelProperty("合同岗位")
private String post;
/**
* 工时制(数据字典) 1标准工时 2 综合工时 3不定时工时制
*/
@Length(max = 32, message = "工时制不能超过32个字符")
@ExcelAttribute(name = "工时制", maxLength = 32, isDataId = true, dataType = ExcelAttributeConstants.WORKING_HOURS)
@Schema(description = "工时制(数据字典) 1标准工时 2 综合工时 3不定时工时制", name = "workingHours")
@ExcelProperty("工时制")
private String workingHours;
/**
* 档案地-省
*/
@ExcelAttribute(name = "档案地-省",isArea = true )
@Schema(description ="档案地-省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("档案所在省")
private String fileProvince;
/**
* 档案地-市
*/
@ExcelAttribute(name = "档案地-市",isArea = true,parentField = "fileProvince" )
@Schema(description ="档案地-市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("档案所在市")
private String fileCity;
/**
* 档案地-县
*/
@ExcelAttribute(name = "档案地-县" ,isArea = true,parentField = "fileCity")
@Schema(description ="档案地-县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("档案所在县")
private String fileTown;
/**
* 客户名称
*/
@ExcelAttribute(name = "客户名称" )
@Schema(description = "客户名称")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户名称")
private String unitName;
/**
* 客户编码
*/
@ExcelAttribute(name = "客户编码" )
@Schema(description = "客户编码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户编码")
private String unitNo;
/**
* 项目名称
*/
@ExcelAttribute(name = "项目名称" )
@Schema(description ="项目名称")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目名称")
private String project;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码" )
@Schema(description ="项目编码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目编码")
private String projectNo;
/**
* 员工类型
*/
@ExcelAttribute(name = "员工类型" ,isDataId = true,dataType = ExcelAttributeConstants.EMP_NATRUE )
@Schema(description ="员工类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工类型")
private String empType;
/**
* 合同类型
*/
@ExcelAttribute(name = "合同类型" , isDataId = true,dataType = ExcelAttributeConstants.EMPLOYEE_CONTRACT_TYPE)
@Schema(description ="合同类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("合同类型")
private String contractType;
/**
* 签订期限
*/
@ExcelAttribute(name = "签订期限" ,isDataId = true,readConverterExp = "0=已完成一定工作任务为期限,1=固定期限,2=无固定期限")
@Schema(description ="签订期限")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("签订期限")
private String contractTerm;
/**
* 到期天数
*/
@ExcelAttribute(name = "到期天数" )
@Schema(description ="到期天数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("距离到期天数")
private Integer daysDue;
/**
* 是否过期:0 未过期 1 过期
*/
@ExcelAttribute(name = "是否过期", isDataId = true,readConverterExp = "0=未过期,1=过期" )
@Schema(description ="是否过期:0 未过期 1 过期")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否过期")
private String dueFlag;
/**
* 过期天数
*/
@ExcelAttribute(name = "过期天数" )
@Schema(description ="过期天数")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("过期天数")
private Integer daysOver;
/**
* 首次提醒时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "首次提醒时间" )
@Schema(description ="首次提醒时间")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("首次提醒时间")
private Date firstAlertTime;
/**
* 提醒人
*/
@ExcelAttribute(name = "提醒人" )
@Schema(description ="提醒人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("提醒人")
private String alertPerson;
/**
* 是否反馈: 0 否 1 是
*/
@ExcelAttribute(name = "是否反馈", isDataId = true,readConverterExp = "0=否,1=是" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否反馈")
@Schema(description = "是否反馈")
private String isFeedback;
/**
* 反馈原因
*/
@ExcelAttribute(name = "未续签原因" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("未续签原因")
@Schema(description = "未续签原因")
private String feedbackReason;
/**
* 详情
*/
@ExcelAttribute(name = "具体描述信息" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("具体描述信息")
@Schema(description = "具体描述信息")
private String feedbackDetail;
/**
* 反馈人
*/
@ExcelAttribute(name = "反馈人" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("反馈人")
@Schema(description = "反馈人")
private String feedbackPerson;
/**
* 反馈时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelAttribute(name = "反馈时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("反馈时间")
@Schema(description = "反馈时间")
private Date feedbackTime;
/**
* 处理状态 0 待处理 1 处理中 2 已处理
*/
@ExcelAttribute(name = "处理状态", isDataId = true, readConverterExp = "0=待处理,1=处理中,2=已处理" )
@Schema(description ="处理状态")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("处理状态")
private String handleStatus;
/**
* 签署方式:1线下签0电子签
*/
@ExcelAttribute(name = "签署方式" , isDataId = true,readConverterExp = "1=线下签,0=电子签")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("签署方式")
@Schema(description = "签署方式:1线下签0电子签")
private Integer signType;
/**
* 续签状态:0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9(已归档-电子签+线下签)已完结10撤销签署
*/
@ExcelAttribute(name = "续签状态", isDataId = true, readConverterExp = "0=待确认,1=待发起,2=线待审核,3=审核不通过,4=线下签待归档,5=发起失败,6=签署中,7=签署失败,8=电子待归档,9=已归档,10=撤销签署")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("续签状态")
@Schema(description = "签署方式:0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9(已归档-电子签+线下签)已完结10撤销签署")
private Integer processStatus;
/**
* 预计合同发起时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
@ExcelAttribute(name = "预计合同发起时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("预计合同发起时间")
@Schema(description = "预计合同发起时间")
private Date expectedCollectionTime;
/**
* 前端客服
*/
@ExcelAttribute(name = "前端客服" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("前端客服")
@Schema(description = "前端客服")
private String csName;
}
/*
* 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 io.swagger.v3.oas.annotations.media.Schema;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPreNew;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 合同续签预派单信息
*
* @author fxj
* @date 2026-02-05 15:45:40
*/
@Data
public class TEmployeeContractPreNewSearchVo extends TEmployeeContractPreNew {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
...@@ -60,7 +60,35 @@ public class TEmpContractAlertController { ...@@ -60,7 +60,35 @@ public class TEmpContractAlertController {
private final TEmpContractAlertService tEmpContractAlertService; private final TEmpContractAlertService tEmpContractAlertService;
private final MenuUtil menuUtil; private final MenuUtil menuUtil;
/**
* 自动化合同续签待办查询
* @param page 分页对象
* @param tEmpContractAlert 自动化合同续签待办查询
* @return
*/
@Operation(description = "自动化合同续签待办查询")
@GetMapping("/autoPage")
public R<IPage<TEmpContractAlert>> getTEmpContractAlertAutoPage(Page<TEmpContractAlert> page, ContractAlertSearchVo tEmpContractAlert) {
//默认开启自动化的
tEmpContractAlert.setAutoFlag(CommonConstants.ZERO_STRING);
return R.ok(tEmpContractAlertService.getTEmpContractAlertAutoPage(page,tEmpContractAlert));
}
/**
* @Author fxj
* @Description 自动化合同续签待办数量
* @Date 16:49 2026/2/5
* @Param
* @return
**/
@Operation(description = "自动化合同续签待办数量")
@GetMapping("/autoCount")
public R<Integer> getTEmpContractAlertAutoCount() {
ContractAlertSearchVo tEmpContractAlert = new ContractAlertSearchVo();
//默认开启自动化的
tEmpContractAlert.setAutoFlag(CommonConstants.ZERO_STRING);
return R.ok(tEmpContractAlertService.getTEmpContractAlertAutoCount(tEmpContractAlert));
}
/** /**
* 分页查询 * 分页查询
...@@ -280,4 +308,18 @@ public class TEmpContractAlertController { ...@@ -280,4 +308,18 @@ public class TEmpContractAlertController {
public void pushInsuranceAlertToWx() { public void pushInsuranceAlertToWx() {
tEmpContractAlertService.pushContractAlertToWx(); tEmpContractAlertService.pushContractAlertToWx();
} }
/**
* @Author fxj
* @Description 批量导出自动化合同续签待办
* @Date 17:00 2026/2/5
* @Param
* @return
**/
@Operation(description = "导出自动化续签待办")
@PostMapping("/autoExport")
public void autoExport(HttpServletResponse response, @RequestBody ContractAlertSearchVo searchVo) {
tEmpContractAlertService.listAutoExport(response,searchVo);
}
} }
/*
* 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.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPreNew;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreNewService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreNewVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreNewSearchVo;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 合同续签预派单信息
*
* @author fxj
* @date 2026-02-05 15:45:40
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/temployeecontractprenew")
@Tag(name = "合同续签预派单信息管理")
public class TEmployeeContractPreNewController {
private final TEmployeeContractPreNewService tEmployeeContractPreNewService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TEmployeeContractPreNew>> getTEmployeeContractPreNewPage(Page<TEmployeeContractPreNew> page, TEmployeeContractPreNewSearchVo tEmployeeContractPreNew) {
return new R<>(tEmployeeContractPreNewService.getTEmployeeContractPreNewPage(page, tEmployeeContractPreNew));
}
/**
* 不分页查询
*
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
//@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew_get')" )
public R<List<TEmployeeContractPreNew>> getTEmployeeContractPreNewNoPage(@RequestBody TEmployeeContractPreNewSearchVo tEmployeeContractPreNew) {
return R.ok(tEmployeeContractPreNewService.noPageDiy(tEmployeeContractPreNew));
}
/**
* 通过id查询合同续签预派单信息
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('archives_temployeecontractprenew_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew_get')")
public R<TEmployeeContractPreNew> getById(@PathVariable("id") String id) {
return R.ok(tEmployeeContractPreNewService.getById(id));
}
/**
* 新增合同续签预派单信息
*
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return R
*/
@Operation(summary = "新增合同续签预派单信息", description = "新增合同续签预派单信息:hasPermission('archives_temployeecontractprenew_add')")
@SysLog("新增合同续签预派单信息")
@PostMapping
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew_add')")
public R<Boolean> save(@RequestBody TEmployeeContractPreNew tEmployeeContractPreNew) {
return R.ok(tEmployeeContractPreNewService.save(tEmployeeContractPreNew));
}
/**
* 修改合同续签预派单信息
*
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return R
*/
@Operation(summary = "修改合同续签预派单信息", description = "修改合同续签预派单信息:hasPermission('archives_temployeecontractprenew_edit')")
@SysLog("修改合同续签预派单信息")
@PutMapping
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew_edit')")
public R<Boolean> updateById(@RequestBody TEmployeeContractPreNew tEmployeeContractPreNew) {
return R.ok(tEmployeeContractPreNewService.updateById(tEmployeeContractPreNew));
}
/**
* 通过id删除合同续签预派单信息
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除合同续签预派单信息", description = "通过id删除合同续签预派单信息:hasPermission('archives_temployeecontractprenew_del')")
@SysLog("通过id删除合同续签预派单信息")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tEmployeeContractPreNewService.removeById(id));
}
/**
* 合同续签预派单信息 批量导入
*
* @author fxj
* @date 2026-02-05 15:45:40
**/
@SneakyThrows
@Operation(description = "批量新增合同续签预派单信息 hasPermission('archives_temployeecontractprenew-batch-import')")
@SysLog("批量新增合同续签预派单信息")
@PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tEmployeeContractPreNewService.importDiy(file.getInputStream());
}
/**
* 合同续签预派单信息 批量导出
*
* @author fxj
* @date 2026-02-05 15:45:40
**/
@Operation(description = "导出合同续签预派单信息 hasPermission('archives_temployeecontractprenew-export')")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('archives_temployeecontractprenew-export')")
public void export(HttpServletResponse response, @RequestBody TEmployeeContractPreNewSearchVo searchVo) {
tEmployeeContractPreNewService.listExport(response, searchVo);
}
}
...@@ -18,9 +18,13 @@ ...@@ -18,9 +18,13 @@
package com.yifu.cloud.plus.v1.yifu.archives.mapper; package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.archives.entity.TEmpContractAlert; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpContractAlert;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeFeedBackAllVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeFeedBackAllVo;
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.EmpContractAlertUpdateVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpContractAlertExportVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -41,4 +45,21 @@ public interface TEmpContractAlertMapper extends BaseMapper<TEmpContractAlert> { ...@@ -41,4 +45,21 @@ public interface TEmpContractAlertMapper extends BaseMapper<TEmpContractAlert> {
List<TEmpContractAlert> getAlertInfoList(@Param("idCardList") List<String> idCardList); List<TEmpContractAlert> getAlertInfoList(@Param("idCardList") List<String> idCardList);
/**
* 员工合同续签待办简单分页查询
* @param tEmpContractAlert 员工合同续签待办
* @return
*/
IPage<TEmpContractAlert> getTEmpContractAlertAutoPage(Page<TEmpContractAlert> page, @Param("tEmpContractAlert") TEmpContractAlert tEmpContractAlert);
/**
* @Author fxj
* @Description 自动化合同续签待办数量
* @Date 16:51 2026/2/5
* @Param
* @return
**/
int getTEmpContractAlertAutoCount(@Param("tEmpContractAlert") ContractAlertSearchVo tEmpContractAlert);
List<TEmpContractAlertExportVo> listExport(@Param("tEmpContractAlert") ContractAlertSearchVo searchVo);
} }
/*
* 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.mapper;
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.archives.entity.TEmployeeContractPreNew;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 合同续签预派单信息
*
* @author fxj
* @date 2026-02-05 15:45:40
*/
@Mapper
public interface TEmployeeContractPreNewMapper extends BaseMapper<TEmployeeContractPreNew> {
/**
* 合同续签预派单信息简单分页查询
*
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return
*/
IPage<TEmployeeContractPreNew> getTEmployeeContractPreNewPage(Page<TEmployeeContractPreNew> page, @Param("tEmployeeContractPreNew") TEmployeeContractPreNew tEmployeeContractPreNew);
}
...@@ -40,6 +40,13 @@ import java.util.List; ...@@ -40,6 +40,13 @@ import java.util.List;
*/ */
public interface TEmpContractAlertService extends IService<TEmpContractAlert> { public interface TEmpContractAlertService extends IService<TEmpContractAlert> {
/**
* 员工合同续签待办简单分页查询
* @param tEmpContractAlert 员工合同续签待办
* @return
*/
IPage<TEmpContractAlert> getTEmpContractAlertAutoPage(Page<TEmpContractAlert> page, ContractAlertSearchVo tEmpContractAlert);
IPage<TEmpContractAlert> pageDiy(Page page, ContractAlertSearchVo searchVo); IPage<TEmpContractAlert> pageDiy(Page page, ContractAlertSearchVo searchVo);
// 给自动化用的-合同待续签-分页查询 // 给自动化用的-合同待续签-分页查询
IPage<TEmpContractAlert> getAutoPage(Page page, ContractAlertSearchVo searchVo); IPage<TEmpContractAlert> getAutoPage(Page page, ContractAlertSearchVo searchVo);
...@@ -74,4 +81,8 @@ public interface TEmpContractAlertService extends IService<TEmpContractAlert> { ...@@ -74,4 +81,8 @@ public interface TEmpContractAlertService extends IService<TEmpContractAlert> {
R<List<ErrorMessage>> importDiy(InputStream inputStream); R<List<ErrorMessage>> importDiy(InputStream inputStream);
void pushContractAlertToWx(); void pushContractAlertToWx();
Integer getTEmpContractAlertAutoCount(ContractAlertSearchVo tEmpContractAlert);
void listAutoExport(HttpServletResponse response, ContractAlertSearchVo searchVo);
} }
/*
* 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.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPreNew;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreNewSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 合同续签预派单信息
*
* @author fxj
* @date 2026-02-05 15:45:40
*/
public interface TEmployeeContractPreNewService extends IService<TEmployeeContractPreNew> {
/**
* 合同续签预派单信息简单分页查询
*
* @param tEmployeeContractPreNew 合同续签预派单信息
* @return
*/
IPage<TEmployeeContractPreNew> getTEmployeeContractPreNewPage(Page<TEmployeeContractPreNew> page, TEmployeeContractPreNewSearchVo tEmployeeContractPreNew);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
void listExport(HttpServletResponse response, TEmployeeContractPreNewSearchVo searchVo);
List<TEmployeeContractPreNew> noPageDiy(TEmployeeContractPreNewSearchVo searchVo);
}
...@@ -41,7 +41,10 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.*; ...@@ -41,7 +41,10 @@ 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.service.TSettleDomainService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*; import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
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.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*; import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
...@@ -76,6 +79,8 @@ import java.util.stream.Collectors; ...@@ -76,6 +79,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertMapper, TEmpContractAlert> implements TEmpContractAlertService { public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertMapper, TEmpContractAlert> implements TEmpContractAlertService {
@Autowired
private RedisUtil redisUtil;
private final TEmployeeContractInfoMapper contractInfoMapper; private final TEmployeeContractInfoMapper contractInfoMapper;
...@@ -90,6 +95,8 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -90,6 +95,8 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
private final TSettleDomainMapper settleDomainMapper; private final TSettleDomainMapper settleDomainMapper;
private final TAutoMainRelMapper tAutoMainRelMapper; private final TAutoMainRelMapper tAutoMainRelMapper;
private final TSettleDomainService tSettleDomainService;
@Autowired @Autowired
private UpmsDaprUtils upmsDaprUtils; private UpmsDaprUtils upmsDaprUtils;
...@@ -211,7 +218,9 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -211,7 +218,9 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
} }
return baseMapper.selectList(wrapper); return baseMapper.selectList(wrapper);
} }
public List<TEmpContractAlertExportVo> listExport(ContractAlertSearchVo searchVo) {
return baseMapper.listExport(searchVo);
}
private long noPageCountDiy(ContractAlertSearchVo searchVo) { private long noPageCountDiy(ContractAlertSearchVo searchVo) {
LambdaQueryWrapper<TEmpContractAlert> wrapper = buildQueryWrapper(searchVo); LambdaQueryWrapper<TEmpContractAlert> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds()); List<String> idList = Common.getList(searchVo.getIds());
...@@ -941,6 +950,7 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -941,6 +950,7 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
} }
} }
//发送企业微信待办 //发送企业微信待办
private void sendMessageToWx(String useruserWx, StringBuilder content) { private void sendMessageToWx(String useruserWx, StringBuilder content) {
if (Common.isEmpty(useruserWx) || Common.isEmpty(content)) { if (Common.isEmpty(useruserWx) || Common.isEmpty(content)) {
...@@ -1008,5 +1018,137 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM ...@@ -1008,5 +1018,137 @@ public class TEmpContractAlertServiceImpl extends ServiceImpl<TEmpContractAlertM
} }
} }
/**
* 员工合同续签待办简单分页查询
* @param tEmpContractAlert 员工合同续签待办
* @return
*/
@Override
public IPage<TEmpContractAlert> getTEmpContractAlertAutoPage(Page<TEmpContractAlert> page, ContractAlertSearchVo tEmpContractAlert){
//初始化客服的项目权限 ,管理员及SSC 全量
initSearchVo(tEmpContractAlert);
return baseMapper.getTEmpContractAlertAutoPage(page,tEmpContractAlert);
}
public void initSearchVo(ContractAlertSearchVo searchVo) {
YifuUser user = SecurityUtils.getUser();
long roleId = 1839501715787390978L;
boolean isSsc = this.haveRole(user, roleId);
if (isSsc || CommonConstants.ZERO_STRING.equals(user.getSystemFlag())) {
searchVo.setAuthSql(null);
return;
}
//获取项目信息
List<String> deptNos = tSettleDomainService.getAllDeptByCustomerLoginName(user.getUsername());
if (null != deptNos && !deptNos.isEmpty()) {
searchVo.setDeptNoList(deptNos);
} else {
searchVo.setId(CommonConstants.ONE_STRING_NEGATE);
}
}
public boolean haveRole(YifuUser user, long roleId) {
List<Long> roleList = user.getClientRoleMap().get(ClientNameConstants.CLIENT_MVP);
for (Long role : roleList) {
if (role == roleId) {
return true;
}
}
return false;
}
@Override
public Integer getTEmpContractAlertAutoCount(ContractAlertSearchVo tEmpContractAlert) {
//初始化客服的项目权限 ,管理员及SSC 全量
initSearchVo(tEmpContractAlert);
return baseMapper.getTEmpContractAlertAutoCount(tEmpContractAlert);
}
public Integer geAutoExportCount(ContractAlertSearchVo tEmpContractAlert) {
return baseMapper.getTEmpContractAlertAutoCount(tEmpContractAlert);
}
/**
* @Author fxj
* @Description 导出自动化续签待办
* @Date 17:01 2026/2/5
* @Param
* @return
**/
@Override
public void listAutoExport(HttpServletResponse response, ContractAlertSearchVo searchVo) {
//默认导出自动化的合同续签待办
searchVo.setAutoFlag(CommonConstants.ZERO_STRING);
initSearchVo(searchVo);
String fileName = ArchivesConstants.EMP_AUTO_RENEWAL_RECORD + LocalDateTime.now() + CommonConstants.XLSX;
//获取要导出的列表
List<TEmpContractAlertExportVo> list = new ArrayList<>();
ServletOutputStream out = null;
YifuUser user = SecurityUtils.getUser();
String key = CacheConstants.EMP_CONTRACT_AUTO_RENEWAL_EXPORT + CommonConstants.DOWN_LINE_STRING +user.getId() ;
try {
out = response.getOutputStream();
response.setContentType(CommonConstants.MULTIPART_FORM_DATA);
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName , CommonConstants.UTF8));
//防止同一个人反复操作导出
if (Common.isNotNull(redisUtil.get(key))) {
out.write(CommonConstants.SOCIAL_EXPORT_CONTINUE.getBytes("GBK"));
out.close();
return;
} else {
redisUtil.set(key, user.getId(), 600L);
}
long count = this.geAutoExportCount(searchVo);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
ExcelWriter excelWriter = EasyExcel.write(out, TEmpContractAlertExportVo.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
WriteSheet writeSheet;
ExcelUtil<TEmpContractAlertExportVo> util;
for (int i = 0; i <= count; ) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = listExport(searchVo);
if (Common.isNotNull(list)){
util = new ExcelUtil<>(TEmpContractAlertExportVo.class);
for (TEmpContractAlertExportVo vo:list){
util.convertEntity(vo,null,null,null);
}
}
if (Common.isNotNull(list)){
writeSheet = EasyExcel.writerSheet(ArchivesConstants.EMP_AUTO_RENEWAL_RECORD+index).build();
excelWriter.write(list,writeSheet);
index++;
i = i + CommonConstants.EXCEL_EXPORT_LIMIT;
}
if (Common.isNotNull(list)){
list.clear();
}
}
excelWriter.finish();
}else {
WriteSheet writeSheet = EasyExcel.writerSheet(ArchivesConstants.EMP_AUTO_RENEWAL_RECORD+index).build();
excelWriter.write(list,writeSheet);
excelWriter.finish();
}
if (Common.isNotNull(list)){
list.clear();
}
out.flush();
}catch (Exception e){
redisUtil.remove(key);
log.error("自动化合同续签待办导出执行异常" ,e);
}finally {
try {
if (null != out) {
out.close();
}
redisUtil.remove(key);
} catch (IOException e) {
redisUtil.remove(key);
log.error("自动化合同续签待办导出执行异常", e);
}
}
}
} }
...@@ -158,6 +158,8 @@ public interface CacheConstants { ...@@ -158,6 +158,8 @@ public interface CacheConstants {
String PAYMENT_SOCIAL_EXPORT = "payment_social_export"; String PAYMENT_SOCIAL_EXPORT = "payment_social_export";
String EMP_CONTRACT_AUTO_RENEWAL_EXPORT = "emp_contract_auto_renewal_export";
String PAYMENT_DISPATCH_BATCH_ADD_IMPORT = "payment_dispatch_batch_add_import"; String PAYMENT_DISPATCH_BATCH_ADD_IMPORT = "payment_dispatch_batch_add_import";
String MOBILE_CHANGE_LIMIT = "mobile_change_limit"; String MOBILE_CHANGE_LIMIT = "mobile_change_limit";
......
...@@ -125,7 +125,6 @@ public class SysMessageSalaryServiceImpl extends ServiceImpl<SysMessageSalaryMap ...@@ -125,7 +125,6 @@ public class SysMessageSalaryServiceImpl extends ServiceImpl<SysMessageSalaryMap
String fileName = "最低工资提醒批量导出" + DateUtil.getThisTime() + CommonConstants.XLSX; String fileName = "最低工资提醒批量导出" + DateUtil.getThisTime() + CommonConstants.XLSX;
//获取要导出的列表 //获取要导出的列表
List<SysMessageSalaryExportVo> list = new ArrayList<>(); List<SysMessageSalaryExportVo> list = new ArrayList<>();
// TODO
List<String> settleDomainIds =null; List<String> settleDomainIds =null;
List<String> ids = Common.getList(searchVo.getIds()); List<String> ids = Common.getList(searchVo.getIds());
String sql = null; String sql = null;
......
...@@ -183,7 +183,6 @@ public class THaveSalaryNosocialServiceImpl extends ServiceImpl<THaveSalaryNosoc ...@@ -183,7 +183,6 @@ public class THaveSalaryNosocialServiceImpl extends ServiceImpl<THaveSalaryNosoc
String fileName = "有工资无社保批量导出" + DateUtil.getThisTime() + CommonConstants.XLSX; String fileName = "有工资无社保批量导出" + DateUtil.getThisTime() + CommonConstants.XLSX;
//获取要导出的列表 //获取要导出的列表
List<THaveSalaryNoSocialExportVo> list = new ArrayList<>(); List<THaveSalaryNoSocialExportVo> list = new ArrayList<>();
// TODO
List<String> settleDomainIds =null; List<String> settleDomainIds =null;
List<String> ids = Common.getList(searchVo.getIds()); List<String> ids = Common.getList(searchVo.getIds());
String sql = null; String sql = null;
......
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