Commit 9277d976 by zhangxingmin

薪资单

parent af20aa80
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO;
public interface ApiSalaryRemittanceService {
Result batchSave();
Result batchSave(String salaryBizId, ApiSalaryRemittanceFzDTO fzDTO);
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiSalaryRemittanceService;
import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO;
import com.yd.csf.service.model.SalaryRemittance;
import com.yd.csf.service.service.ISalaryRemittanceService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiSalaryRemittanceServiceImpl implements ApiSalaryRemittanceService {
@Autowired
private ISalaryRemittanceService iSalaryRemittanceService;
/**
* 批量保存薪资汇款明细
* @param salaryBizId
* @param fzDTO
* @return
*/
@Override
public Result batchSave(String salaryBizId, ApiSalaryRemittanceFzDTO fzDTO) {
//先删,后批量新增
iSalaryRemittanceService.delBySalaryBizId(salaryBizId);
//批量新增
if (CollectionUtils.isNotEmpty(fzDTO.getSalaryRemittanceDTOList())) {
List<SalaryRemittance> saveList = fzDTO.getSalaryRemittanceDTOList()
.stream().map(dto -> {
SalaryRemittance salaryRemittance = new SalaryRemittance();
BeanUtils.copyProperties(dto,salaryRemittance);
salaryRemittance.setSalaryBizId(salaryBizId);
salaryRemittance.setSalaryRemittanceBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_SALARY_REMITTANCE.getCode()));
return salaryRemittance;
}).collect(Collectors.toList());
iSalaryRemittanceService.saveOrUpdateBatch(saveList);
}
return Result.success();
}
}
......@@ -8,6 +8,7 @@ import com.yd.common.utils.CodeGenerator;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiSalaryRemittanceService;
import com.yd.csf.api.service.ApiSalaryService;
import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO;
import com.yd.csf.feign.request.salary.ApiSalaryAddRequest;
import com.yd.csf.feign.request.salary.ApiSalaryEditRequest;
import com.yd.csf.feign.request.salary.ApiSalaryPageRequest;
......@@ -15,10 +16,13 @@ import com.yd.csf.feign.response.salary.ApiSalaryPageResponse;
import com.yd.csf.service.model.Salary;
import com.yd.csf.service.service.ISalaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Slf4j
@Service
public class ApiSalaryServiceImpl implements ApiSalaryService {
......@@ -46,6 +50,12 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
*/
@Override
public Result add(ApiSalaryAddRequest request) {
ApiSalaryRemittanceFzDTO fzDTO = request.getApiSalaryRemittanceFzDTO();
if (fzDTO == null) {
fzDTO = new ApiSalaryRemittanceFzDTO();
}
//校验金额
checkAmount(request.getPaidAmount(),fzDTO.getTotalAmount());
//校验同一转介人同一薪资年月只能有一条薪资单记录
checkUniqueByBrokerMonth(request.getBrokerBizId(),request.getMonth(),"",false);
Salary salary = new Salary();
......@@ -57,7 +67,7 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
iSalaryService.saveOrUpdate(salary);
//保存薪资汇款明细
apiSalaryRemittanceService.batchSave(salary.getSalaryBizId(),fzDTO);
return Result.success();
}
......@@ -68,6 +78,12 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
*/
@Override
public Result edit(ApiSalaryEditRequest request) {
ApiSalaryRemittanceFzDTO fzDTO = request.getApiSalaryRemittanceFzDTO();
if (fzDTO == null) {
fzDTO = new ApiSalaryRemittanceFzDTO();
}
//校验金额
checkAmount(request.getPaidAmount(),fzDTO.getTotalAmount());
//校验薪资单信息是否存在
Salary salary = checkIsExist(request.getSalaryBizId());
//校验同一转介人同一薪资年月只能有一条薪资单记录
......@@ -77,7 +93,8 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
iSalaryService.saveOrUpdate(salary);
//保存薪资汇款明细
return null;
apiSalaryRemittanceService.batchSave(salary.getSalaryBizId(),fzDTO);
return Result.success();
}
/**
......@@ -96,6 +113,21 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
}
/**
* 校验薪资单信息金额字段信息
* @param paidAmount
* @param totalAmount
* @return
*/
public void checkAmount(BigDecimal paidAmount,BigDecimal totalAmount) {
paidAmount = ObjectUtils.defaultIfNull(paidAmount, BigDecimal.ZERO);
totalAmount = ObjectUtils.defaultIfNull(totalAmount, BigDecimal.ZERO);
if (paidAmount.compareTo(totalAmount) != 0) {
//汇款明细合计总金额和实发总金额必须相等
throw new BusinessException("汇款明细合计总金额和实发总金额必须相等");
}
}
/**
* 校验薪资单信息是否存在
* @param salaryBizId
*/
......
......@@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISalaryRemittanceService extends IService<SalaryRemittance> {
Boolean delBySalaryBizId(String salaryBizId);
}
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.csf.service.model.SalaryRemittance;
import com.yd.csf.service.dao.SalaryRemittanceMapper;
import com.yd.csf.service.service.ISalaryRemittanceService;
......@@ -17,4 +18,9 @@ import org.springframework.stereotype.Service;
@Service
public class SalaryRemittanceServiceImpl extends ServiceImpl<SalaryRemittanceMapper, SalaryRemittance> implements ISalaryRemittanceService {
@Override
public Boolean delBySalaryBizId(String salaryBizId) {
return this.remove(new LambdaQueryWrapper<SalaryRemittance>()
.eq(SalaryRemittance::getSalaryBizId,salaryBizId));
}
}
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