InvAccountIncoiceController.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.ydtech.modules.inv.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.core.page.PageRequest;
  7. import com.ydtech.exception.SystemException;
  8. import com.ydtech.modules.inv.model.InvAccountIncoice;
  9. import com.ydtech.modules.inv.model.InvAccountIncoiceResult;
  10. import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
  11. import com.ydtech.modules.inv.service.InvAccountIncoiceService;
  12. import com.ydtech.modules.inv.service.InvAccountOpService;
  13. import com.ydtech.utils.StringUtils;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.util.ObjectUtils;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.annotation.Resource;
  20. import java.io.Serializable;
  21. import java.math.BigDecimal;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.stream.DoubleStream;
  25. import static com.ydtech.modules.inv.service.impl.InvAccountIncoiceServiceImpl.getBigDecimal;
  26. import static com.ydtech.modules.inv.utils.TransferUtils.isProfitFull;
  27. /**
  28. * 发票管理表(InvAccountIncoice)表控制层
  29. *
  30. * @author makejava
  31. * @since 2024-01-18 16:01:25
  32. */
  33. @RestController
  34. @RequestMapping("invAccountIncoice")
  35. @Api(tags = "发票管理表", value = "发票管理表")
  36. public class InvAccountIncoiceController {
  37. /**
  38. * 服务对象
  39. */
  40. @Resource
  41. private InvAccountIncoiceService invAccountIncoiceService;
  42. @PostMapping("excel")
  43. @ApiOperation("导出开票记录表")
  44. public HttpResult selectAccountIncoiceExcel(@RequestBody InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  45. return HttpResult.ok("",invAccountIncoiceService.excel(invAccountIncoiceQueryVo));
  46. }
  47. /**
  48. * 分页查询所有数据
  49. *
  50. * @param invAccountIncoice 查询实体
  51. * @return 所有数据
  52. */
  53. @PostMapping("page")
  54. @ApiOperation("分页查询")
  55. public HttpResult selectAll(@RequestBody InvAccountIncoiceQueryVo invAccountIncoice) {
  56. PageRequest pageRequest = new PageRequest();
  57. pageRequest.setPageNum(invAccountIncoice.getPageNo());
  58. pageRequest.setPageSize(invAccountIncoice.getPageSize());
  59. Page<InvAccountIncoice> page = PageRequest.buildPageRequest(pageRequest);
  60. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  61. lambdaQuery
  62. .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller())
  63. .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  64. invAccountIncoice.getInvoiceBy())
  65. .eq(InvAccountIncoice::getDelFlag, "0")
  66. .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  67. invAccountIncoice.getInvoiceType())
  68. .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit,invAccountIncoice.getOtherUnit())
  69. .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag,invAccountIncoice.getClearFlag());
  70. if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTime())) {
  71. lambdaQuery.eq(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTime().toString());
  72. }
  73. Page<InvAccountIncoice> invAccountIncoicePage = this.invAccountIncoiceService.page(page, lambdaQuery);
  74. InvAccountIncoiceResult invAccountIncoiceResult = new InvAccountIncoiceResult();
  75. invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords());
  76. invAccountIncoiceResult.setPages(invAccountIncoicePage.getPages());
  77. invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal());
  78. invAccountIncoiceResult.setSize(invAccountIncoicePage.getSize());
  79. List<InvAccountIncoice> records = invAccountIncoicePage.getRecords();
  80. invAccountIncoiceResult.setNotPayoutMoneySum("0");
  81. invAccountIncoiceResult.setInvoiceMoneySum("0");
  82. invAccountIncoiceResult.setNoHasTaxSum("0");
  83. invAccountIncoiceResult.setInvoiceNumSum("0");
  84. invAccountIncoiceResult.setPayoutMoneySum("0");
  85. invAccountIncoiceResult.setTaxSum("0");
  86. records.forEach(inv -> {
  87. invAccountIncoiceResult.setNotPayoutMoneySum(String.valueOf(new BigDecimal(inv.getNotPayoutMoney()).add(new BigDecimal(invAccountIncoiceResult.getNotPayoutMoneySum()))));
  88. invAccountIncoiceResult.setInvoiceMoneySum(String.valueOf(new BigDecimal(inv.getInvoiceMoney()).add(new BigDecimal(invAccountIncoiceResult.getInvoiceMoneySum()))));
  89. invAccountIncoiceResult.setNoHasTaxSum(String.valueOf(new BigDecimal(inv.getNoHasTax()).add(new BigDecimal(invAccountIncoiceResult.getNoHasTaxSum()))));
  90. invAccountIncoiceResult.setInvoiceNumSum(String.valueOf(new BigDecimal(inv.getInvoiceNum()).add(new BigDecimal(invAccountIncoiceResult.getInvoiceNumSum()))));
  91. invAccountIncoiceResult.setPayoutMoneySum(String.valueOf(new BigDecimal(inv.getPayoutMoney()).add(new BigDecimal(invAccountIncoiceResult.getPayoutMoneySum()))));
  92. invAccountIncoiceResult.setTaxSum(String.valueOf(new BigDecimal(inv.getTax()).add(new BigDecimal(invAccountIncoiceResult.getTaxSum()))));
  93. });
  94. return HttpResult.ok(invAccountIncoiceResult);
  95. }
  96. /**
  97. * 通过主键查询单条数据
  98. *
  99. * @param id 主键
  100. * @return 单条数据
  101. */
  102. @GetMapping("byId/{id}")
  103. @ApiOperation("根据id查询")
  104. public HttpResult selectOne(@PathVariable("id") Serializable id) {
  105. return HttpResult.ok(this.invAccountIncoiceService.getById(id));
  106. }
  107. /**
  108. * 新增数据
  109. *
  110. * @param invAccountIncoice 实体对象
  111. * @return 新增结果
  112. */
  113. @PostMapping
  114. @ApiOperation("新增")
  115. public HttpResult insert(@RequestBody InvAccountIncoice invAccountIncoice) {
  116. return this.invAccountIncoiceService.insertInvAccountIncoice(invAccountIncoice);
  117. }
  118. /**
  119. * 新增收入
  120. */
  121. @PostMapping("update")
  122. @ApiOperation("新增收入")
  123. public HttpResult updateIncome(@RequestBody InvAccountIncoice invAccountIncoice) {
  124. JSONObject outProfit = invAccountIncoice.getOutProfit();
  125. JSONObject entProfit = invAccountIncoice.getEntProfit();
  126. isProfitFull(outProfit, entProfit);
  127. return this.invAccountIncoiceService.updateInvAccountIncoice(invAccountIncoice);
  128. }
  129. @PostMapping("updateIncoice")
  130. @ApiOperation("修改发票信息")
  131. public HttpResult updateIncoice(@RequestBody InvAccountIncoice invAccountIncoice) {
  132. if (!invAccountIncoice.getPayoutMoney().equals("0") && !invAccountIncoice.getNotPayoutMoney().equals(invAccountIncoice.getInvoiceMoney())){
  133. throw new SystemException("已进账 如需修改请撤销");
  134. }
  135. BigDecimal tax = getBigDecimal(invAccountIncoice);
  136. //不含税金额
  137. BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
  138. invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney());
  139. //税额
  140. invAccountIncoice.setTax(noHasTax.toString());
  141. //不含税金额
  142. invAccountIncoice.setNoHasTax(tax.toString());
  143. return HttpResult.ok(invAccountIncoiceService.updateById(invAccountIncoice));
  144. }
  145. /**
  146. * 撤销
  147. */
  148. @DeleteMapping
  149. @ApiOperation("删除")
  150. public HttpResult delete(@RequestParam("id") String id) {
  151. if (id == null) {
  152. throw new RuntimeException("id不能为空");
  153. }
  154. InvAccountIncoice invAccountIncoice = new InvAccountIncoice();
  155. invAccountIncoice.setInvoiceId(id);
  156. invAccountIncoice.setDelFlag("1");
  157. return this.invAccountIncoiceService.delInvAccountIncoice(invAccountIncoice);
  158. }
  159. }