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

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; package com.jianshui.web.controller.platform;
import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxCalculateDTO;
import com.jianshui.platform.dto.TaxSwitchingDTO; import com.jianshui.platform.dto.TaxSwitchingDTO;
import com.jianshui.platform.service.TaxSwitchingService; import com.jianshui.platform.service.TaxSwitchingService;
import io.swagger.annotations.Api; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* @Author: kane * @Author: kane
@ -28,7 +31,8 @@ public class TaxSwitchingController {
@ApiOperation("含税不含税切换") @ApiOperation("含税不含税切换")
@PostMapping("/switching") @PostMapping("/switching")
public AjaxResult taxSwitching(@RequestBody TaxSwitchingDTO dto){ public AjaxResult taxSwitching(@RequestBody List<TaxSwitchingDTO> dtos){
return taxSwitchingService.taxswitching(dto); 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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@ -15,22 +17,25 @@ import java.math.BigDecimal;
@ApiModel("含税不含税转换") @ApiModel("含税不含税转换")
@Data @Data
public class TaxSwitchingDTO { public class TaxSwitchingDTO {
@ApiModelProperty("货物或应税劳务、服务名称") @NotNull
private String taxName; @ApiModelProperty("发票id")
@ApiModelProperty("规格型号") private Integer id;
private String specification; @NotNull
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("数量") @ApiModelProperty("数量")
private BigDecimal number; private BigDecimal number;
@NotNull
@ApiModelProperty("单价") @ApiModelProperty("单价")
private BigDecimal unitPrice; private BigDecimal unitPrice;
@NotNull
@ApiModelProperty("金额") @ApiModelProperty("金额")
private BigDecimal money; private BigDecimal money;
@NotNull
@ApiModelProperty("税率") @ApiModelProperty("税率")
private BigDecimal taxRate; private BigDecimal taxRate;
@NotNull
@ApiModelProperty("税额") @ApiModelProperty("税额")
private BigDecimal taxMoney; private BigDecimal taxMoney;
@NotEmpty
@ApiModelProperty("状态0-含税,1-不含税") @ApiModelProperty("状态0-含税,1-不含税")
private String status; 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.common.core.domain.AjaxResult;
import com.jianshui.platform.dto.TaxSwitchingDTO; import com.jianshui.platform.dto.TaxSwitchingDTO;
import java.util.List;
/** /**
* @Author: kane * @Author: kane
* @Description: 含税不含税切换业务层 * @Description: 含税不含税切换业务层
@ -16,5 +18,5 @@ public interface TaxSwitchingService {
* @param dto * @param dto
* @return : com.jianshui.common.core.domain.AjaxResult * @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; package com.jianshui.platform.service.impl;
import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.utils.ValidateUtils;
import com.jianshui.common.utils.bean.BeanUtils; import com.jianshui.common.utils.bean.BeanUtils;
import com.jianshui.platform.dto.TaxSwitchingDTO; import com.jianshui.platform.dto.TaxSwitchingDTO;
import com.jianshui.platform.service.TaxSwitchingService; import com.jianshui.platform.service.TaxSwitchingService;
@ -8,6 +9,8 @@ import com.jianshui.platform.vo.TaxSwitchingVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/** /**
* @Author: kane * @Author: kane
@ -19,35 +22,36 @@ import java.math.BigDecimal;
public class TaxSwitchingServiceImpl implements TaxSwitchingService { public class TaxSwitchingServiceImpl implements TaxSwitchingService {
/** /**
* 功能描述: 含税不含税切换计算 * 功能描述: 含税不含税切换计算
* @param dto * @param dtos
* @return : com.jianshui.common.core.domain.AjaxResult * @return : com.jianshui.common.core.domain.AjaxResult
*/ */
@Override @Override
public AjaxResult taxswitching(TaxSwitchingDTO dto) { public AjaxResult taxswitching(List<TaxSwitchingDTO> dtos) {
//判空 List<TaxSwitchingVO> taxSwitchingVOS = new ArrayList<>();
if (dto == null){ for (TaxSwitchingDTO dto : dtos) {
return AjaxResult.error("未传入发票相关信息,请检查!"); ValidateUtils.validate(dto);
} //实体类转换
//实体类转换 TaxSwitchingVO taxSwitchingVO = new TaxSwitchingVO();
TaxSwitchingVO taxSwitchingVO = new TaxSwitchingVO(); BeanUtils.copyProperties(dto, taxSwitchingVO);
BeanUtils.copyProperties(dto,taxSwitchingVO); //判断是否为含税
//判断是否为含税 if ("0".equals(dto.getStatus())) {
if ("0".equals(dto.getStatus())){ //含税改为非含税返回
//含税改为非含税返回 taxSwitchingVO.setStatus("1");
taxSwitchingVO.setStatus("1"); //单个商品税额
//单个商品税额 BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber());
BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber()); taxSwitchingVO.setUnitPrice(dto.getUnitPrice().subtract(taxMoney));
taxSwitchingVO.setUnitPrice(dto.getUnitPrice().subtract(taxMoney)); taxSwitchingVO.setMoney(dto.getMoney().subtract(dto.getTaxMoney()));
taxSwitchingVO.setMoney(dto.getMoney().subtract(dto.getTaxMoney())); taxSwitchingVOS.add(taxSwitchingVO);
return AjaxResult.success(taxSwitchingVO); } else {
}else { //非含税改为含税返回
//非含税改为含税返回 taxSwitchingVO.setStatus("0");
taxSwitchingVO.setStatus("0"); //单个商品税额
//单个商品税额 BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber());
BigDecimal taxMoney = dto.getTaxMoney().divide(dto.getNumber()); taxSwitchingVO.setUnitPrice(dto.getUnitPrice().add(taxMoney));
taxSwitchingVO.setUnitPrice(dto.getUnitPrice().add(taxMoney)); taxSwitchingVO.setMoney(dto.getMoney().add(dto.getTaxMoney()));
taxSwitchingVO.setMoney(dto.getMoney().add(dto.getTaxMoney())); taxSwitchingVOS.add(taxSwitchingVO);
return AjaxResult.success(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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@ -15,12 +16,8 @@ import java.math.BigDecimal;
@ApiModel("含税不含税转换") @ApiModel("含税不含税转换")
@Data @Data
public class TaxSwitchingVO { public class TaxSwitchingVO {
@ApiModelProperty("货物或应税劳务、服务名称") @ApiModelProperty("发票id")
private String taxName; private Integer id;
@ApiModelProperty("规格型号")
private String specification;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("数量") @ApiModelProperty("数量")
private BigDecimal number; private BigDecimal number;
@ApiModelProperty("单价") @ApiModelProperty("单价")
@ -31,7 +28,7 @@ public class TaxSwitchingVO {
private BigDecimal taxRate; private BigDecimal taxRate;
@ApiModelProperty("税额") @ApiModelProperty("税额")
private BigDecimal taxMoney; private BigDecimal taxMoney;
@ApiModelProperty("状态") @ApiModelProperty("状态0-含税,1-不含税")
private String status; private String status;
} }

Loading…
Cancel
Save