InvAccountIncoiceController.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. /**
  27. * 发票管理表(InvAccountIncoice)表控制层
  28. *
  29. * @author makejava
  30. * @since 2024-01-18 16:01:25
  31. */
  32. @RestController
  33. @RequestMapping("invAccountIncoice")
  34. @Api(tags = "发票管理表", value = "发票管理表")
  35. public class InvAccountIncoiceController {
  36. /**
  37. * 服务对象
  38. */
  39. @Resource
  40. private InvAccountIncoiceService invAccountIncoiceService;
  41. @PostMapping("excel")
  42. @ApiOperation("导出开票记录表")
  43. public HttpResult selectAccountIncoiceExcel(@RequestBody InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  44. return HttpResult.ok("",invAccountIncoiceService.excel(invAccountIncoiceQueryVo));
  45. }
  46. /**
  47. * 分页查询所有数据
  48. *
  49. * @param invAccountIncoice 查询实体
  50. * @return 所有数据
  51. */
  52. @PostMapping("page")
  53. @ApiOperation("分页查询")
  54. public HttpResult selectAll(@RequestBody InvAccountIncoiceQueryVo invAccountIncoice) {
  55. PageRequest pageRequest = new PageRequest();
  56. pageRequest.setPageNum(invAccountIncoice.getPageNo());
  57. pageRequest.setPageSize(invAccountIncoice.getPageSize());
  58. Page<InvAccountIncoice> page = PageRequest.buildPageRequest(pageRequest);
  59. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  60. lambdaQuery
  61. .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller())
  62. .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  63. invAccountIncoice.getInvoiceBy())
  64. .eq(InvAccountIncoice::getDelFlag, "0")
  65. .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  66. invAccountIncoice.getInvoiceType())
  67. .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit,invAccountIncoice.getOtherUnit())
  68. .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag,invAccountIncoice.getClearFlag());
  69. if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTime())) {
  70. lambdaQuery.eq(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTime().toString());
  71. }
  72. Page<InvAccountIncoice> invAccountIncoicePage = this.invAccountIncoiceService.page(page, lambdaQuery);
  73. InvAccountIncoiceResult invAccountIncoiceResult = new InvAccountIncoiceResult();
  74. invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords());
  75. invAccountIncoiceResult.setPages(invAccountIncoicePage.getPages());
  76. invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal());
  77. invAccountIncoiceResult.setSize(invAccountIncoicePage.getSize());
  78. List<InvAccountIncoice> records = invAccountIncoicePage.getRecords();
  79. invAccountIncoiceResult.setNotPayoutMoneySum("0");
  80. invAccountIncoiceResult.setInvoiceMoneySum("0");
  81. invAccountIncoiceResult.setNoHasTaxSum("0");
  82. invAccountIncoiceResult.setInvoiceNumSum("0");
  83. invAccountIncoiceResult.setPayoutMoneySum("0");
  84. invAccountIncoiceResult.setTaxSum("0");
  85. records.forEach(inv -> {
  86. invAccountIncoiceResult.setNotPayoutMoneySum(String.valueOf(new BigDecimal(inv.getInvoiceMoney()).add(new BigDecimal(invAccountIncoiceResult.getNotPayoutMoneySum()))));
  87. invAccountIncoiceResult.setInvoiceMoneySum(String.valueOf(new BigDecimal(inv.getInvoiceMoney()).add(new BigDecimal(invAccountIncoiceResult.getInvoiceMoneySum()))));
  88. invAccountIncoiceResult.setNoHasTaxSum(String.valueOf(new BigDecimal(inv.getNoHasTax()).add(new BigDecimal(invAccountIncoiceResult.getNoHasTaxSum()))));
  89. invAccountIncoiceResult.setInvoiceNumSum(String.valueOf(new BigDecimal(inv.getInvoiceNum()).add(new BigDecimal(invAccountIncoiceResult.getInvoiceNumSum()))));
  90. invAccountIncoiceResult.setPayoutMoneySum(String.valueOf(new BigDecimal(inv.getPayoutMoney()).add(new BigDecimal(invAccountIncoiceResult.getPayoutMoneySum()))));
  91. invAccountIncoiceResult.setTaxSum(String.valueOf(new BigDecimal(inv.getTax()).add(new BigDecimal(invAccountIncoiceResult.getTaxSum()))));
  92. });
  93. return HttpResult.ok(invAccountIncoiceResult);
  94. }
  95. /**
  96. * 通过主键查询单条数据
  97. *
  98. * @param id 主键
  99. * @return 单条数据
  100. */
  101. @GetMapping("byId/{id}")
  102. @ApiOperation("根据id查询")
  103. public HttpResult selectOne(@PathVariable("id") Serializable id) {
  104. return HttpResult.ok(this.invAccountIncoiceService.getById(id));
  105. }
  106. /**
  107. * 新增数据
  108. *
  109. * @param invAccountIncoice 实体对象
  110. * @return 新增结果
  111. */
  112. @PostMapping
  113. @ApiOperation("新增")
  114. public HttpResult insert(@RequestBody InvAccountIncoice invAccountIncoice) {
  115. return this.invAccountIncoiceService.insertInvAccountIncoice(invAccountIncoice);
  116. }
  117. /**
  118. * 新增收入
  119. */
  120. @PostMapping("update")
  121. @ApiOperation("新增收入")
  122. public HttpResult updateIncome(@RequestBody InvAccountIncoice invAccountIncoice) {
  123. JSONObject outProfit = invAccountIncoice.getOutProfit();
  124. JSONObject entProfit = invAccountIncoice.getEntProfit();
  125. BigDecimal outAmount = new BigDecimal(0);
  126. BigDecimal entAmount = new BigDecimal(0);
  127. for (Map.Entry<String, Object> entry:outProfit.entrySet()){
  128. outAmount = outAmount.add(new BigDecimal(entry.getValue().toString()));
  129. }
  130. for (Map.Entry<String, Object> entry:entProfit.entrySet()){
  131. entAmount = entAmount.add(new BigDecimal(entry.getValue().toString()));
  132. }
  133. if (!String.valueOf(outAmount).equals("100")){
  134. throw new SystemException("支出金额未完全分配");
  135. }
  136. if (!String.valueOf(entAmount).equals("100")){
  137. throw new SystemException("收入金额未完全分配");
  138. }
  139. return this.invAccountIncoiceService.updateInvAccountIncoice(invAccountIncoice);
  140. }
  141. @PostMapping("updateIncoice")
  142. @ApiOperation("修改发票信息")
  143. public HttpResult updateIncoice(@RequestBody InvAccountIncoice invAccountIncoice) {
  144. if (!invAccountIncoice.getPayoutMoney().equals("0") && !invAccountIncoice.getNotPayoutMoney().equals(invAccountIncoice.getInvoiceMoney())){
  145. throw new SystemException("已进账 如需修改请撤销");
  146. }
  147. BigDecimal tax = getBigDecimal(invAccountIncoice);
  148. //不含税金额
  149. BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
  150. invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney());
  151. //税额
  152. invAccountIncoice.setTax(noHasTax.toString());
  153. //不含税金额
  154. invAccountIncoice.setNoHasTax(tax.toString());
  155. return HttpResult.ok(invAccountIncoiceService.updateById(invAccountIncoice));
  156. }
  157. /**
  158. * 撤销
  159. */
  160. @DeleteMapping
  161. @ApiOperation("删除")
  162. public HttpResult delete(@RequestParam("id") String id) {
  163. if (id == null) {
  164. throw new RuntimeException("id不能为空");
  165. }
  166. InvAccountIncoice invAccountIncoice = new InvAccountIncoice();
  167. invAccountIncoice.setInvoiceId(id);
  168. invAccountIncoice.setDelFlag("1");
  169. return this.invAccountIncoiceService.delInvAccountIncoice(invAccountIncoice);
  170. }
  171. }