税额金额计算和价格切换接口开发

beta-enc
kane 2 years ago
parent be2309ff7c
commit 413c777a55
  1. 33
      jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxCalculateController.java
  2. 8
      jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxSwitchingController.java
  3. 34
      jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxCalculateDTO.java
  4. 17
      jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxSwitchingDTO.java
  5. 19
      jianshui-platform/src/main/java/com/jianshui/platform/service/TaxCalculateService.java
  6. 4
      jianshui-platform/src/main/java/com/jianshui/platform/service/TaxSwitchingService.java
  7. 46
      jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxCalculateServiceImpl.java
  8. 56
      jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxSwitchingServiceImpl.java
  9. 31
      jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxCalculateVO.java
  10. 11
      jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxSwitchingVO.java

@ -0,0 +1,33 @@
package com.jianshui.web.controller.platform;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxCalculateDTO;
import com.jianshui.platform.service.TaxCalculateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: kane
* @Description: 税额税额计算控制类
* @CreateTime: 2023-06-07 17:41
* @Version: 1.0
**/
@Api(tags = "税额税额计算",value = "税额税额计算")
@RestController
@RequestMapping("/platForm/taxCalculate")
public class TaxCalculateController {
@Autowired
private TaxCalculateService taxCalculateService;
@ApiOperation("税额税额计算")
@PostMapping("/calculate")
public AjaxResult taxCalculate(@RequestBody TaxCalculateDTO taxCalculateDTO){
return taxCalculateService.taxCalculate(taxCalculateDTO);
}
}

@ -1,6 +1,7 @@
package com.jianshui.web.controller.platform;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxCalculateDTO;
import com.jianshui.platform.dto.TaxSwitchingDTO;
import com.jianshui.platform.service.TaxSwitchingService;
import io.swagger.annotations.Api;
@ -11,6 +12,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author: kane
@ -28,7 +31,8 @@ public class TaxSwitchingController {
@ApiOperation("含税不含税切换")
@PostMapping("/switching")
public AjaxResult taxSwitching(@RequestBody TaxSwitchingDTO dto){
return taxSwitchingService.taxswitching(dto);
public AjaxResult taxSwitching(@RequestBody List<TaxSwitchingDTO> dtos){
return taxSwitchingService.taxswitching(dtos);
}
}

@ -0,0 +1,34 @@
package com.jianshui.platform.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author: kane
* @Description: 金额税额计算类
* @CreateTime: 2023-06-07 17:36
* @Version: 1.0
**/
@ApiModel("金额税额计算")
@Data
public class TaxCalculateDTO {
@NotNull
@ApiModelProperty("发票id")
private Integer id;
@NotNull
@ApiModelProperty("数量")
private BigDecimal number;
@NotNull
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@NotNull
@ApiModelProperty("税率")
private BigDecimal taxRate;
}

@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
@ -15,22 +17,25 @@ import java.math.BigDecimal;
@ApiModel("含税不含税转换")
@Data
public class TaxSwitchingDTO {
@ApiModelProperty("货物或应税劳务、服务名称")
private String taxName;
@ApiModelProperty("规格型号")
private String specification;
@ApiModelProperty("单位")
private String unit;
@NotNull
@ApiModelProperty("发票id")
private Integer id;
@NotNull
@ApiModelProperty("数量")
private BigDecimal number;
@NotNull
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@NotNull
@ApiModelProperty("金额")
private BigDecimal money;
@NotNull
@ApiModelProperty("税率")
private BigDecimal taxRate;
@NotNull
@ApiModelProperty("税额")
private BigDecimal taxMoney;
@NotEmpty
@ApiModelProperty("状态0-含税,1-不含税")
private String status;

@ -0,0 +1,19 @@
package com.jianshui.platform.service;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxCalculateDTO;
/**
* @Author: kane
* @Description: 金额税额计算业务类
* @CreateTime: 2023-06-07 17:42
* @Version: 1.0
**/
public interface TaxCalculateService {
/**
* 功能描述: 金额税额计算
* @param taxCalculateDTO
* @return : com.jianshui.common.core.domain.AjaxResult
*/
AjaxResult taxCalculate(TaxCalculateDTO taxCalculateDTO);
}

@ -3,6 +3,8 @@ package com.jianshui.platform.service;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxSwitchingDTO;
import java.util.List;
/**
* @Author: kane
* @Description: 含税不含税切换业务层
@ -16,5 +18,5 @@ public interface TaxSwitchingService {
* @param dto
* @return : com.jianshui.common.core.domain.AjaxResult
*/
AjaxResult taxswitching(TaxSwitchingDTO dto);
AjaxResult taxswitching(List<TaxSwitchingDTO> dto);
}

@ -0,0 +1,46 @@
package com.jianshui.platform.service.impl;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.utils.ValidateUtils;
import com.jianshui.platform.dto.TaxCalculateDTO;
import com.jianshui.platform.service.TaxCalculateService;
import com.jianshui.platform.vo.TaxCalculateVO;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* @Author: kane
* @Description: 金额税额计算业务层
* @CreateTime: 2023-06-07 17:43
* @Version: 1.0
**/
@Service
public class TaxCalculateServiceImpl implements TaxCalculateService {
/**
* 功能描述: 金额税额计算
* @param taxCalculateDTO
* @return : com.jianshui.common.core.domain.AjaxResult
*/
@Override
public AjaxResult taxCalculate(TaxCalculateDTO taxCalculateDTO) {
//校验
ValidateUtils.validate(taxCalculateDTO);
//含税金额
BigDecimal money = taxCalculateDTO.getNumber().multiply(taxCalculateDTO.getUnitPrice());
BigDecimal moneyResult = money.setScale(2);
//税率计算
BigDecimal taxRate = taxCalculateDTO.getTaxRate().divide(new BigDecimal("100"));
BigDecimal taxRateResult = taxRate.add(new BigDecimal("1"));
//税额
BigDecimal taxMoney = money.multiply(taxRate).divide(taxRateResult,BigDecimal.ROUND_HALF_UP);
BigDecimal taxMoneyResult = taxMoney.setScale(2,BigDecimal.ROUND_HALF_UP);
//封装实体类
TaxCalculateVO taxCalculateVO = new TaxCalculateVO();
taxCalculateVO.setId(taxCalculateDTO.getId());
taxCalculateVO.setMoney(moneyResult);
taxCalculateVO.setTaxMoney(taxMoneyResult);
return AjaxResult.success(taxCalculateVO);
}
}

@ -1,6 +1,7 @@
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;
@ -8,6 +9,8 @@ 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
@ -19,35 +22,36 @@ import java.math.BigDecimal;
public class TaxSwitchingServiceImpl implements TaxSwitchingService {
/**
* 功能描述: 含税不含税切换计算
* @param dto
* @param dtos
* @return : com.jianshui.common.core.domain.AjaxResult
*/
@Override
public AjaxResult taxswitching(TaxSwitchingDTO dto) {
//判空
if (dto == null){
return AjaxResult.error("未传入发票相关信息,请检查!");
}
//实体类转换
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()));
return AjaxResult.success(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()));
return AjaxResult.success(taxSwitchingVO);
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);
}
}

@ -0,0 +1,31 @@
package com.jianshui.platform.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author: kane
* @Description: 税额金额返回类
* @CreateTime: 2023-06-07 17:46
* @Version: 1.0
**/
@ApiModel("税额金额")
@Data
public class TaxCalculateVO {
@NotNull
@ApiModelProperty("发票id")
private Integer id;
@NotNull
@ApiModelProperty("金额")
private BigDecimal money;
@NotNull
@ApiModelProperty("税额")
private BigDecimal taxMoney;
}

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
/**
@ -15,12 +16,8 @@ import java.math.BigDecimal;
@ApiModel("含税不含税转换")
@Data
public class TaxSwitchingVO {
@ApiModelProperty("货物或应税劳务、服务名称")
private String taxName;
@ApiModelProperty("规格型号")
private String specification;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("发票id")
private Integer id;
@ApiModelProperty("数量")
private BigDecimal number;
@ApiModelProperty("单价")
@ -31,7 +28,7 @@ public class TaxSwitchingVO {
private BigDecimal taxRate;
@ApiModelProperty("税额")
private BigDecimal taxMoney;
@ApiModelProperty("状态")
@ApiModelProperty("状态0-含税,1-不含税")
private String status;
}

Loading…
Cancel
Save