延税养老保险附表
This commit is contained in:
parent
fe8910f2c5
commit
e6f8b31f69
|
|
@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
|
|||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 免税收入
|
||||
* 税延养老保险
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
|
|
|
|||
|
|
@ -12,12 +12,10 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
|||
import com.engine.salary.encrypt.EncryptUtil;
|
||||
import com.engine.salary.entity.datacollection.AddUpDeduction;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.datacollection.dto.DerateDeductionListDTO;
|
||||
import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO;
|
||||
import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO;
|
||||
import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO;
|
||||
import com.engine.salary.entity.datacollection.dto.*;
|
||||
import com.engine.salary.entity.datacollection.param.*;
|
||||
import com.engine.salary.entity.datacollection.po.DerateDeductionPO;
|
||||
import com.engine.salary.entity.datacollection.po.EndowmentInsurancePO;
|
||||
import com.engine.salary.entity.datacollection.po.FreeIncomePO;
|
||||
import com.engine.salary.entity.datacollection.po.OtherDeductionPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
|
||||
|
|
@ -752,7 +750,155 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
|
||||
try {
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId));
|
||||
|
||||
int successCount = 0;
|
||||
int errorCount = 0;
|
||||
|
||||
// 错误excel内容
|
||||
List<Map> errorData = new ArrayList<>();
|
||||
|
||||
List<EndowmentInsuranceListDTO> derateDeductionList = ExcelParseHelper.parse2Map(fileInputStream, EndowmentInsuranceListDTO.class, 2, 1, 11, "OtherDeductionTemplate.xlsx");
|
||||
for (int i = 0; i < derateDeductionList.size(); i++) {
|
||||
EndowmentInsuranceListDTO dto = derateDeductionList.get(i);
|
||||
|
||||
Date now = new Date();
|
||||
//待插入数据库对象
|
||||
OtherDeductionPO mainPo = OtherDeductionPO.builder()
|
||||
.declareMonth(declareMonth)
|
||||
.freeIncomeList(new ArrayList<>())
|
||||
.derateDeductionList(new ArrayList<>())
|
||||
.endowmentInsuranceList(new ArrayList<>())
|
||||
.grantDonationList(new ArrayList<>())
|
||||
.healthInsuranceList(new ArrayList<>())
|
||||
.otherDerateDeductionList(new ArrayList<>())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator((long) user.getUID())
|
||||
.tenantKey(DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
|
||||
EndowmentInsurancePO po = EndowmentInsurancePO.builder()
|
||||
.taxYearMonth(declareMonth)
|
||||
.fileStatus(1)
|
||||
.creator((long) user.getUID())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.tenantKey(DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
|
||||
//异常点数量
|
||||
int errorSum = 0;
|
||||
|
||||
//行号
|
||||
String rowIndex = String.format("第%s行", i + 2);
|
||||
|
||||
//相同的姓名
|
||||
String userName = dto.getUsername();
|
||||
String deparmentName = dto.getDepartmentName();
|
||||
String mobile = dto.getMobile();
|
||||
String workcode = dto.getJobNum();
|
||||
String idNo = dto.getIdNo();
|
||||
List<Long> employeeSameIds = new ArrayList<>();
|
||||
|
||||
//筛选导入人员信息可以在人力资源池中匹配到的人员信息
|
||||
List<DataCollectionEmployee> emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null);
|
||||
//含在职和离职,选在职数据
|
||||
if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) {
|
||||
employeeSameIds = emps.stream()
|
||||
.filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus()))
|
||||
.map(DataCollectionEmployee::getEmployeeId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) {
|
||||
employeeSameIds = emps.stream()
|
||||
.map(DataCollectionEmployee::getEmployeeId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
//当人员信息导入筛选的全局配置为"0"时,姓名才是必填项
|
||||
if (StringUtils.isBlank(userName) && "0".equals(confValue)) {
|
||||
//姓名 不能为空
|
||||
//错误消息对象
|
||||
Map<String, String> errorMessageMap = Maps.newHashMap();
|
||||
errorMessageMap.put("message", rowIndex + "姓名不能为空");
|
||||
errorData.add(errorMessageMap);
|
||||
errorSum += 1;
|
||||
} else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) {
|
||||
Map<String, String> errorMessageMap = Maps.newHashMap();
|
||||
errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工");
|
||||
errorData.add(errorMessageMap);
|
||||
errorSum += 1;
|
||||
} else {
|
||||
Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null;
|
||||
if (employeeId != null && employeeId > 0) {
|
||||
mainPo.setEmployeeId(employeeId);
|
||||
po.setEmployeeId(employeeId);
|
||||
po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue());
|
||||
} else {
|
||||
//姓名错误,系统内不存在该姓名
|
||||
Map<String, String> errorMessageMap = Maps.newHashMap();
|
||||
errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名");
|
||||
errorData.add(errorMessageMap);
|
||||
errorSum += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String taxAgentName = dto.getTaxAgentName();
|
||||
if (StringUtils.isBlank(taxAgentName)) {
|
||||
//个税扣缴义务人不能为空
|
||||
Map<String, String> errorMessageMap = Maps.newHashMap();
|
||||
errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空");
|
||||
errorData.add(errorMessageMap);
|
||||
errorSum += 1;
|
||||
} else {
|
||||
Optional<TaxAgentManageRangeEmployeeDTO> optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst();
|
||||
if (optionalTemp.isPresent()) {
|
||||
mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId());
|
||||
po.setTaxAgentId(optionalTemp.get().getTaxAgentId());
|
||||
} else {
|
||||
//个税扣缴义务人不存在
|
||||
Map<String, String> errorMessageMap = Maps.newHashMap();
|
||||
errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内");
|
||||
errorData.add(errorMessageMap);
|
||||
errorSum += 1;
|
||||
}
|
||||
}
|
||||
|
||||
po.setAccountNumber(dto.getAccountNumber());
|
||||
po.setCheckCode(dto.getCheckCode());
|
||||
po.setYearPremium(dto.getYearPremium());
|
||||
po.setMonthPremium(dto.getMonthPremium());
|
||||
po.setCurrentDeduction(dto.getCurrentDeduction());
|
||||
|
||||
if (errorSum == 0) {
|
||||
successCount += 1;
|
||||
String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId();
|
||||
Map<String, OtherDeductionPO> deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId());
|
||||
if (deductionPOMap.containsKey(key)) {
|
||||
deductionPOMap.get(key).getEndowmentInsuranceList().add(po);
|
||||
} else {
|
||||
mainPo.getEndowmentInsuranceList().add(po);
|
||||
eligibleData.add(mainPo);
|
||||
}
|
||||
|
||||
} else {
|
||||
errorCount += 1;
|
||||
// 添加错误数据
|
||||
}
|
||||
}
|
||||
|
||||
HashMap<Object, Object> dataMap = new HashMap<>();
|
||||
dataMap.put("successCount", successCount);
|
||||
dataMap.put("errorCount", errorCount);
|
||||
dataMap.put("errorData", errorData);
|
||||
apidatas.put("derateDeduction", dataMap);
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(fileInputStream);
|
||||
}
|
||||
|
||||
|
||||
return apidatas;
|
||||
|
|
|
|||
Loading…
Reference in New Issue