Commit dd3bef47 authored by hongguangwu's avatar hongguangwu

继续优化薪资导入

parent e0283015
......@@ -1033,7 +1033,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
// 调用区域服务,渲染区域值
/*R<Map<String, Map<String, String>>> areaR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/area/inner/getAreaToName", null, Map.class, SecurityConstants.FROM_IN);*/
, "/area/inner/getAreaToName", null, Map.class, SecurityConstants.FROM_IN)*/
TEmployeeInfo checkPhone;
List<TEmployeeInfo> phoneEmpList;
......@@ -1190,7 +1190,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getIdCity())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdCity() + CommonConstants.DOWN_LINE_STRING + excel.getIdProvince().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdCity().trim() + CommonConstants.DOWN_LINE_STRING + excel.getIdProvince().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1198,7 +1198,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getIdTown())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdTown() + CommonConstants.DOWN_LINE_STRING + excel.getIdCity().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdTown().trim() + CommonConstants.DOWN_LINE_STRING + excel.getIdCity().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1215,7 +1215,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getFileCity())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileCity() + CommonConstants.DOWN_LINE_STRING + excel.getFileProvince().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileCity().trim() + CommonConstants.DOWN_LINE_STRING + excel.getFileProvince().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_FILE_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1223,7 +1223,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getFileTown())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileTown() + CommonConstants.DOWN_LINE_STRING + excel.getFileCity().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileTown().trim() + CommonConstants.DOWN_LINE_STRING + excel.getFileCity().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_FILE_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1701,7 +1701,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getIdCity())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdCity() + CommonConstants.DOWN_LINE_STRING + excel.getIdProvince().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdCity().trim() + CommonConstants.DOWN_LINE_STRING + excel.getIdProvince().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1709,7 +1709,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getIdTown())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdTown() + CommonConstants.DOWN_LINE_STRING + excel.getIdCity().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getIdTown().trim() + CommonConstants.DOWN_LINE_STRING + excel.getIdCity().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1726,7 +1726,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getFileCity())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileCity() + CommonConstants.DOWN_LINE_STRING + excel.getFileProvince().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileCity().trim() + CommonConstants.DOWN_LINE_STRING + excel.getFileProvince().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_FILE_AREA_ERROR, excel.getEmpIdcard()));
} else {
......@@ -1734,7 +1734,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
}
}
if (Common.isNotNull(excel.getFileTown())) {
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileTown() + CommonConstants.DOWN_LINE_STRING + excel.getFileCity().trim());
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + excel.getFileTown().trim() + CommonConstants.DOWN_LINE_STRING + excel.getFileCity().trim());
if (Common.isEmpty(areaStr)) {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.ARCHIVES_IMPORT_EMP_FILE_AREA_ERROR, excel.getEmpIdcard()));
} else {
......
......@@ -23,10 +23,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
......
package com.yifu.cloud.plus.v1.yifu.salary.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 org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -19,13 +22,6 @@ import java.util.List;
public class TSalaryAccountVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 计税月份
*/
@Length(max = 32, message = "计税月份不能超过6个字符")
@ExcelAttribute(name = "计税月份", maxLength = 6)
private String taxMonth;
/**
* 封面抬头
*/
......@@ -41,12 +37,13 @@ public class TSalaryAccountVo implements Serializable {
@ExcelAttribute(name = "工资表ID", maxLength = 32)
private String salaryFormId;
/**
* 工资月份000
* 薪酬月份
*/
@Length(max = 6, message = "工资月份不能超过6个字符")
@NotBlank(message = "工资月份不能为空")
@ExcelAttribute(name = "工资月份", isNotEmpty = true, errorInfo = "工资月份不能为空", maxLength = 6)
private String salaryDate;
@ExcelAttribute(name = "薪酬月份", isNotEmpty = true, errorInfo = "薪酬月份不能为空", maxLength = 6)
@NotBlank(message = "薪酬月份不能为空")
@Length(max = 6, message = "薪酬月份不能超过6个字符")
@ExcelProperty("薪酬月份")
private String salaryMonth;
/**
* 员工 ID
*/
......@@ -61,64 +58,54 @@ public class TSalaryAccountVo implements Serializable {
@NotBlank(message = "员工姓名不能为空")
@ExcelAttribute(name = "员工姓名", maxLength = 50)
private String empName;
/**
* 员工编码
*/
@Length(max = 32, message = "员工编码不能超过32个字符")
@NotBlank(message = "员工编码不能为空")
@ExcelAttribute(name = "员工编码", maxLength = 32)
private String empNo;
/**
* 结算部门id
*/
@Length(max = 32, message = "结算部门id不能超过32个字符")
@NotBlank(message = "结算部门id不能为空")
@ExcelAttribute(name = "结算部门id", isNotEmpty = true, errorInfo = "结算部门id不能为空", maxLength = 32)
private String settleDepartId;
/**
* 结算部门no
* 银行卡号000
*/
@Length(max = 50, message = "结算部门No不能超过50个字符")
@NotBlank(message = "结算部门No不能为空")
@ExcelAttribute(name = "结算部门No", isNotEmpty = true, errorInfo = "结算部门No不能为空", maxLength = 50)
private String settleDepartNo;
@Length(max = 30, message = "银行卡号不能超过30个字符")
@ExcelAttribute(name = "银行卡号", maxLength = 30)
private String bankNo;
/**
* 结算部门name
* 开户行总行
*/
@Length(max = 50, message = "结算部门Name不能超过50个字符")
@NotBlank(message = "结算部门No不能为空")
@ExcelAttribute(name = "结算部门No", isNotEmpty = true, errorInfo = "结算部门Name不能为空", maxLength = 50)
private String settleDepartName;
@ExcelAttribute(name = "开户行总行", maxLength = 50)
@Length(max = 50, message = "开户行总行不能超过50个字符")
@ExcelProperty("开户行总行")
private String bankName;
/**
* 员工身份证号
* 项目id
*/
@Length(max = 18, message = "员工身份证号不能超过18个字符")
@NotBlank(message = "员工身份证号不能为空")
@ExcelAttribute(name = "员工身份证号", maxLength = 18)
private String empIdcard;
@ExcelAttribute(name = "项目id", isNotEmpty = true, errorInfo = "项目id不能为空", maxLength = 32)
@NotBlank(message = "项目id不能为空")
@Length(max = 32, message = "项目id不能超过32个字符")
@ExcelProperty("项目id")
private String deptId;
/**
* 银行卡号000
* 项目no
*/
@Length(max = 30, message = "银行卡号不能超过30个字符")
@ExcelAttribute(name = "银行卡号", maxLength = 30)
private String bankNo;
@ExcelAttribute(name = "项目编码", isNotEmpty = true, errorInfo = "项目no不能为空", maxLength = 50)
@NotBlank(message = "项目编码不能为空")
@Length(max = 50, message = "项目编码不能超过50个字符")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 开户行000
* 项目name
*/
@Length(max = 50, message = "开户行不能超过50个字符")
@ExcelAttribute(name = "开户行", maxLength = 50)
private String bankName;
@ExcelAttribute(name = "项目名称", isNotEmpty = true, errorInfo = "项目name不能为空", maxLength = 50)
@NotBlank(message = "项目名称不能为空")
@Length(max = 50, message = "项目名称不能超过50个字符")
@ExcelProperty("项目名称")
private String deptName;
/**
* 发工资次数-
* 弃用
* 身份证号
*/
//@NotBlank(message = "发工资次数不能为空")
@ExcelAttribute(name = "发工资次数")
private Integer salaryCount;
@Length(max = 18, message = "身份证号不能超过18个字符")
@NotBlank(message = "身份证号不能为空")
@ExcelAttribute(name = "身份证号", maxLength = 18)
private String empIdcard;
/**
* 工资发放方式(0现金/1银行)/2线下000
*/
......@@ -150,19 +137,13 @@ public class TSalaryAccountVo implements Serializable {
@ExcelAttribute(name = "公积金扣缴月份", maxLength = 6)
private String deduProvidentMonth;
/**
* 财务类型(数据字典)
*/
@Length(max = 1, message = "财务类型不能超过1个字符")
@NotBlank(message = "财务类型不能为空")
@ExcelAttribute(name = "财务类型", isNotEmpty = true, errorInfo = "财务类型(数据字典)不能为空", maxLength = 1)
private String salaryType;
/**
* 是否薪资扣税:0否 1是000
* 报表类型0:薪资;1:绩效;2:其他;3:劳务费;4:稿酬
*/
@Length(max = 1, message = "是否薪资扣税不能超过1个字符")
@NotBlank(message = "是否薪资扣税:0否 1是不能为空")
@ExcelAttribute(name = "是否薪资扣税:0否 1是", isNotEmpty = true, errorInfo = "是否薪资扣税:0否 1是不能为空")
private String salaryTaxFlag;
@ExcelAttribute(name = "报表类型", readConverterExp = "0=薪资,1=绩效,2=其他,3=劳务费,4=稿酬")
@NotBlank(message = "报表类型不能为空")
@Length(max = 32, message = "报表类型不能超过32个字符")
@ExcelProperty("报表类型")
private String formType;
/**
* 结算月
......@@ -205,6 +186,13 @@ public class TSalaryAccountVo implements Serializable {
@ExcelAttribute(name = "年终奖扣税方案0:合并;1:单独", isNotEmpty = true, errorInfo = "年终奖扣税方案0:合并;1:单独不能为空", maxLength = 1)
private String annualBonusType;
/**
* 计税月份
*/
@Length(max = 32, message = "计税月份不能超过6个字符")
@ExcelAttribute(name = "计税月份", maxLength = 6)
private String taxMonth;
//000
@ExcelAttribute(name = "是否扣除社保 0:否,1:是", maxLength = 1)
private String isDeductSocial;
......@@ -235,7 +223,7 @@ public class TSalaryAccountVo implements Serializable {
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 11)
@ExcelAttribute(name = "手机号", maxLength = 11)
private String empPhone;
/**
......@@ -245,6 +233,16 @@ public class TSalaryAccountVo implements Serializable {
@ExcelAttribute(name = "是否自有员工", maxLength = 1)
private Integer ownFlag;
@Schema(description = "劳务费、稿酬是否含有发薪0:否;1:是")
@ExcelAttribute(name = "劳务费、稿酬是否含有发薪")
@ExcelProperty("劳务费、稿酬是否含有发薪")
private Integer haveSalaryFlag;
@Schema(description = "是否含有特殊金额0:否;1:是")
@ExcelAttribute(name = "是否含有特殊金额")
@ExcelProperty("是否含有特殊金额")
private Integer haveSpecialFlag;
/**
* 本月是否重复金额0:否;1:是重复导入的
*/
......@@ -252,5 +250,63 @@ public class TSalaryAccountVo implements Serializable {
@ExcelAttribute(name = "本月是否重复金额", maxLength = 1)
private Integer isRepeat;
/**
* 开户行支行
*/
@ExcelAttribute(name = "开户行支行", maxLength = 50)
@Length(max = 50, message = "开户行支行不能超过50个字符")
@ExcelProperty("开户行支行")
private String bankSubName;
/**
* 开户行省
*/
@ExcelAttribute(name = "开户行省", isArea = true)
@ExcelProperty("开户行省")
private String bankProvince;
/**
* 开户行市
*/
@ExcelAttribute(name = "开户行市", isArea = true, parentField = "bankProvince")
@ExcelProperty("开户行市")
private String bankCity;
/**
* 是否个人承担部分税费:0否1是
*/
@ExcelAttribute(name = "是否个人承担部分税费:0否1是", maxLength = 1)
@Length(max = 1, message = "是否个人承担部分税费:0否1是不能超过1个字符")
@ExcelProperty("是否个人承担部分税费:0否1是")
private String isPersonTax;
/**
* 应发薪酬(劳务费、稿酬)
*/
@ExcelAttribute(name = "应发薪酬")
@ExcelProperty("应发薪酬")
private BigDecimal relaySalary;
/**
* 实发(个人实收)
*/
@ExcelAttribute(name = "实发(个人实收)")
@ExcelProperty("实发(个人实收)")
private BigDecimal actualSalary;
/**
* 个税金额(个人承担)
*/
@ExcelAttribute(name = "个税金额")
@ExcelProperty("个税金额")
private BigDecimal salaryTax;
/**
* 公司应发
*/
@ExcelAttribute(name = "公司应发")
@ExcelProperty("公司应发")
private BigDecimal relaySalaryUnit;
/**
* 个税-单位承担
*/
@ExcelAttribute(name = "个税-单位承担")
@ExcelProperty("个税-单位承担")
private BigDecimal salaryTaxUnit;
private List<TSalaryAccountItemVo> saiList = new ArrayList<>(); //工资组成部分明细
}
......@@ -135,29 +135,29 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
empSearch.setUnitId(dept.getCustomerId());
List<TSalaryEmployee> empList = employeeService.list(Wrappers.<TSalaryEmployee>query().lambda()
.eq(TSalaryEmployee::getUnitId, dept.getCustomerId()));
if (empList == null) {
return R.failed("该结算主体下无档案人员,请去档案添加!");
}
Map<String, TSalaryEmployee> empIdCardMap = new HashMap<>();
Map<String, TSalaryEmployee> empNameMap = new HashMap<>();
boolean isDuplicateName = true;
boolean isDuplicateName = false;
if (empList != null) {
TSalaryEmployee es;//筛选人员,添加判断:非在职,或开户行为空,或 结算主体等于选择的结算主体且在职,都可以存入Map优先备用
for (TSalaryEmployee e : empList) {
es = empIdCardMap.get(e.getEmpIdcard());
if (es == null || CommonConstants.ZERO_INT != es.getFileStatus() || Common.isEmpty(es.getBankName())
|| (e.getDeptId().equals(settleDepart) && CommonConstants.ZERO_INT == e.getFileStatus()
&& Common.isNotNull(e.getBankName()))) {
empIdCardMap.put(e.getEmpIdcard(), e);
empNameMap.put(e.getEmpName().replace(" ", ""), e);
}
}
if (empNameMap.size() == empIdCardMap.size()) {
isDuplicateName = true;
}
}
// 自有员工结算主体id,新员工使用
Map<String, Integer> ownDeptMap = tOwnDeptService.getOwnDeptMap();
// 自有员工所在结算主体Map
Map<String, Integer> ownEmployeeMap = tOwnDeptService.getOwnEmpMap();
TSalaryEmployee es;//筛选人员,添加判断:非在职,或开户行为空,或 结算主体等于选择的结算主体且在职,都可以存入Map优先备用
for (TSalaryEmployee e : empList) {
es = empIdCardMap.get(e.getEmpIdcard());
if (es == null || CommonConstants.ZERO_INT != es.getFileStatus() || Common.isEmpty(es.getBankName())
|| (e.getDeptId().equals(settleDepart) && CommonConstants.ZERO_INT == e.getFileStatus()
&& Common.isNotNull(e.getBankName()))) {
empIdCardMap.put(e.getEmpIdcard(), e);
empNameMap.put(e.getEmpName().replace(" ", ""), e);
}
}
if (empNameMap.size() != empIdCardMap.size()) {
isDuplicateName = false;
}
// 2.6.6:校验导入数据重复的Map格式:#身份证号_工资月份_报表类型_应发金额
Map<String, Integer> checkMap = tSalaryAccountService.getAccountCheckMap(dept.getId(), DateUtil.addMonth(configSalary.getSettleMonth()));
util1.getJsonStringToList(user, jsonString,
......@@ -254,9 +254,9 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
if (dept.getTown() != null) {
s.setTown(dept.getTown());
}
s.setFormType(sav.getSalaryType());
s.setFormType(sav.getFormType());
s.setMoneyFrom(CommonConstants.ZERO_INT);
s.setSalaryMonth(sav.getSalaryDate());
s.setSalaryMonth(sav.getSalaryMonth());
s.setSettlementMonth(sav.getSettlementMonth());
//s.setSettlementAmount()
s.setStatus(SalaryConstants.AUDIT_STATUS[0]);
......@@ -278,7 +278,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
List<TSalaryAccountItem> saiList = null; //报账明细List
TSalaryAccountItem sai = null; //报账明细
R<TSettleDomainSelectVo> sdr = HttpDaprUtil.invokeMethodPost(archivesProperties.getAppUrl(), archivesProperties.getAppId()
, "/tsettledomain/inner/getSettleDomainVoById", salaryAccountVo.getSettleDepartId(), TSettleDomainSelectVo.class, SecurityConstants.FROM_IN);
, "/tsettledomain/inner/getSettleDomainVoById", salaryAccountVo.getDeptId(), TSettleDomainSelectVo.class, SecurityConstants.FROM_IN);
//结算主体
TSettleDomainSelectVo dept = null;
if (sdr != null && sdr.getData() != null) {
......@@ -513,7 +513,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
// 是否劳务费,true:是
boolean isLabor = false;
if ("3".equals(salaryAccountVo.getSalaryType())) {
if ("3".equals(salaryAccountVo.getFormType())) {
isLabor = true;
}
for (int i = CommonConstants.ZERO_INT; i < size; i++) {
......
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