Commit 1657500c authored by 李灿灿's avatar 李灿灿

Merge branch 'develop' into feature-licancan

parents 9df9367c 29a27c01
......@@ -28,7 +28,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import com.yifu.cloud.plus.v1.check.entity.TCheckIdCard;
import com.yifu.cloud.plus.v1.check.entity.TCheckMobile;
import com.yifu.cloud.plus.v1.yifu.archives.constants.EmployeeConstants;
......@@ -49,7 +48,6 @@ import com.yifu.cloud.plus.v1.yifu.common.dapr.util.HttpDaprUtil;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
......@@ -64,7 +62,6 @@ import java.io.InputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* 人员档案表
......@@ -2079,17 +2076,21 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
// 新增项目档案不需要返回ID
saveProject(empAddsMap, projectsMap);
// 新增合同
saveContract(projectsMap, contractsMap);
saveContract(projectsMap, contractsMap,empAddsMap);
addVo.setProjectsMap(projectsMap);
addVo.setEmpAddsMap(empAddsMap);
addVo.setContractsMap(contractsMap);
return addVo;
}
private void saveContract(Map<String, EmpProjectDispatchVo> projectsMap, Map<String, EmpContractDispatchVo> contractsMap) {
private void saveContract(Map<String, EmpProjectDispatchVo> projectsMap,
Map<String, EmpContractDispatchVo> contractsMap,
Map<String, EmpAddDispatchVo> empAddsMap) {
if (Common.isNotNull(contractsMap)) {
EmpContractDispatchVo contractAdd;
TEmployeeContractInfo contract;
EmpAddDispatchVo emp;
EmpProjectDispatchVo project;
for (Map.Entry<String, EmpContractDispatchVo> entry : contractsMap.entrySet()) {
contractAdd = entry.getValue();
try {
......@@ -2097,11 +2098,15 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
contract = new TEmployeeContractInfo();
BeanUtil.copyProperties(contractAdd, contract);
if (Common.isEmpty(contract.getEmpId()) && Common.isNotNull(projectsMap)) {
EmpProjectDispatchVo project = projectsMap.get(contract.getEmpIdcard());
project = projectsMap.get(contract.getEmpIdcard());
if (Common.isNotNull(project)) {
contract.setEmpId(project.getId());
contract.setEmpNo(project.getEmpNo());
}
emp = empAddsMap.get(contract.getEmpIdcard());
if (Common.isNotNull(emp)){
contract.setEmpId(emp.getId());
}
}
contractMapper.insert(contract);
contractAdd.setId(contract.getId());
......
package com.yifu.cloud.plus.v1.yifu.common.dapr.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @Author hgw
* @Date 2022-7-27 19:38:08
* @Description
* @Version 1.0
*/
@Data
@Component
@PropertySource("classpath:daprConfig.properties")
@ConfigurationProperties(value = "dapr.social", ignoreInvalidFields = false)
public class DaprSocialProperties {
/*
* @author fxj
* @date 14:34
* @Description dapr sidercar url 如:http://localhost:3005/v1.0/invoke/
**/
String appUrl;
/*
* @author fxj
* @date 14:35
* @decription app_id 如:"yifu_upms_sider"
**/
String appId;
String appPort;
String httpPort;
String grpcPort;
String metricsPort;
}
package com.yifu.cloud.plus.v1.job.compont;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprArchivesProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprSocialProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.HttpDaprUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @Author hgw
* @Date 2022-7-27 19:37:14
* @Description 社保定时任务
* @Version 1.0
*/
@Component(value = "socialTask")
@Slf4j
@EnableConfigurationProperties(DaprSocialProperties.class)
public class SocialTask {
@Autowired
private DaprSocialProperties daprProperties;
/**
* @Description: 定时生成基数配置新增的数据
* @Author: hgw
* @Date: 2022/7/27 19:39
* @return: void
**/
public void updateForecastLibaryBySysBase() {
log.info("------------定时生成基数配置新增的数据-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tforecastlibrary/inner/updateForecastLibaryBySysBase","", Object.class, SecurityConstants.FROM_IN);
log.info("------------定时生成基数配置新增的数据-定时任务结束------------");
}
/**
* @Description: 每月定时生成下月预估库数据
*
* 必须在【定时生成基数配置新增的数据】之后执行
*
* @Author: hgw
* @Date: 2022/7/27 19:39
* @return: void
**/
public void everyMonthCreateForecastLibary() {
log.info("------------每月定时生成下月预估库数据-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tforecastlibrary/inner/everyMonthCreateForecastLibary","", Object.class, SecurityConstants.FROM_IN);
log.info("------------每月定时生成下月预估库数据-定时任务结束------------");
}
}
......@@ -32,6 +32,8 @@ public class DispatchConstants {
public static final String DISPATCH_FUND_ADD_FAIL = "公积金派增办理失败:";
public static final String DISPATCH_FUND_REDUCE = "公积金派减";
public static final String DISPATCH_SOCIAL_REDUCE = "社保派减";
public static final String SOCIAL_RECORD_ROSTER_EXPORT = "社保花名册导出";
public static final String SOCIAL_RECORD_EXPORT = "公积金变更清册导出";
/**
......@@ -82,7 +84,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String PARAM_EMPLOYEE_ID_EMPTY = "传参有误:员工ID不可为空";
......@@ -92,7 +93,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String NO_EMPLOYEE_OF_ID = "无对应员工ID的员工信息";
......@@ -102,7 +102,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String EMPLOYEE_SOCIAL_FUND_INFO ="员工、社保、公积金信息";
......@@ -112,7 +111,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String DISPATCH_ID_NOT_EMPTY ="派单ID不可为空,多个ID请用逗号分割!";
......@@ -122,7 +120,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String OFFICE = "offical";
......@@ -132,7 +129,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String ADD = "add";
......@@ -142,7 +138,6 @@ public class DispatchConstants {
* @Date 2020-10-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String MINUS = "minus";
......@@ -152,7 +147,6 @@ public class DispatchConstants {
* @Date 2022-01-13
* @param null
* @return
* @see com.yifu.cloud.v1.common.core.constant
**/
public static final String UPDATE_RELATION_FROM_SALARY_FAILED = "更新缴费库薪资结算状态失败,请重新尝试或联系管理人员!";
......
......@@ -58,6 +58,14 @@ public class TProvidentFund extends BaseEntity {
@Schema(description = "公积金户" )
@ExcelProperty("公积金户" )
private String providentHousehold;
/**
* 公积金户名称
*/
@ExcelAttribute(name = "公积金户名称", maxLength = 32)
@Schema(description = "公积金户名称" )
@ExcelProperty("公积金户名称" )
private String providentHouseholdName;
/**
* 公积金起缴日期
*/
......
......@@ -58,6 +58,13 @@ public class TSocialInfo extends BaseEntity {
@Schema(description = "社保户" )
@ExcelProperty("社保户" )
private String socialHousehold;
/**
* 社保户名称
*/
@ExcelAttribute(name = "社保户名称", maxLength = 32)
@Schema(description = "社保户名称" )
@ExcelProperty("社保户名称" )
private String socialHouseholdName;
/**
* 社保起缴日期
*/
......
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author fxj
* @Description 社保办理导出花名册
* @Date 19:25 2022/7/27
* @Param
* @return
**/
@Data
public class FundHandleExportVo implements Serializable {
/**
* 派单类型:0派增1派减
*/
@ExcelAttribute(name = "派单类型", errorInfo = "派单类型不能为空", maxLength = 1,isDataId = true,readConverterExp = "0=派增,1=派减",needExport = true)
@ExcelProperty("派单类型" )
private String type;
/**
* 员工姓名
*/
@ExcelAttribute(name = "员工姓名", errorInfo = "员工姓名不能为空", maxLength = 50,needExport = true)
@ExcelProperty("员工姓名" )
private String empName;
/**
* 员工身份证
*/
@ExcelAttribute(name = "员工身份证", errorInfo = "员工身份证不能为空", maxLength = 20,needExport = true)
@ExcelProperty("员工身份证" )
private String empIdcard;
/**
* 所属单位
*/
@ExcelAttribute(name = "客户名称", isNotEmpty = true,needExport = true)
@Schema(description = "客户名称(所属单位)")
@ExcelProperty("客户名称" )
private String belongUnit;
/**
* 项目名称
*/
@ExcelAttribute(name = "项目名称", isNotEmpty = true,needExport = true)
@Schema(description = "项目名称(结算主体)")
@ExcelProperty("项目名称" )
private String settleDomain;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码", maxLength = 20,needExport = true)
@ExcelProperty("手机号码" )
private String empMobile;
/**
* 创建人姓名
*/
@ExcelAttribute(name = "申请人",needExport = true)
@Schema(description = "申请人")
@ExcelProperty("申请人" )
private String creasteUserName;
/**
* 公积金缴纳地-省
*/
@ExcelAttribute(name = "公积金缴纳地-省", maxLength = 32, isDataId = true, isArea = true, parentField = "",needExport = true)
@ExcelProperty("公积金缴纳地-省" )
private String fundProvince;
/**
* 公积金缴纳地-市
*/
@ExcelAttribute(name = "公积金缴纳地-市", maxLength = 32, isDataId = true, isArea = true, parentField = "fundProvince",needExport = true)
@ExcelProperty("公积金缴纳地-市" )
private String fundCity;
/**
* 公积金缴纳地-县
*/
@ExcelAttribute(name = "公积金缴纳地-县", maxLength = 32, isDataId = true, isArea = true, parentField = "fundCity",needExport = true)
@ExcelProperty("公积金缴纳地-县" )
private String fundTown;
/**
* 公积金起缴日期
*/
@ExcelAttribute(name = "公积金起缴日期", errorInfo = "公积金起缴日期不能为空",needExport = true)
@ExcelProperty("公积金起缴日期" )
private LocalDateTime providentStart;
/**
* 单位公积金缴纳基数
*/
@ExcelAttribute(name = "单位公积金缴纳基数", errorInfo = "单位公积金缴纳基数不能为空",needExport = true)
@ExcelProperty("单位公积金缴纳基数" )
private BigDecimal unitProvidengCardinal;
/**
* 单位公积金缴纳比例
*/
@ExcelAttribute(name = "单位公积金缴纳比例", errorInfo = "单位公积金缴纳比例不能为空",needExport = true)
@ExcelProperty("单位公积金缴纳比例" )
private BigDecimal unitProvidentPer;
/**
* 单位公积金缴纳费用
*/
@ExcelAttribute(name = "单位公积金缴纳费用", isNotEmpty = true, errorInfo = "单位公积金缴纳费用不能为空",needExport = true)
@ExcelProperty("单位公积金缴纳费用" )
private BigDecimal unitProvidentFee;
/**
* 个人公积金缴纳基数
*/
@ExcelAttribute(name = "个人公积金缴纳基数", errorInfo = "个人公积金缴纳基数不能为空",needExport = true)
@ExcelProperty("个人公积金缴纳基数" )
private BigDecimal personalProvidentCardinal;
/**
* 个人公积金缴纳比例
*/
@ExcelAttribute(name = "个人公积金缴纳比例", errorInfo = "个人公积金缴纳比例不能为空",needExport = true)
@ExcelProperty("个人公积金缴纳比例" )
private BigDecimal personalProvidentPer;
/**
* 个人公积金缴纳费用
*/
@ExcelAttribute(name = "个人公积金缴纳费用", isNotEmpty = true, errorInfo = "个人公积金缴纳费用不能为空",needExport = true)
@ExcelProperty("个人公积金缴纳费用" )
private BigDecimal personalProvidentFee;
/**
* 公积金户
*/
@ExcelAttribute(name = "公积金户", errorInfo = "公积金户不能为空", maxLength = 32,needExport = true)
@ExcelProperty("公积金户" )
private String providentHouseholdName;
/**
*
*委托备注
**/
@ExcelAttribute(name = "委托备注",needExport = true)
@ExcelProperty("委托备注" )
private String fundTrustRemark;
/*******************************导出字段结束*************************************************/
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author fxj
* @Description 公积金补缴清册
* @Date 19:04 2022/7/27
* @Param
* @return
**/
@Data
public class FundSupplementaryExportVo implements Serializable {
/**
* 员工姓名
*/
@ExcelAttribute(name = "员工姓名", errorInfo = "员工姓名不能为空", maxLength = 50,needExport = true)
private String empName;
/**
* 公积金起缴日期
*/
@NotBlank(message = "公积金起缴日期不能为空")
@ExcelAttribute(name = "公积金起缴日期", errorInfo = "公积金起缴日期不能为空",needExport = true)
@Schema(description = "公积金起缴日期")
private LocalDateTime providentStart;
/**
* 单位公积金缴纳基数
*/
@NotBlank(message = "单位公积金缴纳基数不能为空")
@ExcelAttribute(name = "单位公积金缴纳基数", errorInfo = "单位公积金缴纳基数不能为空",needExport = true)
@Schema(description = "单位公积金缴纳基数")
private BigDecimal unitProvidengCardinal;
/**
* 单位公积金缴纳比例
*/
@NotBlank(message = "单位公积金缴纳比例不能为空")
@ExcelAttribute(name = "单位公积金缴纳比例", errorInfo = "单位公积金缴纳比例不能为空",needExport = true)
@Schema(description = "单位公积金缴纳比例")
private BigDecimal unitProvidentPer;
/**
* 单位公积金缴纳费用
*/
@NotBlank(message = "单位公积金缴纳费用不能为空")
@ExcelAttribute(name = "单位公积金缴纳费用", isNotEmpty = true, errorInfo = "单位公积金缴纳费用不能为空",needExport = true)
@Schema(description = "单位公积金缴纳费用")
private BigDecimal unitProvidentFee;
/**
* 个人公积金缴纳基数
*/
@NotBlank(message = "个人公积金缴纳基数不能为空")
@ExcelAttribute(name = "个人公积金缴纳基数", errorInfo = "个人公积金缴纳基数不能为空",needExport = true)
@Schema(description = "个人公积金缴纳基数")
private BigDecimal personalProvidentCardinal;
/**
* 个人公积金缴纳比例
*/
@NotBlank(message = "个人公积金缴纳比例不能为空")
@ExcelAttribute(name = "个人公积金缴纳比例", errorInfo = "个人公积金缴纳比例不能为空",needExport = true)
@Schema(description = "个人公积金缴纳比例")
private BigDecimal personalProvidentPer;
/**
* 个人公积金缴纳费用
*/
@NotBlank(message = "个人公积金缴纳费用不能为空")
@ExcelAttribute(name = "个人公积金缴纳费用", isNotEmpty = true, errorInfo = "个人公积金缴纳费用不能为空",needExport = true)
@Schema(description = "个人公积金缴纳费用")
private BigDecimal personalProvidentFee;
/*******************************导出字段结束*************************************************/
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author fxj
* @Date 2022/7/27
* @Description
* @Version 1.0
*/
@Data
public class SocialHandleSearchVo extends TDispatchInfo {
//派单开始时间(查询专用)
@ExcelAttribute(name = "创建开始时间")
@TableField(exist = false)
private LocalDateTime createTimeStart;
//派单截止时间(查询专用)
@ExcelAttribute(name = "创建截止时间")
@TableField(exist = false)
private LocalDateTime createTimeEnd;
/**
* 社保户
*/
@Schema(description = "社保户" )
@TableField(exist = false)
private String socialHouseholdName;
/**
* 公积金户
*/
@Schema(description = "公积金户" )
@TableField(exist = false)
private String providentHouseholdName;
/**
* @Author fxj
* 查询数据起
**/
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
private int limitEnd;
}
......@@ -37,6 +37,7 @@ import java.util.Date;
* @author fxj
* @date 2022-07-15 11:38:05
*/
@Schema(description = "社保公积金查询-导出使用" )
@Data
public class TSocialFundInfoExportVo extends RowIndex implements Serializable {
......
......@@ -28,18 +28,24 @@ import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo;
import com.yifu.cloud.plus.v1.yifu.social.service.TDispatchInfoService;
import com.yifu.cloud.plus.v1.yifu.social.vo.DispatchDetailVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoSearchVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.log4j.Log4j2;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
......@@ -112,20 +118,39 @@ public class TDispatchInfoController {
}
/**
* 简单分页查询--审核
* 简单分页查询--社保办理列表
* @param page 分页对象
* @param tDispatchInfo 派单信息记录表--审核
* @param tDispatchInfo 派单信息记录表--社保办理列表
* @return
*/
@Operation(description = "简单分页查询--审核")
@GetMapping("/pageHandle")
public R<IPage<TDispatchInfo>> getTDispatchHandlePage(Page<TDispatchInfo> page, TDispatchInfoSearchVo tDispatchInfo) {
tDispatchInfo.setStatus(CommonConstants.ONE_STRING);
return new R<>(tDispatchInfoService.getTDispatchInfoPage(page,tDispatchInfo));
@Operation(description = "简单分页查询--社保办理列表")
@GetMapping("/pageSocialHandle")
public R<IPage<TDispatchInfo>> getTDispatchSocialHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo) {
// 获取结算主体权限 TODO
List<String> settleDomains = null;
// 获取自定义sql TODO
String sql = CommonConstants.EMPTY_STRING;
return new R<>(tDispatchInfoService.getTDispatchSocialHandlePage(page,tDispatchInfo,settleDomains,sql));
}
/**
* 简单分页查询--公积金办理列表
* @param page 分页对象
* @param tDispatchInfo 派单信息记录表--公积金办理列表
* @return
*/
@Operation(description = "简单分页查询--公积金办理列表")
@GetMapping("/pageFundHandle")
public R<IPage<TDispatchInfo>> getTDispatchFundHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo) {
// 获取结算主体权限 TODO
List<String> settleDomains = null;
// 获取自定义sql TODO
String sql = CommonConstants.EMPTY_STRING;
return new R<>(tDispatchInfoService.getTDispatchFundHandlePage(page,tDispatchInfo,settleDomains,sql));
}
/**
* 通过id查询派单信息记录表
* @param id id
* @param id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('demo_tdispatchinfo_get')")
......@@ -268,4 +293,62 @@ public class TDispatchInfoController {
@RequestParam(name = "socialType", required = false) String socialType) {
return tDispatchInfoService.addApplyHandle(ids,typeSub,handleStatus,handleRemark,socialType);
}
/**
* @Author fxj
* @Description 导出 社保花名册
* @Date 17:40 2022/7/27
* @Param
* @return
**/
@PostMapping("/doexportSocialRecordRoster")
@Operation(description = "导出社保花名册 hasPermission('wxhr:tdispatchinfo_doexportSocialRecordRoster')")
@SysLog("导出社保花名册信息")
@PreAuthorize("@pms.hasPermission('wxhr:tdispatchinfo_doexportSocialRecordRoster')")
public void doexportSocialRecordRoster(HttpServletResponse response, HttpServletRequest request,
@RequestParam(name = "idStr", required = false) String idStr,
@RequestBody String[] exportFields, SocialHandleSearchVo searchVo) {
tDispatchInfoService.doexportSocialRecordRoster(response,searchVo,idStr,exportFields);
}
/**
* @Author fxj
* @Description 导出 公积金变更清册
* @Date 20:05 2022/7/27
* @Param
* @return
**/
@PostMapping("/doexportFundRecordChange")
@Operation(description = "导出公积金变更清册 hasPermission('wxhr:tdispatchinfo_doexportFundRecordChange')")
@SysLog("导出公积金变更清册")
@PreAuthorize("@pms.hasPermission('wxhr:tdispatchinfo_doexportFundRecordChange')")
public void doexportFundRecordChange(HttpServletResponse response, HttpServletRequest request,
@RequestParam(name = "idStr", required = false) String idStr,
@RequestBody String[] exportFields, SocialHandleSearchVo searchVo) {
// 获取结算主体权限 TODO
List<String> settleDomains = null;
// 获取自定义sql TODO
String sql = CommonConstants.EMPTY_STRING;
tDispatchInfoService.doexportFundRecordChange(response, idStr,searchVo,settleDomains,sql);
}
/**
* @Author fxj
* @Description 导出公积金补缴清册
* @Date 20:05 2022/7/27
* @Param
* @return
**/
@GetMapping("/doExportFundSupplementaryRecord")
@Operation(description = "导出公积金补缴清册 hasPermission('wxhr:tdispatchinfo_doExportFundSupplementaryRecord')")
@SysLog("导出公积金补缴清册")
@PreAuthorize("@pms.hasPermission('wxhr:tdispatchinfo_doExportFundSupplementaryRecord')")
public R<List<FundSupplementaryExportVo>> doExportFundSupplementaryRecord(HttpServletResponse response, HttpServletRequest request,
@RequestParam(name = "idStr", required = false) String idStr,
@RequestBody SocialHandleSearchVo searchVo) {
// 获取结算主体权限 TODO
List<String> settleDomains = null;
// 获取自定义sql TODO
String sql = CommonConstants.EMPTY_STRING;
return tDispatchInfoService.getFundSupplementaryRecords(idStr,searchVo,settleDomains,sql);
}
}
......@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.social.entity.TForecastLibrary;
import com.yifu.cloud.plus.v1.yifu.social.service.TForecastLibraryService;
import io.swagger.v3.oas.annotations.Operation;
......@@ -168,4 +169,33 @@ public class TForecastLibraryController {
return tForecastLibraryService.createForecastlibary(payMonths, empIdCard, settleDomainIds);
}
/**
* @Description: 每日定时刷新社保公积金信息、预估数据,根据新增的户数据
* @Author: hgw
* @Date: 2022/7/27 19:34
* @return: void
**/
@Operation(summary = "每日定时刷新社保公积金信息、预估数据,根据新增的户数据", description = "每日定时刷新社保公积金信息、预估数据,根据新增的户数据")
@SysLog("每日定时刷新社保公积金信息、预估数据,根据新增的户数据")
@Inner
@GetMapping("/inner/updateForecastLibaryBySysBase")
public void updateForecastLibaryBySysBase() {
tForecastLibraryService.updateForecastLibaryBySysBase(null);
}
/**
* @Description: 每月定时生成下月预估库数据
* @Author: hgw
* @Date: 2022/7/27 19:34
* @return: void
**/
@Operation(summary = "每月定时生成下月预估库数据", description = "每月定时生成下月预估库数据")
@SysLog("每月定时生成下月预估库数据")
@Inner
@GetMapping("/inner/everyMonthCreateForecastLibary")
public void everyMonthCreateForecastLibary() {
tForecastLibraryService.everyMonthCreateForecastLibary();
}
}
......@@ -20,10 +20,17 @@ package com.yifu.cloud.plus.v1.yifu.social.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.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo;
import com.yifu.cloud.plus.v1.yifu.social.vo.FundHandleExportVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.FundSupplementaryExportVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleExportVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 派单信息记录表
*
......@@ -38,4 +45,85 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
* @return
*/
IPage<TDispatchInfo> getTDispatchInfoPage(Page<TDispatchInfo> page, @Param("tDispatchInfo") TDispatchInfo tDispatchInfo);
/**
* 导出社保花名册数据查询
* @Author fxj
* @Date 2019-10-12
* @param dispatchInfo
* @param settleDomainIds
* @param idsStr
* @return
**/
List<SocialHandleExportVo> getSocialRecordRosterList(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("settleDomainIds")List<String> settleDomainIds,
@Param("idsStr") List<String> idsStr,
@Param("sql") String sql);
/**
* 导出社保花名册数据查询count
* @Author fxj
* @Date 2019-10-12
* @param dispatchInfo
* @param settleDomainIds
* @param idsStr
* @return
**/
int getSocialRecordRosterListCount(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("settleDomainIds")List<String> settleDomainIds,
@Param("idsStr") List<String> idsStr,
@Param("sql") String sql);
/**
* 社保页面查询
* @Author fxj
* @Date 2019-10-12
* @param tDispatchInfo
* @param settleDomains
* @param sql
* @return
**/
IPage<TDispatchInfo> getTDispatchSocialHandlePage(Page<TDispatchInfo> page,
@Param("tDispatchInfo") SocialHandleSearchVo tDispatchInfo,
@Param("settleDomainIds")List<String> settleDomains,
@Param("sql")String sql);
/**
* 公积金办理页面查询
* @Author fxj
* @Date 2019-10-12
* @param tDispatchInfo
* @param settleDomains
* @param sql
* @return
**/
IPage<TDispatchInfo> getTDispatchFundHandlePage(Page<TDispatchInfo> page,
@Param("tDispatchInfo")SocialHandleSearchVo tDispatchInfo,
@Param("settleDomainIds")List<String> settleDomains,
@Param("sql")String sql);
/**
* @Author fxj
* @Description 公积金补交清册
* @Date 19:47 2022/7/27
* @Param
* @return
**/
List<FundSupplementaryExportVo> getFundSupplementaryRecords(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("settleDomainIds")List<String> settleDomainIds,
@Param("idsStr") List<String> idsStr,
@Param("sql") String sql);
/**
* @Author fxj
* @Description 公积金变更清册cout
* @Date 19:47 2022/7/27
* @Param
* @return
**/
int getFundRecordCount(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("settleDomainIds")List<String> settleDomainIds,
@Param("idsStr") List<String> idsStr,
@Param("sql") String sql);
List<FundHandleExportVo> getFundRecordList(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("settleDomainIds")List<String> settleDomainIds,
@Param("idsStr") List<String> idsStr,
@Param("sql") String sql);
}
......@@ -23,9 +23,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo;
import com.yifu.cloud.plus.v1.yifu.social.vo.DispatchDetailVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoSearchVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
......@@ -49,7 +51,12 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
List<TDispatchInfo> noPageDiy(TDispatchInfoSearchVo searchVo);
R<List<ErrorMessage>> importReduceDiy(InputStream inputStream);
@GlobalTransactional
void importTDispatchInfo(List<TDispatchImportVo> excelVOList,
List<ErrorMessage> errorMessageList,
YifuUser user);
R<List<ErrorMessage>> importReduceDiy(InputStream inputStream);
R<Boolean> removeByIdDiy(String id);
......@@ -60,4 +67,14 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
R<List<ErrorMessage>> addApplyAudit(String ids,String auditStatus,String auditRemark);
R<List<ErrorMessage>> addApplyHandle(String ids,String typeSub,String handleStatus,String handleRemark,String socialType);
void doexportSocialRecordRoster(HttpServletResponse response, SocialHandleSearchVo searchVo, String idStr, String[] exportFields);
IPage<TDispatchInfo> getTDispatchSocialHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo, List<String> settleDomains, String sql);
IPage<TDispatchInfo> getTDispatchFundHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo, List<String> settleDomains, String sql);
R<List<FundSupplementaryExportVo>> getFundSupplementaryRecords(String idStr,SocialHandleSearchVo dispatchInfo, List<String> settleDomains, String sql);
void doexportFundRecordChange(HttpServletResponse response,String idStr, SocialHandleSearchVo searchVo, List<String> settleDomains, String sql);
}
......@@ -1656,15 +1656,115 @@ public class TForecastLibraryServiceImpl extends ServiceImpl<TForecastLibraryMap
return null;
}
/**
* @Description: 每月1号定时生成下月预估库数据
* @Author: hgw
* @Date: 2022/7/27 19:30
* @return: void
**/
@Override
public void everyMonthCreateForecastLibary() {
List<TSocialFundInfo> socialFundInfoList = socialFundInfoMapper.selectList(Wrappers.<TSocialFundInfo>query().lambda());
if (socialFundInfoList != null && !socialFundInfoList.isEmpty()) {
String payMonth = DateUtil.addMonth(1);
for (TSocialFundInfo socialFundInfo : socialFundInfoList) {
// TODO-生成新的社保公积金数据
everyMonthCreateForecastLibaryCore(payMonth, socialFundInfo);
}
}
}
private R<String> everyMonthCreateForecastLibaryCore(String payMonth, TSocialFundInfo socialFundInfo) {
String empIdCard = socialFundInfo.getEmpIdcard();
//定义未推送的按条件查询得到的预估数据
List<TForecastLibrary> librarySocialList = null;
//定义已推送的按条件查询得到的预估数据
List<TForecastLibrary> librarySocialListTemp = null;
//定义未推送的按条件查询得到的预估数据
List<TForecastLibrary> libraryFundList = null;
//定义已推送的按条件查询得到的预估数据
List<TForecastLibrary> libraryFundListTemp = null;
List<String> payMonthList = new ArrayList<>();
payMonthList.add(payMonth);
//查询出所有符合条件的社保数据
List<TSocialFundInfo> socialInfoList = null;
List<TSocialFundInfo> fundList = null;
// 查询当年所有的社保临时政策用于生成预估数据
List<TAgentConfig> configList = agentConfigMapper.selectList(Wrappers.<TAgentConfig>query().lambda()
.eq(TAgentConfig::getOpenFlag, CommonConstants.ZERO_INT));
HashMap<String, TAgentConfig> agentConfigHashMap = new HashMap<>();
if (Common.isNotNull(configList) && Common.isNotNull(payMonthList)) {
initConfigByPayMonths(configList, payMonthList, agentConfigHashMap);
}
//查询出所有对应条件的预估数、社保数据、公积金数据据用于重新生成
if (Common.isNotNull(empIdCard)) {
librarySocialList = baseMapper.selectList(Wrappers.<TForecastLibrary>query().lambda()
.eq(TForecastLibrary::getEmpIdcard, empIdCard)
.eq(TForecastLibrary::getDataType, CommonConstants.ZERO_INT)
.eq(TForecastLibrary::getSocialPayMonth, payMonth)
.eq(TForecastLibrary::getDataPush, CommonConstants.ZERO_INT));
librarySocialListTemp = baseMapper.selectList(Wrappers.<TForecastLibrary>query().lambda()
.eq(TForecastLibrary::getEmpIdcard, empIdCard)
.eq(TForecastLibrary::getDataType, CommonConstants.ZERO_INT)
.eq(TForecastLibrary::getSocialPayMonth, payMonth)
.eq(TForecastLibrary::getDataPush, CommonConstants.ONE_INT));
libraryFundList = baseMapper.selectList(Wrappers.<TForecastLibrary>query().lambda()
.eq(TForecastLibrary::getEmpIdcard, empIdCard)
.eq(TForecastLibrary::getDataType, CommonConstants.ONE_INT)
.eq(TForecastLibrary::getProvidentPayMonth, payMonth)
.eq(TForecastLibrary::getDataPush, CommonConstants.ZERO_INT));
libraryFundListTemp = baseMapper.selectList(Wrappers.<TForecastLibrary>query().lambda()
.eq(TForecastLibrary::getEmpIdcard, empIdCard)
.eq(TForecastLibrary::getDataType, CommonConstants.ONE_INT)
.eq(TForecastLibrary::getProvidentPayMonth, payMonth)
.eq(TForecastLibrary::getDataPush, CommonConstants.ONE_INT));
socialInfoList = socialFundInfoMapper.getSocialList(empIdCard, null);
fundList = socialFundInfoMapper.getFundList(empIdCard, null);
}
if (Common.isEmpty(socialInfoList)
&& Common.isEmpty(fundList)) {
return R.failed("无需要重新生成的数据(无数据或数据已结算不可重新生成!)");
}
//先删除然后重新生成
if (Common.isNotNull(librarySocialList)) {
baseMapper.deleteBatchIds(librarySocialList);
}
if (Common.isNotNull(libraryFundList)) {
baseMapper.deleteBatchIds(libraryFundList);
}
// 已存在的预估数据,采用比例
HashMap<String, TForecastLibrary> socialHistoryMap = new HashMap<>();
HashMap<String, TForecastLibrary> fundHistoryMap = new HashMap<>();
// 已推送的预估明细Map
HashMap<String, TForecastLibrary> socialPushMap = new HashMap<>();
HashMap<String, TForecastLibrary> fundPushMap = new HashMap<>();
// 组建基础Map
this.getBaseMap(librarySocialList, librarySocialListTemp, libraryFundList, libraryFundListTemp
, socialHistoryMap, fundHistoryMap, socialPushMap, fundPushMap);
Map<String, TForecastLibrary> saveLibraryMap = new HashMap<>();
boolean isReduceSocial = false;
boolean isReduceFund = false;
// 核心刷新
R<String> coreR = this.doCore(payMonthList, socialInfoList, fundList, agentConfigHashMap, socialHistoryMap
, fundHistoryMap, socialPushMap, fundPushMap, saveLibraryMap, isReduceSocial, isReduceFund);
if (coreR != null) return coreR;
boolean isSaveAndUpdate = false;
for (TForecastLibrary library : saveLibraryMap.values()) {
if (Common.isEmpty(library.getSocialId()) && Common.isEmpty(library.getProvidentId())) {
continue;
}
if (Common.isNotNull(library.getId())) {
baseMapper.updateById(library);
} else {
library.setCreateTime(LocalDateTime.now());
baseMapper.insert(library);
}
isSaveAndUpdate = true;
}
if (isSaveAndUpdate) {
return R.ok(null, "执行成功!");
} else {
return R.failed("执行失败!无需更新的数据!");
}
}
}
......@@ -26,6 +26,7 @@
<resultMap id="tProvidentFundMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TProvidentFund">
<id property="id" column="ID"/>
<result property="providentHousehold" column="PROVIDENT_HOUSEHOLD"/>
<result property="providentHouseholdName" column="PROVIDENT_HOUSEHOLD_NAME"/>
<result property="providentStart" column="PROVIDENT_START"/>
<result property="unitProvidengCardinal" column="UNIT_PROVIDENG_CARDINAL"/>
<result property="personalProvidentCardinal" column="PERSONAL_PROVIDENT_CARDINAL"/>
......@@ -76,6 +77,7 @@
<sql id="Base_Column_List">
a.ID,
a.PROVIDENT_HOUSEHOLD,
a.PROVIDENT_HOUSEHOLD_NAME,
a.PROVIDENT_START,
a.UNIT_PROVIDENG_CARDINAL,
a.PERSONAL_PROVIDENT_CARDINAL,
......
......@@ -26,6 +26,7 @@
<resultMap id="tSocialInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TSocialInfo">
<id property="id" column="ID"/>
<result property="socialHousehold" column="SOCIAL_HOUSEHOLD"/>
<result property="socialHouseholdName" column="SOCIAL_HOUSEHOLD_NAME"/>
<result property="socialStartDate" column="SOCIAL_START_DATE"/>
<result property="unitPensionCardinal" column="UNIT_PENSION_CARDINAL"/>
<result property="unitMedicalCardinal" column="UNIT_MEDICAL_CARDINAL"/>
......@@ -37,7 +38,6 @@
<result property="personalMedicalCardinal" column="PERSONAL_MEDICAL_CARDINAL"/>
<result property="personalBigailmentCardinal" column="PERSONAL_BIGAILMENT_CARDINAL"/>
<result property="personalUnemploymentCardinal" column="PERSONAL_UNEMPLOYMENT_CARDINAL"/>
<result property="personalWorkInjuryCardinal" column="PERSONAL_WORK_INJURY_CARDINAL"/>
<result property="empId" column="EMP_ID"/>
<result property="empNo" column="EMP_NO"/>
<result property="empName" column="EMP_NAME"/>
......@@ -124,6 +124,7 @@
<sql id="Base_Column_List">
a.ID,
a.SOCIAL_HOUSEHOLD,
a.SOCIAL_HOUSEHOLD_NAME,
a.SOCIAL_START_DATE,
a.UNIT_PENSION_CARDINAL,
a.UNIT_MEDICAL_CARDINAL,
......
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