package com.jianshui.platform.service.impl;

import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.utils.ValidateUtils;
import com.jianshui.common.utils.bean.BeanUtils;
import com.jianshui.platform.dto.TaxSwitchingDTO;
import com.jianshui.platform.service.TaxSwitchingService;
import com.jianshui.platform.vo.TaxSwitchingVO;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author: kane
 * @Description: 含税不含税业务层
 * @CreateTime: 2023-06-07  13:40
 * @Version: 1.0
 **/
@Service
public class TaxSwitchingServiceImpl implements TaxSwitchingService {
    /**
     * 功能描述: 含税不含税切换计算
     * @param dtos
     * @return : com.jianshui.common.core.domain.AjaxResult
     */
    @Override
    public AjaxResult taxswitching(List<TaxSwitchingDTO> dtos) {
       List<TaxSwitchingVO> taxSwitchingVOS = new ArrayList<>();
        for (TaxSwitchingDTO dto : dtos) {
            ValidateUtils.validate(dto);
            //实体类转换
            TaxSwitchingVO taxSwitchingVO = new TaxSwitchingVO();
            BeanUtils.copyProperties(dto, taxSwitchingVO);
            //判断是否为含税
            if ("0".equals(dto.getStatus())) {
                //含税改为非含税返回
                taxSwitchingVO.setStatus("1");
                //单个商品税额
                BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber());
                taxSwitchingVO.setUnitPrice(dto.getUnitPrice().subtract(taxMoney));
                taxSwitchingVO.setMoney(dto.getMoney().subtract(dto.getTaxMoney()));
                taxSwitchingVOS.add(taxSwitchingVO);
            } else {
                //非含税改为含税返回
                taxSwitchingVO.setStatus("0");
                //单个商品税额
                BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber());
                taxSwitchingVO.setUnitPrice(dto.getUnitPrice().add(taxMoney));
                taxSwitchingVO.setMoney(dto.getMoney().add(dto.getTaxMoney()));
                taxSwitchingVOS.add(taxSwitchingVO);
            }
        }
        return AjaxResult.success(taxSwitchingVOS);
    }
}
