diff --git a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxCalculateController.java b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxCalculateController.java new file mode 100644 index 0000000..6921eb2 --- /dev/null +++ b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxCalculateController.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); + } +} diff --git a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxSwitchingController.java b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxSwitchingController.java index 1ed0f54..0aae6b0 100644 --- a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxSwitchingController.java +++ b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/TaxSwitchingController.java @@ -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 dtos){ + return taxSwitchingService.taxswitching(dtos); } + } diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxCalculateDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxCalculateDTO.java new file mode 100644 index 0000000..8ee370a --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxCalculateDTO.java @@ -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; + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxSwitchingDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxSwitchingDTO.java index def9b83..1ec4d61 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxSwitchingDTO.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/TaxSwitchingDTO.java @@ -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; diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxCalculateService.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxCalculateService.java new file mode 100644 index 0000000..5a1a6a7 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxCalculateService.java @@ -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); +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxSwitchingService.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxSwitchingService.java index 988a964..4d749c1 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxSwitchingService.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/TaxSwitchingService.java @@ -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 dto); } diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxCalculateServiceImpl.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxCalculateServiceImpl.java new file mode 100644 index 0000000..3726ee8 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxCalculateServiceImpl.java @@ -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); + } +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxSwitchingServiceImpl.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxSwitchingServiceImpl.java index 087fa10..90199ed 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxSwitchingServiceImpl.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/TaxSwitchingServiceImpl.java @@ -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 dtos) { + List 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); } } diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxCalculateVO.java b/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxCalculateVO.java new file mode 100644 index 0000000..62fff9e --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxCalculateVO.java @@ -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; + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxSwitchingVO.java b/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxSwitchingVO.java index 13935cd..56e51cc 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxSwitchingVO.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/vo/TaxSwitchingVO.java @@ -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; }