InvAccountIncoiceController.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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.InvAccountOperate;
  11. import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
  12. import com.ydtech.modules.inv.service.InvAccountIncoiceService;
  13. import com.ydtech.modules.inv.service.InvAccountOperateService;
  14. import com.ydtech.utils.StringUtils;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  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.stream.Collectors;
  24. import static com.ydtech.modules.inv.service.impl.InvAccountIncoiceServiceImpl.getBigDecimal;
  25. import static com.ydtech.modules.inv.utils.TransferUtils.isProfitFull;
  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. @Resource
  42. private InvAccountOperateService invAccountOperateService;
  43. @PostMapping("excel")
  44. @ApiOperation("导出开票记录表")
  45. public HttpResult selectAccountIncoiceExcel(@RequestBody InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  46. return HttpResult.ok("", invAccountIncoiceService.excel(invAccountIncoiceQueryVo));
  47. }
  48. /**
  49. * 分页查询所有数据
  50. *
  51. * @param invAccountIncoice 查询实体
  52. * @return 所有数据
  53. */
  54. @PostMapping("page")
  55. @ApiOperation("分页查询")
  56. public HttpResult selectAll(@RequestBody InvAccountIncoiceQueryVo invAccountIncoice) {
  57. /**
  58. * 构造分页参数
  59. */
  60. PageRequest pageRequest = new PageRequest();
  61. pageRequest.setPageNum(invAccountIncoice.getPageNo());
  62. pageRequest.setPageSize(invAccountIncoice.getPageSize());
  63. Page<InvAccountIncoice> page = PageRequest.buildPageRequest(pageRequest);
  64. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  65. /**
  66. * 如果有开票时间范围,查询开票记录表
  67. */
  68. if (invAccountIncoice.getApplyTimeStart() != null && invAccountIncoice.getApplyTimeEnd() != null) {
  69. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  70. lambdaQueryWrapper.ge(InvAccountOperate::getApplyTime, invAccountIncoice.getApplyTimeStart());
  71. lambdaQueryWrapper.le(InvAccountOperate::getApplyTime, invAccountIncoice.getApplyTimeEnd());
  72. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  73. List<InvAccountOperate> list = invAccountOperateService.list(lambdaQueryWrapper);
  74. List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
  75. //将开票id集合放入查询中
  76. lambdaQueryWrapper.in(InvAccountOperate::getInvoiceId, collect);
  77. }
  78. lambdaQuery
  79. .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller())
  80. .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  81. invAccountIncoice.getInvoiceBy())
  82. .eq(InvAccountIncoice::getDelFlag, "0")
  83. .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  84. invAccountIncoice.getInvoiceType())
  85. .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoice.getOtherUnit())
  86. .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoice.getClearFlag());
  87. if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeEnd())) {
  88. lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeStart().toString());
  89. lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeEnd().toString());
  90. }
  91. lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
  92. Page<InvAccountIncoice> invAccountIncoicePage = this.invAccountIncoiceService.page(page, lambdaQuery);
  93. /**
  94. * 合计
  95. */
  96. InvAccountIncoiceResult invAccountIncoiceResult = this.invAccountIncoiceService.selectAccountIncoice(invAccountIncoice);
  97. if (invAccountIncoiceResult == null) {
  98. InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult();
  99. invAccountIncoiceResult1.setRecords(invAccountIncoicePage.getRecords());
  100. invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo());
  101. invAccountIncoiceResult1.setTotal(invAccountIncoicePage.getTotal());
  102. invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize());
  103. return HttpResult.ok(invAccountIncoiceResult1);
  104. }
  105. invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords());
  106. invAccountIncoiceResult.setCurrent(invAccountIncoice.getPageNo());
  107. invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal());
  108. invAccountIncoiceResult.setSize(invAccountIncoice.getPageSize());
  109. return HttpResult.ok(invAccountIncoiceResult);
  110. }
  111. /**
  112. * 通过主键查询单条数据
  113. *
  114. * @param id 主键
  115. * @return 单条数据
  116. */
  117. @GetMapping("byId/{id}")
  118. @ApiOperation("根据id查询")
  119. public HttpResult selectOne(@PathVariable("id") Serializable id) {
  120. return HttpResult.ok(this.invAccountIncoiceService.getById(id));
  121. }
  122. /**
  123. * 新增数据
  124. *
  125. * @param invAccountIncoice 实体对象
  126. * @return 新增结果
  127. */
  128. @PostMapping
  129. @ApiOperation("新增")
  130. public HttpResult insert(@RequestBody InvAccountIncoice invAccountIncoice) {
  131. return this.invAccountIncoiceService.insertInvAccountIncoice(invAccountIncoice);
  132. }
  133. /**
  134. * 新增收入
  135. */
  136. @PostMapping("update")
  137. @ApiOperation("新增收入")
  138. public HttpResult updateIncome(@RequestBody InvAccountIncoice invAccountIncoice) {
  139. JSONObject outProfit = invAccountIncoice.getOutProfit();
  140. JSONObject entProfit = invAccountIncoice.getEntProfit();
  141. isProfitFull(outProfit, entProfit);
  142. return this.invAccountIncoiceService.updateInvAccountIncoice(invAccountIncoice);
  143. }
  144. @PostMapping("updateIncoice")
  145. @ApiOperation("修改发票信息")
  146. public HttpResult updateIncoice(@RequestBody InvAccountIncoice invAccountIncoice) {
  147. if (!invAccountIncoice.getPayoutMoney().equals("0") && !invAccountIncoice.getNotPayoutMoney().equals(invAccountIncoice.getInvoiceMoney())) {
  148. throw new SystemException("已进账 如需修改请撤销");
  149. }
  150. BigDecimal tax = getBigDecimal(invAccountIncoice);
  151. //不含税金额
  152. BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
  153. invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney());
  154. //税额
  155. invAccountIncoice.setTax(noHasTax.toString());
  156. //不含税金额
  157. invAccountIncoice.setNoHasTax(tax.toString());
  158. return HttpResult.ok(invAccountIncoiceService.updateById(invAccountIncoice));
  159. }
  160. /**
  161. * 撤销
  162. */
  163. @DeleteMapping
  164. @ApiOperation("删除")
  165. public HttpResult delete(@RequestParam("id") String id) {
  166. if (id == null) {
  167. throw new RuntimeException("id不能为空");
  168. }
  169. InvAccountIncoice invAccountIncoice = new InvAccountIncoice();
  170. invAccountIncoice.setInvoiceId(id);
  171. invAccountIncoice.setDelFlag("1");
  172. return this.invAccountIncoiceService.delInvAccountIncoice(invAccountIncoice);
  173. }
  174. }