Commit 4bebc08c authored by fangxinjiang's avatar fangxinjiang

Merge remote-tracking branch 'origin/develop' into develop

parents c41ebc2e f4267ebd
......@@ -505,6 +505,11 @@ public class InsurancesConstants {
*/
public static final String SETTLE_MONTH_CHANGE_LIST_IS_EMPTY ="当前变更结算月列表为空";
/**
* 减员办理导入列表为空
*/
public static final String INSURANCE_REFUND_IMPORT_LIST_IS_EMPTY ="减员办理导入列表为空";
/**
* 替换类型无法变更项目
*/
......@@ -684,12 +689,12 @@ public class InsurancesConstants {
/**
* 导入减员数据
*/
public static final String INSURANCE_REFUND_IMPORT = "导入减员数据";
public static final String INSURANCE_REFUND_IMPORT = "减员提交申请";
/**
* 减员导出办理
*/
public static final String INSURANCE_REFUND_EXPORT = "减员导出办理";
public static final String INSURANCE_REFUND_EXPORT = "减员办理中";
/**
* 减员办理成功
......@@ -700,7 +705,7 @@ public class InsurancesConstants {
/**
* 减员退回成功
*/
public static final String INSURANCE_REFUND_FAILED = "减员退回";
public static final String INSURANCE_REFUND_FAILED = "减员办理退回";
/**
* 变更所属项目
......@@ -794,5 +799,96 @@ public class InsurancesConstants {
*/
public static final String INSURANCES_DETAIL_IS_OVERDUE_ERROR = "保单信息已过期,不能进行出险操作";
/**
* 当前的操作类型不正确
*/
/**
* 减员办理列表为空
*/
/**
* 减员退回的办理意见不能为空
*/
public static final String REFUND_MESSAGE_IS_EMPTY = "减员退回的办理意见不能为空";
/**
* 该保单信息已被更新为减员退回
*/
/**
* 该保单信息已被更新为减员成功
*/
/**
* 该保单信息已被删除
*/
public static final String INSURANCES_IS_DELETE = "该保单信息已被删除";
/**
* 导入成功
*/
public static final String IMPORT_SUCCESS = "导入成功";
/**
* 成功
*/
public static final String SUCCESS = "成功";
/**
* 失败
*/
public static final String FAILED = "失败";
/**
* 办理结果类型错误
*/
public static final String HAND_RESULT_ERROR = "办理结果类型错误";
/**
* 办理结果为空
*/
public static final String HAND_RESULT_IS_EMPTY = "办理结果为空";
/**
* 无该条数据的操作权限
*/
public static final String NO_DETAIL_JURISDICTION = "无该条数据的操作权限";
/**
* 当前为待投保状态,不可办理
*/
public static final String BUY_HANDLE_STATUS_ONE_HANDLE_ERROR = "当前为待投保状态,不可办理";
/**
* 当前为投保中状态,不可办理
*/
public static final String BUY_HANDLE_STATUS_TWO_HANDLE_ERROR = "当前为投保中状态,不可办理";
/**
* 当前为已投保状态,不可办理
*/
public static final String BUY_HANDLE_STATUS_THREE_HANDLE_ERROR = "当前为已投保状态,不可办理";
/**
* 当前为投保退回状态,不可办理
*/
public static final String BUY_HANDLE_STATUS_FOUR_HANDLE_ERROR = "当前为投保退回状态,不可办理";
/**
* 当前为待减员状态,不可办理
*/
public static final String REFUND_STATUS_ONE_HANDLE_ERROR = "当前为待减员状态,不可办理";
/**
* 当前为已减员状态,不可办理
*/
public static final String REFUND_STATUS_THREE_HANDLE_ERROR = "当前为已减员状态,不可办理";
/**
* 当前为减员退回状态,不可办理
*/
public static final String REFUND_STATUS_FOUR_HANDLE_ERROR = "当前为减员退回状态,不可办理";
}
......@@ -238,7 +238,7 @@ public class TInsuranceDetail extends BaseEntity {
/**
* 减员状态 1待减员 2减员中3减员退回
*/
@Schema(description = "减员状态 1待减员 2减员中3减员退回")
@Schema(description = "减员状态 1待减员 2减员中3减员退回,4减员成功")
private Integer reduceHandleStatus;
/**
......
......@@ -83,7 +83,7 @@ public class EKPUtil {
* 注意key的书写格式,类似EL表达式的方式,属性关系用'.', 列表和数组关系用[],Map关系用["xxx"]
*/
public static String sendToEKP(EKPInteractiveParam param){
System.out.println("开始推送EKP");
log.info("推送EKP开始");
RestTemplate yourRestTemplate = new RestTemplate();
TInsuranceSettlePushParam pushParam = InsuranceDetail2PushParam(param);
try{
......@@ -112,21 +112,18 @@ public class EKPUtil {
//必须设置上传类型,如果入参是字符串,使用MediaType.TEXT_PLAIN;如果
HttpEntity<MultiValueMap<String,Object>> entity = new HttpEntity<MultiValueMap<String,Object>>(wholeForm,headers);
//有返回值的情况 VO可以替换成具体的JavaBean
System.out.println("交易开始");
ResponseEntity<String> obj = yourRestTemplate.exchange(url, HttpMethod.POST, entity, String.class);
System.out.println("交易结束");
System.out.println("obj"+obj);
String body = obj.getBody();
if (StringUtils.isBlank(body)){
System.out.println("交易失败"+body);
return body;
log.error("交易失败");
return null;
}else{
System.out.println("交易成功"+body);
log.info("交易成功:"+body);
return body;
}
}catch (Exception e){
log.info(e.toString());
return e.getMessage();
log.info(e.getMessage());
return null;
}
}
......
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
......@@ -24,9 +22,60 @@ public class InsuranceRefundImportParam implements Serializable {
@Schema(description = "商险id")
private String id;
/**
* 员工姓名
*/
@Schema(description = "员工姓名")
private String empName;
/**
* 员工身份证号码
*/
@Schema(description = "员工身份证号码")
private String empIdcardNo;
/**
* 保险公司名称
*/
@Schema(description = "保险公司名称")
private String insuranceCompanyName;
/**
* 险种名称
*/
@Schema(description = "险种名称")
private String insuranceTypeName;
/**
* 保单开始日期
*/
@Schema(description = "保单开始日期")
private String policyStart;
/**
* 保单结束日期
*/
@Schema(description = "保单结束日期")
private String policyEnd;
/**
* 购买标准
*/
@Schema(description = "购买标准")
private String buyStandard;
/**
* 办理类型
*/
@Schema(description = "办理类型")
private String handType;
/**
* 办理意见
*/
@Schema(description = "办理意见")
private String remark;
/**
* 错误信息
*/
@Schema(description = "错误信息")
private String errorMessage;
}
......@@ -381,6 +381,19 @@ public class TInsuranceDetailController {
return tInsuranceDetailService.updateInsuranceRefund(insuranceDetail);
}
/**
* 减员办理导入
*
* @author zhaji
* @param insuranceRefundImportList 减员信息
* @return {@link R<List<InsuranceRefundImportParam>>}
*/
@Operation(summary = "减员办理导入", description = "减员办理导入")
@PostMapping("/insuranceRefundImport")
public R insuranceRefundImport(@RequestBody List<InsuranceRefundImportParam> insuranceRefundImportList) {
return tInsuranceDetailService.insuranceRefundImport(insuranceRefundImportList);
}
/**
* 根据保险公司名称查询保单明细
*
......
......@@ -242,6 +242,16 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
*/
R updateInsuranceRefund(InsuranceRefundListParam insuranceDetail);
/**
* 减员办理导入
*
* @author zhaji
* @param insuranceRefundImportList 减员办理导入
* @return {@link R}
*/
R insuranceRefundImport(List<InsuranceRefundImportParam> insuranceRefundImportList);
/**
* 变更结算月
*
......
......@@ -3028,7 +3028,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
refund.setReduceHandleStatus(refundType);
refundList.add(refund);
}else{
refundErrorVo.setErrorMessage("该保单信息已被删除");
refundErrorVo.setErrorMessage(InsurancesConstants.INSURANCES_IS_DELETE);
errorList.add(refundErrorVo);
}
}
......@@ -3043,7 +3043,62 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
}else{
addOperate(successList,user,InsurancesConstants.INSURANCE_REFUND_FAILED,remark);
}
return R.ok(errorList,"操作成功");
return R.ok(errorList,InsurancesConstants.OPERATE_SUCCESS);
}
/**
* 减员办理导入
*
* @author zhaji
* @param
* @return void
*/
@Transactional(rollbackFor = Exception.class)
@Override
public R insuranceRefundImport(List<InsuranceRefundImportParam> insuranceRefundImportList) {
YifuUser user = SecurityUtils.getUser();
if (!Common.isNotEmpty(insuranceRefundImportList)) {
return R.failed(InsurancesConstants.INSURANCE_REFUND_IMPORT_LIST_IS_EMPTY);
}
Map<String, List<InsuranceRefundImportParam>> map = insuranceChangeCheck(insuranceRefundImportList, user);
List<InsuranceRefundImportParam> successList = map.get("successList");
List<InsuranceRefundImportParam> errorList = map.get("errorList");
//减员退回
List<TInsuranceOperate> operateList =new ArrayList<>(16);
if (CollectionUtils.isNotEmpty(successList)) {
for (InsuranceRefundImportParam param : successList) {
TInsuranceOperate operate = new TInsuranceOperate();
LambdaUpdateWrapper<TInsuranceRefund> refund = new LambdaUpdateWrapper<>();
refund.eq(TInsuranceRefund :: getInsDetailId ,param.getId());
refund.set(TInsuranceRefund :: getRemark,param.getRemark());
LambdaUpdateWrapper<TInsuranceDetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TInsuranceDetail::getId, param.getId())
.set(TInsuranceDetail::getUpdateBy, user.getId())
.set(TInsuranceDetail::getUpdateTime, LocalDateTime.now());
if(InsurancesConstants.SUCCESS.equals(param.getHandType())){
updateWrapper.set(TInsuranceDetail :: getReduceHandleStatus,CommonConstants.FOUR_INT);
updateWrapper.set(TInsuranceDetail :: getBuyHandleStatus,CommonConstants.FIVE_INT);
refund.set(TInsuranceRefund :: getReduceHandleStatus,CommonConstants.FOUR_INT);
}else{
updateWrapper.set(TInsuranceDetail:: getReduceHandleStatus,CommonConstants.THREE_INT);
refund.set(TInsuranceRefund :: getReduceHandleStatus,CommonConstants.THREE_INT);
}
update(updateWrapper);
tInsuranceRefundService.update(refund);
operate.setInsuranceDetailId(param.getId());
operate.setRemark(param.getRemark());
operate.setCreateName(user.getNickname());
operate.setCreateTime(LocalDateTime.now());
operate.setCreateBy(user.getId());
if(InsurancesConstants.SUCCESS.equals(param.getHandType())){
operate.setOperateDesc("减员成功");
}else{
operate.setOperateDesc("减员退回");
}
}
}
tInsuranceOperateService.saveBatch(operateList);
return R.ok(errorList, "导入成功");
}
/**
......@@ -3495,33 +3550,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
}
tInsuranceOperateService.saveBatch(operateList);
List<DeptChangeCheckParam> errorList = stringListMap.get("errorList");
return R.ok(errorList,"导入成功");
}
/**
* 发送变更项目至EKP
*
* @author zhaji
* @param successList
* @return void
*/
private void updateDeptNo2EKP(List<TInsuranceDetail> successList) {
for (TInsuranceDetail param : successList) {
}
}
/**
* 发送作废信息至EKP
*
* @author zhaji
* @param cancelList 作废信息列表
* @return void
*/
private void pushSettleCancel2EKP(List<TInsuranceSettleCancel> cancelList) {
for (TInsuranceSettleCancel param : cancelList) {
}
return R.ok(errorList,InsurancesConstants.IMPORT_SUCCESS);
}
/**
......@@ -3565,7 +3594,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
YifuUser user = SecurityUtils.getUser();
TInsuranceDetail insuranceDetail = getById(id);
if(Common.isEmpty(insuranceDetail) || CommonConstants.ONE_INT == insuranceDetail.getDeleteFlag()){
return R.failed("保单信息不存在或已被删除");
return R.failed(InsurancesConstants.INSURANCES_IS_DELETE);
}
Integer reduceHandleStatus = insuranceDetail.getReduceHandleStatus();
Integer buyHandleStatus = insuranceDetail.getBuyHandleStatus();
......@@ -4085,6 +4114,188 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
map.put("successList",successList);
return map;
}
/**
* 减员办理校验
*
* @author zhaji
* @param settleMonthCheckList 减员办理校验
* @return {@link R}
*/
private Map<String,List<InsuranceRefundImportParam>> insuranceChangeCheck(List<InsuranceRefundImportParam> settleMonthCheckList,YifuUser user) {
Map<String,List<InsuranceRefundImportParam>> map = new HashMap<>(16);
List<InsuranceRefundImportParam> errorList = new ArrayList<>();
List<InsuranceRefundImportParam> successList = new ArrayList<>();
for (InsuranceRefundImportParam param : settleMonthCheckList) {
//办理结果
String handType = param.getHandType();
if(StringUtils.isBlank(handType)){
param.setErrorMessage(InsurancesConstants.HAND_RESULT_IS_EMPTY);
errorList.add(param);
continue;
}
if(!InsurancesConstants.SUCCESS.equals(handType) && !InsurancesConstants.FAILED.equals(handType)){
param.setErrorMessage(InsurancesConstants.HAND_RESULT_ERROR);
errorList.add(param);
continue;
}
//办理意见
String remark = param.getRemark();
if(InsurancesConstants.FAILED.equals(handType) && StringUtils.isBlank(remark)){
param.setErrorMessage(InsurancesConstants.REFUND_MESSAGE_IS_EMPTY);
errorList.add(param);
continue;
}
//员工姓名
String empName = param.getEmpName();
if(StringUtils.isBlank(empName)){
param.setErrorMessage(InsurancesConstants.EMP_NAME_NOT_EMPTY);
errorList.add(param);
continue;
}
//员工身份证
String empIdCardNo = param.getEmpIdcardNo();
if(StringUtils.isBlank(empIdCardNo)){
param.setErrorMessage(InsurancesConstants.EMP_IDCARD_NO_NOT_EMPTY);
errorList.add(param);
continue;
}
//保险公司名称
String insuranceCompanyName = param.getInsuranceCompanyName();
if(StringUtils.isBlank(insuranceCompanyName)){
param.setErrorMessage(InsurancesConstants.INSURANCE_COMPANY_NAME_NOT_EMPTY);
errorList.add(param);
continue;
}
//险种名称
String insuranceTypeName = param.getInsuranceTypeName();
if(StringUtils.isBlank(insuranceTypeName)){
param.setErrorMessage(InsurancesConstants.INSURANCE_TYPE_NAME_NOT_EMPTY);
errorList.add(param);
continue;
}
//购买标准
String buyStandard = param.getBuyStandard();
if(StringUtils.isBlank(buyStandard)){
param.setErrorMessage(InsurancesConstants.BUY_STANDARD_NOT_EMPTY);
errorList.add(param);
continue;
}
//保单开始日期
String policyStart = param.getPolicyStart();
if(StringUtils.isBlank(policyStart)){
param.setErrorMessage(InsurancesConstants.POLICY_START_NOT_EMPTY);
errorList.add(param);
continue;
}
//保单结束日期
String policyEnd = param.getPolicyEnd();
if(StringUtils.isBlank(policyEnd)){
param.setErrorMessage(InsurancesConstants.POLICY_END_NOT_EMPTY);
errorList.add(param);
continue;
}
// 身份证号位数校验(18 位合法)
if (!ValidityUtil.validateIDCard(param.getEmpIdcardNo())){
param.setErrorMessage(InsurancesConstants.EMP_IDCARD_NO_NOT_LEGITIMATE);
errorList.add(param);
continue;
}
// 保单开始日期格式校验
if(!LocalDateUtil.isDate(policyStart,LocalDateUtil.NORM_DATE_PATTERN)){
param.setErrorMessage(InsurancesConstants.POLICY_START_PARSE_ERROR);
errorList.add(param);
continue;
}
// 保单结束日期格式校验
if(!LocalDateUtil.isDate(policyEnd,LocalDateUtil.NORM_DATE_PATTERN)){
param.setErrorMessage(InsurancesConstants.POLICY_END_PARSE_ERROR);
errorList.add(param);
continue;
}
LambdaQueryWrapper<TInsuranceDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TInsuranceDetail ::getDeleteFlag,CommonConstants.ZERO_INT)
.eq(TInsuranceDetail :: getEmpName,empName)
.eq(TInsuranceDetail :: getEmpIdcardNo,empIdCardNo)
.eq(TInsuranceDetail ::getInsuranceTypeName,insuranceTypeName)
.eq(TInsuranceDetail :: getInsuranceCompanyName,insuranceCompanyName)
.eq(TInsuranceDetail :: getBuyStandard,buyStandard)
.eq(TInsuranceDetail :: getPolicyStart,LocalDateUtil.parseLocalDate(policyStart) )
.eq(TInsuranceDetail :: getPolicyEnd,LocalDateUtil.parseLocalDate(policyEnd))
.orderByDesc(TInsuranceDetail::getUpdateTime)
.last(CommonConstants.LAST_ONE_SQL);
TInsuranceDetail insuranceDetail = getOne(queryWrapper);
//如果保单信息为空
if (Common.isEmpty(insuranceDetail)){
param.setErrorMessage(InsurancesConstants.USER_DATA_IS_NOT_EXIST);
errorList.add(param);
continue;
}
String detailId = insuranceDetail.getId();
//查数据是否存在权限范围内
String regionSQL = getRegionSQL(user);
TInsuranceDetail detailByRegionSQL = this.baseMapper.selectByregionSQL(regionSQL,detailId);
if (!Optional.ofNullable(detailByRegionSQL).isPresent()){
param.setErrorMessage(InsurancesConstants.NO_DETAIL_JURISDICTION);
errorList.add(param);
continue;
}
//投保办理状态
Integer buyHandleStatus = insuranceDetail.getBuyHandleStatus();
//减员状态
Integer reduceHandleStatus = insuranceDetail.getReduceHandleStatus();
//商险待投保,无法办理
if (CommonConstants.ONE_INT == buyHandleStatus){
param.setErrorMessage(InsurancesConstants.BUY_HANDLE_STATUS_ONE_HANDLE_ERROR);
errorList.add(param);
continue;
}
//商险投保中,无法办理
if (CommonConstants.TWO_INT == buyHandleStatus){
param.setErrorMessage(InsurancesConstants.BUY_HANDLE_STATUS_TWO_HANDLE_ERROR);
errorList.add(param);
continue;
}
//商险投保成功,无法办理
if (CommonConstants.THREE_INT == buyHandleStatus && null == reduceHandleStatus){
param.setErrorMessage(InsurancesConstants.BUY_HANDLE_STATUS_THREE_HANDLE_ERROR);
errorList.add(param);
continue;
}
//商险投保退回,无法办理
if (CommonConstants.FOUR_INT == buyHandleStatus){
param.setErrorMessage(InsurancesConstants.BUY_HANDLE_STATUS_FOUR_HANDLE_ERROR);
errorList.add(param);
continue;
}
if ( null != reduceHandleStatus){
//待减员
if(CommonConstants.ONE_INT == reduceHandleStatus ){
param.setErrorMessage(InsurancesConstants.REFUND_STATUS_ONE_HANDLE_ERROR);
errorList.add(param);
continue;
}
//已减员
if(CommonConstants.THREE_INT == reduceHandleStatus ){
param.setErrorMessage(InsurancesConstants.REFUND_STATUS_THREE_HANDLE_ERROR);
errorList.add(param);
continue;
}
//减员退回
if(CommonConstants.FOUR_INT == reduceHandleStatus ){
param.setErrorMessage(InsurancesConstants.REFUND_STATUS_FOUR_HANDLE_ERROR);
errorList.add(param);
continue;
}
}
param.setId(detailId);
successList.add(param);
}
map.put("errorList",errorList);
map.put("successList",successList);
return map;
}
/**
* 校验所属项目
*
......
......@@ -243,5 +243,22 @@ public class TSalaryAccount2022 {
@ExcelAttribute(name = "累计婴幼儿照护费用")
@ExcelProperty("累计婴幼儿照护费用")
private BigDecimal sumBabyMoney;
/**
* 是否当月新增人员
*/
@ExcelAttribute(name = "是否当月新增人员", readConverterExp = "0=否,1=是")
@ExcelProperty("是否当月新增人员")
private String isNewEmployee;
/**
* 入职年月
*/
@ExcelAttribute(name = "入职年月")
@ExcelProperty("入职年月")
private String createMonth;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码")
@ExcelProperty("手机号码")
private String empPhone;
}
......@@ -49,49 +49,18 @@ public class TStatisticsCurrentReport {
/**
* 税务主体(封面抬头)
*/
@ExcelAttribute(name = "税务主体(封面抬头)", maxLength = 50)
@Length(max = 50, message = "税务主体(封面抬头)不能超过50个字符")
@ExcelProperty("税务主体(封面抬头)")
@ExcelAttribute(name = "申报单位", maxLength = 50)
@Length(max = 50, message = "申报单位不能超过50个字符")
@ExcelProperty("申报单位")
private String invoiceTitle;
/**
* 结算部门id
*/
@ExcelAttribute(name = "结算部门id", isNotEmpty = true, errorInfo = "结算部门id不能为空", maxLength = 32)
@NotBlank(message = "结算部门id不能为空")
@Length(max = 32, message = "结算部门id不能超过32个字符")
@ExcelProperty("结算部门id")
private String settleDepartId;
/**
* 结算部门no
*/
@ExcelAttribute(name = "结算部门no", isNotEmpty = true, errorInfo = "结算部门no不能为空", maxLength = 50)
@NotBlank(message = "结算部门no不能为空")
@Length(max = 50, message = "结算部门no不能超过50个字符")
@ExcelProperty("结算部门no")
private String settleDepartNo;
/**
* 结算部门name
*/
@ExcelAttribute(name = "结算部门name", isNotEmpty = true, errorInfo = "结算部门name不能为空", maxLength = 50)
@NotBlank(message = "结算部门name不能为空")
@Length(max = 50, message = "结算部门name不能超过50个字符")
@ExcelProperty("结算部门name")
private String settleDepartName;
/**
* 申报月份(YYYYMM)
*/
@ExcelAttribute(name = "申报月份(YYYYMM)", isNotEmpty = true, errorInfo = "申报月份(YYYYMM)不能为空", maxLength = 6)
@ExcelAttribute(name = "申报月份", isNotEmpty = true, errorInfo = "申报月份(YYYYMM)不能为空", maxLength = 6)
@NotBlank(message = "申报月份(YYYYMM)不能为空")
@Length(max = 6, message = "申报月份(YYYYMM)不能超过6个字符")
@ExcelProperty("申报月份(YYYYMM)")
@ExcelProperty("申报月份")
private String declareMonth;
/**
* 员工 ID
*/
@ExcelAttribute(name = "员工 ID", maxLength = 32)
@Length(max = 32, message = "员工 ID不能超过32个字符")
@ExcelProperty("员工 ID")
private String empId;
/**
* 姓名
*/
......@@ -106,12 +75,60 @@ public class TStatisticsCurrentReport {
@Length(max = 25, message = "身份证号不能超过25个字符")
@ExcelProperty("身份证号")
private String empIdcard;
/**
* 本期收入
*/
@ExcelAttribute(name = "本期收入")
@ExcelProperty("本期收入")
private BigDecimal realSalary;
/**
* 本期应纳税额
*/
@ExcelAttribute(name = "本期应纳税额")
@ExcelProperty("本期应纳税额")
private BigDecimal salaryTax;
/**
* 本期基本养老保险
*/
@ExcelAttribute(name = "本期基本养老保险")
@ExcelProperty("本期基本养老保险")
private BigDecimal personalPensionMoney;
/**
* 本期基本医疗保险
*/
@ExcelAttribute(name = "本期基本医疗保险")
@ExcelProperty("本期基本医疗保险")
private BigDecimal personalMedicalMoney;
/**
* 本期失业保险
*/
@ExcelAttribute(name = "本期失业保险")
@ExcelProperty("本期失业保险")
private BigDecimal personalUnemploymentMoney;
/**
* 本期住房公积金
*/
@ExcelAttribute(name = "本期住房公积金")
@ExcelProperty("本期住房公积金")
private BigDecimal personalProvidentFee;
/**
* 本期企业年金
*/
@ExcelAttribute(name = "本期企业年金")
@ExcelProperty("本期企业年金")
private BigDecimal enterpriseAnnuity;
/**
* 累计减除费用
*/
@ExcelAttribute(name = "累计减除费用")
@ExcelProperty("累计减除费用")
private BigDecimal costReduction;
/**
* 累计应纳税所得额
*/
@ExcelAttribute(name = "累计应纳税所得额")
@ExcelProperty("累计应纳税所得额")
private BigDecimal taxable;
/**
* 累计子女教育
*/
......@@ -119,17 +136,23 @@ public class TStatisticsCurrentReport {
@ExcelProperty("累计子女教育")
private BigDecimal childEduinfoMoney;
/**
* 累计住房租金
* 累计继续教育
*/
@ExcelAttribute(name = "累计住房租金")
@ExcelProperty("累计住房租金")
private BigDecimal housingRentalinfoMoney;
@ExcelAttribute(name = "累计继续教育")
@ExcelProperty("累计继续教育")
private BigDecimal continuingEducationExpenseMoney;
/**
* 累计住房贷款
*/
@ExcelAttribute(name = "累计住房贷款")
@ExcelProperty("累计住房贷款")
private BigDecimal housingLoanInterestExpenseMoney;
/**
* 累计住房租金
*/
@ExcelAttribute(name = "累计住房租金")
@ExcelProperty("累计住房租金")
private BigDecimal housingRentalinfoMoney;
/**
* 累计赡养老人
*/
......@@ -137,59 +160,69 @@ public class TStatisticsCurrentReport {
@ExcelProperty("累计赡养老人")
private BigDecimal supportElderlyExpenseMoney;
/**
* 累计继续教育
* 累计3岁以下婴幼儿照护
*/
@ExcelAttribute(name = "累计继续教育")
@ExcelProperty("累计继续教育")
private BigDecimal continuingEducationExpenseMoney;
@ExcelAttribute(name = "累计3岁以下婴幼儿照护")
@ExcelProperty("累计3岁以下婴幼儿照护")
private BigDecimal sumBabyMoney;
/**
* 累计应发
* 是否当月新增人员
*/
@ExcelAttribute(name = "累计应发")
@ExcelProperty("累计应发")
private BigDecimal realSalary;
@ExcelAttribute(name = "是否当月新增人员", readConverterExp = "0=否,1=是")
@ExcelProperty("是否当月新增人员")
private String isNewEmployee;
/**
* 累计基本养老
* 入职年月
*/
@ExcelAttribute(name = "累计基本养老")
@ExcelProperty("累计基本养老")
private BigDecimal personalPensionMoney;
@ExcelAttribute(name = "入职年月")
@ExcelProperty("入职年月")
private String createMonth;
/**
* 累计基本医疗
* 手机号码
*/
@ExcelAttribute(name = "累计基本医疗")
@ExcelProperty("累计基本医疗")
private BigDecimal personalMedicalMoney;
@ExcelAttribute(name = "手机号码")
@ExcelProperty("手机号码")
private String empPhone;
// 以下导出不需要
/**
* 累计失业
* 员工 ID
*/
@ExcelAttribute(name = "累计失业")
@ExcelProperty("累计失业")
private BigDecimal personalUnemploymentMoney;
@ExcelAttribute(name = "员工ID", maxLength = 32)
@Length(max = 32, message = "员工 ID不能超过32个字符")
@ExcelProperty("员工ID")
private String empId;
/**
* 个人社保
* 结算部门id
*/
@ExcelAttribute(name = "个人社保")
@ExcelProperty("个人社保")
private BigDecimal personalSocial;
@ExcelAttribute(name = "结算部门id", isNotEmpty = true, errorInfo = "结算部门id不能为空", maxLength = 32)
@NotBlank(message = "结算部门id不能为空")
@Length(max = 32, message = "结算部门id不能超过32个字符")
@ExcelProperty("结算部门id")
private String settleDepartId;
/**
* 累计住房公积金
* 结算部门no
*/
@ExcelAttribute(name = "累计住房公积金")
@ExcelProperty("累计住房公积金")
private BigDecimal personalProvidentFee;
@ExcelAttribute(name = "结算部门no", isNotEmpty = true, errorInfo = "结算部门no不能为空", maxLength = 50)
@NotBlank(message = "结算部门no不能为空")
@Length(max = 50, message = "结算部门no不能超过50个字符")
@ExcelProperty("结算部门no")
private String settleDepartNo;
/**
* 累计企业年金
* 结算部门name
*/
@ExcelAttribute(name = "累计企业年金")
@ExcelProperty("累计企业年金")
private BigDecimal enterpriseAnnuity;
@ExcelAttribute(name = "结算部门name", isNotEmpty = true, errorInfo = "结算部门name不能为空", maxLength = 50)
@NotBlank(message = "结算部门name不能为空")
@Length(max = 50, message = "结算部门name不能超过50个字符")
@ExcelProperty("结算部门name")
private String settleDepartName;
/**
* 累计应纳税所得
* 个人社保
*/
@ExcelAttribute(name = "累计应纳税所得")
@ExcelProperty("累计应纳税所得")
private BigDecimal taxable;
@ExcelAttribute(name = "个人社保")
@ExcelProperty("个人社保")
private BigDecimal personalSocial;
/**
* 税率
*/
......@@ -202,12 +235,7 @@ public class TStatisticsCurrentReport {
@ExcelAttribute(name = "速算扣除")
@ExcelProperty("速算扣除")
private BigDecimal quickDeducation;
/**
* 累计应纳税额
*/
@ExcelAttribute(name = "累计应纳税额")
@ExcelProperty("累计应纳税额")
private BigDecimal salaryTax;
/**
* 单位id
*/
......@@ -235,11 +263,6 @@ public class TStatisticsCurrentReport {
@ExcelAttribute(name = "专项汇总")
@ExcelProperty("专项汇总")
private BigDecimal specialDeduMoney;
/**
* 累计婴幼儿照护费用
*/
@ExcelAttribute(name = "累计婴幼儿照护费用")
@ExcelProperty("累计婴幼儿照护费用")
private BigDecimal sumBabyMoney;
}
......@@ -241,5 +241,22 @@ public class TStatisticsTaxSalary {
@ExcelAttribute(name = "累计婴幼儿照护费用")
@ExcelProperty("累计婴幼儿照护费用")
private BigDecimal sumBabyMoney;
/**
* 是否当月新增人员
*/
@ExcelAttribute(name = "是否当月新增人员", readConverterExp = "0=否,1=是")
@ExcelProperty("是否当月新增人员")
private String isNewEmployee;
/**
* 入职年月
*/
@ExcelAttribute(name = "入职年月")
@ExcelProperty("入职年月")
private String createMonth;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码")
@ExcelProperty("手机号码")
private String empPhone;
}
......@@ -16,11 +16,13 @@
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TStatisticsCurrentReport;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Set;
/**
* 统计-本期申报
......@@ -37,6 +39,10 @@ public class TStatisticsCurrentReportSearchVo extends TStatisticsCurrentReport {
@Schema(description = "选中ID,多个逗号分割")
private String ids;
@TableField(exist = false)
@Schema(description = "导出的表头的Set")
private Set<String> exportFields;
/**
* 创建时间区间 [开始时间,结束时间]
*/
......
......@@ -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.DateUtil;
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.salary.entity.TStatisticsCurrentReport;
import com.yifu.cloud.plus.v1.yifu.salary.service.TStatisticsCurrentReportService;
......@@ -92,6 +93,20 @@ public class TStatisticsCurrentReportController {
tStatisticsCurrentReportService.listExport(response, searchVo);
}
/**
* 通过id删除统计-工资薪金
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除统计-本期申报", description = "通过id删除统计-本期申报:hasPermission('salary_tstatisticscurrentreport_del')")
@SysLog("通过id删除统计-本期申报")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('salary_tstatisticscurrentreport_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tStatisticsCurrentReportService.removeById(id));
}
/**
* @param
* @Description: 生成本期申报
......
......@@ -74,7 +74,7 @@ public class TStatisticsCurrentReportServiceImpl extends ServiceImpl<TStatistics
*/
@Override
public void listExport(HttpServletResponse response, TStatisticsCurrentReportSearchVo searchVo) {
String fileName = "不良记录批量导出" + DateUtil.getThisTime() + ".xlsx";
String fileName = "本期申报批量导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TStatisticsCurrentReport> list = new ArrayList<>();
long count = noPageCountDiy(searchVo);
......@@ -85,8 +85,7 @@ public class TStatisticsCurrentReportServiceImpl extends ServiceImpl<TStatistics
response.setCharacterEncoding("utf-8");
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, "UTF-8"));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
//EasyExcel.write(out, TEmpBadRecord.class).sheet("不良记录").doWrite(list);
ExcelWriter excelWriter = EasyExcel.write(out, TStatisticsCurrentReport.class).build();
ExcelWriter excelWriter = EasyExcel.write(out, TStatisticsCurrentReport.class).includeColumnFiledNames(searchVo.getExportFields()).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
for (int i = 0; i <= count; ) {
......@@ -101,7 +100,7 @@ public class TStatisticsCurrentReportServiceImpl extends ServiceImpl<TStatistics
}
}
if (Common.isNotNull(list)) {
WriteSheet writeSheet = EasyExcel.writerSheet("统计-本期申报" + index).build();
WriteSheet writeSheet = EasyExcel.writerSheet("本期申报" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
......@@ -111,7 +110,7 @@ public class TStatisticsCurrentReportServiceImpl extends ServiceImpl<TStatistics
}
}
} else {
WriteSheet writeSheet = EasyExcel.writerSheet("统计-本期申报" + index).build();
WriteSheet writeSheet = EasyExcel.writerSheet("本期申报" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
......
......@@ -478,6 +478,7 @@ public class SalaryAccountUtil implements Serializable {
newEmp.setUnitNo(dept.getCustomerCode());
newEmp.setCreateBy(String.valueOf(user.getId()));
newEmp.setCreateName(user.getNickname());
newEmp.setInvoiceTitle(invoiceTitle);
if (!"3".equals(salaryType) && !"4".equals(salaryType)) {
minTaxMonth = tSalaryAccountService.getMinTaxMonthByNowYear(newEmp.getEmpIdcard(), nowYear);
if (Common.isNotNull(minTaxMonth)
......@@ -572,8 +573,21 @@ public class SalaryAccountUtil implements Serializable {
errorList.add(new ErrorMessage((i + 2), error));
continue;
}
if (Common.isEmpty(emp.getBankProvince())) {
error = "第" + (i + 2) + "行:员工:" + emp.getEmpIdcard() + "-发放方式为银行发放,但是-开户行省-为空,请去薪酬人员查询处更新!";
errorList.add(new ErrorMessage((i + 2), error));
continue;
}
if (Common.isEmpty(emp.getBankCity())) {
error = "第" + (i + 2) + "行:员工:" + emp.getEmpIdcard() + "-发放方式为银行发放,但是-开户行市-为空,请去薪酬人员查询处更新!";
errorList.add(new ErrorMessage((i + 2), error));
continue;
}
entity.setBankName(emp.getBankName());
entity.setBankNo(emp.getBankNo());
entity.setBankProvince(String.valueOf(emp.getBankProvince()));
entity.setBankCity(String.valueOf(emp.getBankCity()));
entity.setBankSubName(emp.getBankSubName());
} else {
if (Common.isNotNull(emp.getBankName())) {
entity.setBankName(emp.getBankName());
......@@ -585,6 +599,21 @@ public class SalaryAccountUtil implements Serializable {
} else {
entity.setBankNo(null);
}
if (Common.isNotNull(emp.getBankSubName())) {
entity.setBankSubName(emp.getBankSubName());
} else {
entity.setBankSubName(null);
}
if (Common.isNotNull(emp.getBankProvince())) {
entity.setBankProvince(String.valueOf(emp.getBankProvince()));
} else {
entity.setBankProvince(null);
}
if (Common.isNotNull(emp.getBankCity())) {
entity.setBankCity(String.valueOf(emp.getBankCity()));
} else {
entity.setBankCity(null);
}
}
if (!"3".equals(salaryType) && !"4".equals(salaryType)) {
if (emp.getTaxMonth().length() > CommonConstants.dingleDigitIntArray[6]) {
......
......@@ -56,6 +56,9 @@
<result property="unitNo" column="unit_no"/>
<result property="unitName" column="unit_name"/>
<result property="sumBabyMoney" column="sum_baby_money"/>
<result property="isNewEmployee" column="IS_NEW_EMPLOYEE"/>
<result property="createMonth" column="CREATE_MONTH"/>
<result property="empPhone" column="EMP_PHONE"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -89,7 +92,10 @@
a.unit_id,
a.unit_no,
a.unit_name,
a.sum_baby_money
a.sum_baby_money,
a.IS_NEW_EMPLOYEE,
a.CREATE_MONTH,
a.EMP_PHONE
</sql>
<sql id="tSalaryAccount2022_where">
<if test="tSalaryAccount2022 != null">
......@@ -211,7 +217,7 @@
insert into ${tableName} (
select
a.id,a.INVOICE_TITLE,a.EMP_ID,a.EMP_NAME,a.EMP_IDCARD,
a.SETTLE_DEPART_ID,a.SETTLE_DEPART_NO,a.SETTLE_DEPART_NAME,a.SETTLEMENT_MONTH,a.TAX_MONTH,
a.DEPT_ID SETTLE_DEPART_ID,a.DEPT_NO SETTLE_DEPART_NO,a.DEPT_NAME SETTLE_DEPART_NAME,a.SETTLEMENT_MONTH,a.TAX_MONTH,
ifnull(sum(relaySalary.SALARY_MONEY),0) REAL_SALARY,
ifnull(max(costReduction.SALARY_MONEY),0) cost_reduction,
ifnull(max(specialDeduMoney.SALARY_MONEY),0) SPECIAL_DEDU_MONEY,
......@@ -230,12 +236,14 @@
ifnull(sum(if(annualBonusTax.SALARY_MONEY > 0,annualBonus.SALARY_MONEY,0)),0) annual_bonus,
ifnull(sum(annualBonusTax.SALARY_MONEY),0) annual_bonus_tax,
ifnull(sum(exemptionPersionTax.SALARY_MONEY),0) exemption_persion_tax,
i.id unit_id,i.CUSTOMER_CODE unit_no,i.CUSTOMER_NAME unit_name,
ifnull(max(sumBabyMoney.SALARY_MONEY),0) sum_baby_money
s.unit_id,s.unit_no,s.unit_name,
ifnull(max(sumBabyMoney.SALARY_MONEY),0) sum_baby_money,
if(#{lastMonth} = DATE_FORMAT(e.CREATE_TIME,'%Y%m'),1,0) IS_NEW_EMPLOYEE,
DATE_FORMAT(e.CREATE_TIME,'%Y%m') CREATE_MONTH,
e.EMP_PHONE
from t_salary_account a
left join t_salary_standard s on s.id = a.SALARY_FORM_ID
left join hrms.t_settle_domain d on d.id = a.SETTLE_DEPART_ID
left join hrms.t_customer_info i on i.id = d.CUSTOMER_ID
left join t_salary_employee e on e.id = a.EMP_ID
left join t_salary_account_item relaySalary on relaySalary.SALARY_ACCOUNT_ID = a.id and relaySalary.JAVA_FIED_NAME='relaySalary'
left join t_salary_account_item exemptionPersionTax on exemptionPersionTax.SALARY_ACCOUNT_ID = a.id and exemptionPersionTax.JAVA_FIED_NAME='exemptionPersionTax'
left join t_salary_account_item costReduction on costReduction.SALARY_ACCOUNT_ID = a.id and costReduction.JAVA_FIED_NAME='costReduction'
......@@ -256,8 +264,7 @@
left join t_salary_account_item annualBonusTax on annualBonusTax.SALARY_ACCOUNT_ID = a.id and annualBonusTax.JAVA_FIED_NAME='annualBonusTax'
left join t_salary_account_item annualBonus on annualBonus.SALARY_ACCOUNT_ID = a.id and annualBonus.JAVA_FIED_NAME='annualBonus'
where
a.SETTLEMENT_MONTH = #{lastMonth} and a.DELETE_FLAG = 0 and a.SALARY_TYPE != '7' and a.SALARY_TYPE != '3'
and s.DELETE_FLAG = 0
a.SETTLEMENT_MONTH = #{lastMonth} and a.DELETE_FLAG = 0 and a.FORM_TYPE != '7' and a.FORM_TYPE != '3' and s.DELETE_FLAG = 0
GROUP BY a.EMP_IDCARD,a.INVOICE_TITLE,a.SETTLEMENT_MONTH)
</insert>
......
......@@ -55,6 +55,9 @@
<result property="unitName" column="UNIT_NAME"/>
<result property="specialDeduMoney" column="SPECIAL_DEDU_MONEY"/>
<result property="sumBabyMoney" column="sum_baby_money"/>
<result property="isNewEmployee" column="IS_NEW_EMPLOYEE"/>
<result property="createMonth" column="CREATE_MONTH"/>
<result property="empPhone" column="EMP_PHONE"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
......@@ -87,7 +90,10 @@
a.UNIT_NO,
a.UNIT_NAME,
a.SPECIAL_DEDU_MONEY,
a.sum_baby_money
a.sum_baby_money,
a.IS_NEW_EMPLOYEE,
a.CREATE_MONTH,
a.EMP_PHONE
</sql>
<sql id="tStatisticsCurrentReport_where">
<if test="tStatisticsCurrentReport != null">
......@@ -231,7 +237,10 @@
s.UNIT_NO,
s.UNIT_NAME,
s.SPECIAL_DEDU_MONEY,
s.sum_baby_money
s.sum_baby_money,
s.IS_NEW_EMPLOYEE,
s.CREATE_MONTH,
s.EMP_PHONE
from t_statistics_tax_salary s
left join
(
......
......@@ -55,6 +55,9 @@
<result property="unitName" column="UNIT_NAME"/>
<result property="specialDeduMoney" column="SPECIAL_DEDU_MONEY"/>
<result property="sumBabyMoney" column="sum_baby_money"/>
<result property="isNewEmployee" column="IS_NEW_EMPLOYEE"/>
<result property="createMonth" column="CREATE_MONTH"/>
<result property="empPhone" column="EMP_PHONE"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
......@@ -87,7 +90,10 @@
a.UNIT_NO,
a.UNIT_NAME,
a.SPECIAL_DEDU_MONEY,
a.sum_baby_money
a.sum_baby_money,
a.IS_NEW_EMPLOYEE,
a.CREATE_MONTH,
a.EMP_PHONE
</sql>
<sql id="tStatisticsTaxSalary_where">
<if test="tStatisticsTaxSalary != null">
......@@ -207,7 +213,10 @@
,a.REAL_SALARY,a.PERSONAL_PENSION_MONEY,a.PERSONAL_MEDICAL_MONEY,a.PERSONAL_UNEMPLOYMENT_MONEY
,a.PERSONAL_SOCIAL,a.PERSONAL_FUND,a.enterprise_annuity,a.taxable,ifnull(c.WITHHOLDING_RATE,0) tax_fee
,ifnull(c.QUICK_DEDUCATION,0) QUICK_DEDUCATION,a.salary_tax,a.unit_id,a.unit_no,a.unit_name,a.SPECIAL_DEDU_MONEY
,a.sum_baby_money
,a.sum_baby_money,
a.IS_NEW_EMPLOYEE,
a.CREATE_MONTH,
a.EMP_PHONE
from (
SELECT
concat(a.id,#{nowMonth}) id,
......@@ -244,7 +253,10 @@
sum(a.enterprise_annuity) enterprise_annuity,
a.unit_id,
a.unit_no,
a.unit_name
a.unit_name,
a.IS_NEW_EMPLOYEE,
a.CREATE_MONTH,
a.EMP_PHONE
FROM ${tableName} a
where a.SETTLEMENT_MONTH <![CDATA[ <= ]]> #{nowMonth} and a.SETTLEMENT_MONTH like concat(#{lastYear},'%')
GROUP BY a.EMP_IDCARD,a.INVOICE_TITLE ORDER BY a.settle_depart_id asc
......
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