InvAccountIncoiceServiceImpl.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. package com.ydtech.modules.inv.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.ydtech.constants.enums.inv.InvoiceTypeEnum;
  9. import com.ydtech.core.page.HttpResult;
  10. import com.ydtech.core.page.PageRequest;
  11. import com.ydtech.exception.SystemException;
  12. import com.ydtech.modules.base.controller.BaseController;
  13. import com.ydtech.modules.inv.dao.InvAccountIncoiceMapper;
  14. import com.ydtech.modules.inv.model.*;
  15. import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
  16. import com.ydtech.modules.inv.service.*;
  17. import com.ydtech.modules.inv.utils.EasyExcelUtils;
  18. import com.ydtech.utils.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.util.ObjectUtils;
  23. import java.io.File;
  24. import java.math.BigDecimal;
  25. import java.math.RoundingMode;
  26. import java.time.LocalDateTime;
  27. import java.time.format.DateTimeFormatter;
  28. import java.util.ArrayList;
  29. import java.util.Comparator;
  30. import java.util.Date;
  31. import java.util.List;
  32. import java.util.stream.Collectors;
  33. import static com.ydtech.modules.inv.utils.TransferUtils.*;
  34. /**
  35. * 发票管理表(InvAccountIncoice)表服务实现类
  36. *
  37. * @author makejava
  38. * @since 2024-01-18 16:01:31
  39. */
  40. @Service("invAccountIncoiceService")
  41. public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceMapper, InvAccountIncoice> implements InvAccountIncoiceService {
  42. @Autowired
  43. private InvAccountIncoiceMapper invAccountIncoiceMapper;
  44. @Autowired
  45. private InvAccountCardService invAccountCardService;
  46. @Autowired
  47. private InvAccountOperateService invAccountOperateService;
  48. @Autowired
  49. private InvAccountService invAccountService;
  50. @Autowired
  51. private InvAccountOpService invAccountOpService;
  52. @Value("${upload.file.path}")
  53. String uploadFilePath;
  54. @Override
  55. public HttpResult insertInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
  56. if (invAccountIncoice.getRevBankCardNum().equals(invAccountIncoice.getOutBankCardNum())) {
  57. throw new SystemException("无法给本公司开票");
  58. }
  59. BigDecimal tax = getBigDecimal(invAccountIncoice);
  60. //不含税金额
  61. BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
  62. invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney());
  63. //税额
  64. invAccountIncoice.setTax(noHasTax.toString());
  65. //不含税金额
  66. invAccountIncoice.setNoHasTax(tax.toString());
  67. return HttpResult.ok(invAccountIncoiceMapper.insert(invAccountIncoice));
  68. }
  69. /**
  70. * 新增收入
  71. *
  72. * @param invAccountIncoice
  73. * @return
  74. */
  75. @Override
  76. public HttpResult updateInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
  77. InvAccountIncoice invAccountIncoice1 = invAccountIncoiceMapper.selectById(invAccountIncoice.getInvoiceId());
  78. //支出卡号
  79. String outBankCardNum = invAccountIncoice1.getOutBankCardNum();
  80. //进账卡号
  81. String entBankCardNum = invAccountIncoice1.getRevBankCardNum();
  82. //收入卡
  83. InvAccountCard entCard = invAccountCardService.getById(invAccountIncoice1.getRevBankCardNum());
  84. //支出卡
  85. InvAccountCard outCard = invAccountCardService.getById(invAccountIncoice1.getOutBankCardNum());
  86. //收入账户
  87. InvAccount revInvAccount = invAccountService.getById(entCard.getAccountId());
  88. //支出账户
  89. InvAccount outInvAccount = invAccountService.getById(outCard.getAccountId());
  90. //收入金额
  91. String payoutMoney = invAccountIncoice.getPayoutMoney();
  92. //支出归属
  93. JSONObject outProfit = invAccountIncoice.getOutProfit();
  94. //收入归属
  95. JSONObject entProfit = invAccountIncoice.getEntProfit();
  96. if (new BigDecimal(invAccountIncoice1.getInvoiceMoney()).subtract(new BigDecimal(invAccountIncoice1.getPayoutMoney()).add(new BigDecimal(payoutMoney))).compareTo(new BigDecimal("0")) < 0) {
  97. throw new SystemException("进账金额大于开票金额");
  98. }
  99. //进账金额
  100. invAccountIncoice1.setPayoutMoney(new BigDecimal(invAccountIncoice1.getPayoutMoney()).add(new BigDecimal(payoutMoney)).toString());
  101. invAccountIncoice1.setNotPayoutMoney(new BigDecimal(invAccountIncoice1.getInvoiceMoney()).subtract(new BigDecimal(invAccountIncoice1.getPayoutMoney())).toString());
  102. if (new BigDecimal(invAccountIncoice1.getNotPayoutMoney()).compareTo(BigDecimal.ZERO) == 0) {
  103. invAccountIncoice1.setClearFlag("1");
  104. }
  105. //资金流出
  106. String fundFlow = invAccountIncoice1.getOtherUnit() + "→" + invAccountIncoice1.getInvoiceBy();
  107. Date date = new Date();
  108. BaseController baseController = new BaseController();
  109. //收入操作记录
  110. InvAccountOperate invAccountOperate = new InvAccountOperate();
  111. invAccountOperate.setEnterCardId(entBankCardNum);
  112. invAccountOperate.setApplyAmount(payoutMoney);
  113. invAccountOperate.setRevenueOutlay("0");
  114. invAccountOperate.setFundFlow(fundFlow);
  115. invAccountOperate.setPayMethod(invAccountIncoice.getPayMethod());
  116. invAccountOperate.setCompany(invAccountIncoice1.getOtherUnit());
  117. invAccountOperate.setFundUse(invAccountIncoice.getFundUse());
  118. invAccountOperate.setFundFen(invAccountIncoice.getFundFen());
  119. invAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
  120. invAccountOperate.setCreateTime(LocalDateTime.now().toString());
  121. invAccountOperate.setEntProfit(entProfit);
  122. invAccountOperate.setDel(String.valueOf(date.getTime()));
  123. invAccountOperate.setOutCardNum(outCard.getBankCardNum());
  124. invAccountOperate.setEnterCardNum(entCard.getBankCardNum());
  125. invAccountOperate.setCreateId(baseController.getUserId());
  126. invAccountOperate.setCreateBy(baseController.getUserName());
  127. invAccountOperate.setPayoutTime(invAccountIncoice.getPayoutTime());
  128. //支出操作记录
  129. InvAccountOperate outInvAccountOperate = new InvAccountOperate();
  130. outInvAccountOperate.setOutCardNum(outBankCardNum);
  131. outInvAccountOperate.setApplyAmount(payoutMoney);
  132. outInvAccountOperate.setRevenueOutlay("1");
  133. outInvAccountOperate.setFundFlow(fundFlow);
  134. outInvAccountOperate.setPayMethod(invAccountIncoice.getPayMethod());
  135. outInvAccountOperate.setCompany(invAccountIncoice1.getOtherUnit());
  136. outInvAccountOperate.setFundUse(invAccountIncoice.getFundUse());
  137. outInvAccountOperate.setFundFen(invAccountIncoice.getFundFen());
  138. outInvAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
  139. outInvAccountOperate.setCreateTime(LocalDateTime.now().toString());
  140. outInvAccountOperate.setOutProfit(outProfit);
  141. outInvAccountOperate.setDel(String.valueOf(date.getTime()));
  142. outInvAccountOperate.setOutCardNum(outCard.getBankCardNum());
  143. outInvAccountOperate.setEnterCardNum(entCard.getBankCardNum());
  144. outInvAccountOperate.setCreateId(baseController.getUserId());
  145. outInvAccountOperate.setCreateBy(baseController.getUserName());
  146. outInvAccountOperate.setPayoutTime(invAccountIncoice.getPayoutTime());
  147. //放入操作记录list中
  148. List<InvAccountOperate> invAccountOperateList = new ArrayList<>();
  149. invAccountOperateList.add(outInvAccountOperate);
  150. invAccountOperateList.add(invAccountOperate);
  151. //判断收款方是内部还是外部
  152. if (outInvAccount.getOuterFlag().equals("0")) {
  153. if (revInvAccount.getOuterFlag().equals("0")) {
  154. InvAccountExcel invAccountExcel = new InvAccountExcel();
  155. invAccountExcel.setApplyAmount(payoutMoney);
  156. List<InvAccountCard> invAccountCards = insideTransfer(outCard, outInvAccount, entCard, revInvAccount, payoutMoney);
  157. invAccountCardService.updateBatchById(invAccountCards);
  158. invAccountOperateService.saveBatch(invAccountOperateList);
  159. //归属列表
  160. List<InvAccountOp> list = new ArrayList<>();
  161. List<InvAccountOp> list1 = invAccountEntOpList(entProfit, revInvAccount, entCard, invAccountOperateList.get(0).getAccountOperateId());
  162. List<InvAccountOp> list2 = invAccountOutOpList(outProfit, outInvAccount, outCard, invAccountOperateList.get(0).getAccountOperateId());
  163. //将发票id放入 防止撤销发票时对应归属没删掉
  164. list1.forEach(invAccountOp -> {
  165. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  166. });
  167. list2.forEach(invAccountOp -> {
  168. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  169. });
  170. list.addAll(list1);
  171. list.addAll(list2);
  172. invAccountOpService.saveBatch(list);
  173. } else {
  174. InvAccountExcel invAccountExcel = new InvAccountExcel();
  175. invAccountExcel.setOutAccountQuality(revInvAccount.getOuterFlag());
  176. invAccountExcel.setApplyAmount(payoutMoney);
  177. List<InvAccountCard> invAccountCards = enterDeTransfer(outCard, outInvAccount, entCard, revInvAccount, payoutMoney);
  178. invAccountCardService.updateBatchById(invAccountCards);
  179. invAccountOperateService.saveBatch(invAccountOperateList);
  180. //归属列表
  181. List<InvAccountOp> list = new ArrayList<>();
  182. List<InvAccountOp> list1 = invAccountEntOpList(entProfit, revInvAccount, entCard, invAccountOperateList.get(0).getAccountOperateId());
  183. List<InvAccountOp> list2 = invAccountOutOpList(outProfit, outInvAccount, outCard, invAccountOperateList.get(0).getAccountOperateId());
  184. //将发票id放入 防止撤销发票时对应归属没删掉
  185. list1.forEach(invAccountOp -> {
  186. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  187. });
  188. list2.forEach(invAccountOp -> {
  189. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  190. });
  191. list.addAll(list1);
  192. list.addAll(list2);
  193. invAccountOpService.saveBatch(list);
  194. }
  195. } else {
  196. //转账给外部重新设置操作
  197. InvAccountOperate invAccountOperate1 = new InvAccountOperate();
  198. invAccountOperate1.setOutCardId(invAccountIncoice1.getOutBankCardNum());
  199. invAccountOperate1.setEnterCardId(invAccountIncoice1.getRevBankCardNum());
  200. invAccountOperate1.setApplyAmount(payoutMoney);
  201. invAccountOperate1.setRevenueOutlay("0");
  202. invAccountOperate1.setFundFlow(fundFlow);
  203. invAccountOperate1.setPayMethod(invAccountIncoice.getPayMethod());
  204. invAccountOperate1.setCompany(invAccountIncoice1.getOtherUnit());
  205. invAccountOperate1.setFundUse(invAccountIncoice.getFundUse());
  206. invAccountOperate1.setFundFen(invAccountIncoice.getFundFen());
  207. invAccountOperate1.setInvoiceId(invAccountIncoice1.getInvoiceId());
  208. invAccountOperate1.setOutProfit(outProfit);
  209. invAccountOperate1.setEntProfit(entProfit);
  210. invAccountOperate1.setPayoutTime(invAccountIncoice.getPayoutTime());
  211. invAccountOperateService.insert(invAccountOperate1);
  212. }
  213. return HttpResult.ok(invAccountIncoiceMapper.updateById(invAccountIncoice1));
  214. }
  215. public static BigDecimal getBigDecimal(InvAccountIncoice invAccountIncoice) {
  216. if (invAccountIncoice.getRate().isEmpty()) {
  217. throw new SystemException("请填写税率");
  218. }
  219. if (invAccountIncoice.getInvoiceMoney().isEmpty()) {
  220. throw new SystemException("请填写开票金额");
  221. }
  222. if (invAccountIncoice.getPayoutMoney().isEmpty()) {
  223. throw new SystemException("请填写进账金额");
  224. }
  225. //税率百分数转为小数
  226. BigDecimal divide = new BigDecimal(invAccountIncoice.getRate()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
  227. //税额
  228. return new BigDecimal(invAccountIncoice.getInvoiceMoney()).divide((divide.add(new BigDecimal("1"))), 2, RoundingMode.HALF_UP);
  229. }
  230. @Override
  231. public HttpResult delInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
  232. //发票信息
  233. InvAccountIncoice enInvAccountIncoice = invAccountIncoiceMapper.selectById(invAccountIncoice.getInvoiceId());
  234. //回滚收入
  235. InvAccountCard enterAccount = invAccountCardService.getById(enInvAccountIncoice.getRevBankCardNum());
  236. InvAccountCard outAccount = invAccountCardService.getById(enInvAccountIncoice.getOutBankCardNum());
  237. InvAccount entAccount = invAccountService.getById(enterAccount.getAccountId());
  238. //新增收入回滚操作
  239. List<InvAccountCard> invAccount = quashOutsideTransfer(outAccount, enterAccount, new BigDecimal(enInvAccountIncoice.getPayoutMoney()), entAccount);
  240. BaseController baseController = new BaseController();
  241. InvAccountOperate invAccountOperate = new InvAccountOperate();
  242. invAccountOperate.setInvoiceId(invAccountIncoice.getInvoiceId());
  243. invAccountOperate.setUpdateId(baseController.getUserId());
  244. invAccountOperate.setUpdateBy(baseController.getUserName());
  245. invAccountOperate.setUpdateTime(LocalDateTime.now());
  246. invAccountOperate.setDelFlag("1");
  247. LambdaUpdateWrapper<InvAccountOp> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
  248. lambdaUpdateWrapper.eq(InvAccountOp::getInvoiceId, invAccountIncoice.getInvoiceId());
  249. lambdaUpdateWrapper.set(InvAccountOp::getDelFlag, "1");
  250. try {
  251. invAccountIncoiceMapper.updateById(invAccountIncoice);
  252. invAccountCardService.updateBatchById(invAccount);
  253. invAccountOperateService.updateOperateByIncoiceId(invAccountOperate);
  254. invAccountOpService.update(lambdaUpdateWrapper);
  255. } catch (Exception e) {
  256. return HttpResult.error("撤销失败");
  257. }
  258. return HttpResult.ok("撤销成功");
  259. }
  260. /**
  261. * 统计总和
  262. *
  263. * @param invAccountIncoiceQueryVo
  264. * @return
  265. */
  266. @Override
  267. public InvAccountIncoiceResult selectAccountIncoice(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  268. return invAccountIncoiceMapper.selectAccountIncoice(invAccountIncoiceQueryVo);
  269. }
  270. @Override
  271. public String excel(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  272. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  273. List<InvAccountIncoice> invAccountIncoices = new ArrayList<>();
  274. List<InvAccountOperate> list;
  275. /**
  276. * 如果有开票时间范围,查询开票记录表
  277. */
  278. if (invAccountIncoiceQueryVo.getApplyTimeStart() != null && invAccountIncoiceQueryVo.getApplyTimeEnd() != null) {
  279. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  280. lambdaQueryWrapper.ge(InvAccountOperate::getCreateTime, invAccountIncoiceQueryVo.getApplyTimeStart());
  281. lambdaQueryWrapper.le(InvAccountOperate::getCreateTime, invAccountIncoiceQueryVo.getApplyTimeEnd());
  282. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  283. list = invAccountOperateService.list(lambdaQueryWrapper);
  284. List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
  285. //将开票id集合放入查询中
  286. if (!collect.isEmpty()) {
  287. lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
  288. invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
  289. }
  290. } else {
  291. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  292. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  293. lambdaQuery
  294. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
  295. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  296. invAccountIncoiceQueryVo.getInvoiceBy())
  297. .eq(InvAccountIncoice::getDelFlag, "0")
  298. .eq(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  299. invAccountIncoiceQueryVo.getInvoiceType())
  300. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoiceQueryVo.getOtherUnit())
  301. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoiceQueryVo.getClearFlag());
  302. if (!ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeEnd())) {
  303. lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeStart().toString());
  304. lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
  305. }
  306. lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
  307. invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
  308. }
  309. //解决时间格式报错问题
  310. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  311. invAccountIncoices.forEach(invAccountIncoice -> {
  312. List<InvAccountOperateResult> payoutTimeList = invAccountIncoiceMapper.selectAccountOperate(invAccountIncoice.getInvoiceId());
  313. if (payoutTimeList != null && !payoutTimeList.isEmpty()) {
  314. List<InvAccountOperateResult> filteredList = payoutTimeList.stream()
  315. .filter(result -> result.getPayoutTime() != null)
  316. .collect(Collectors.toList());
  317. if (!filteredList.isEmpty()) {
  318. filteredList.sort(Comparator.comparing(InvAccountOperateResult::getPayoutTime).reversed());
  319. invAccountIncoice.setPayoutDate(filteredList.get(0).getPayoutTime().format(formatter).toString());
  320. } else {
  321. invAccountIncoice.setPayoutDate("");
  322. }
  323. }
  324. if (invAccountIncoice.getInvoiceTime() != null) {
  325. invAccountIncoice.setInvoiceDate(invAccountIncoice.getInvoiceTime().toString());
  326. }
  327. if (invAccountIncoice.getInvoiceType() != null) {
  328. invAccountIncoice.setInvoiceType(InvoiceTypeEnum.getNameByCode(invAccountIncoice.getInvoiceType()));
  329. }
  330. if (invAccountIncoice.getRate() != null) {
  331. invAccountIncoice.setRate(invAccountIncoice.getRate() + "%");
  332. }
  333. });
  334. File folder = new File(uploadFilePath);
  335. if (folder.exists()) {
  336. return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
  337. } else {
  338. if (folder.mkdirs()) {
  339. return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
  340. } else {
  341. throw new SystemException("文件导出失败");
  342. }
  343. }
  344. }
  345. @Override
  346. public HttpResult selectPage(InvAccountIncoiceQueryVo invAccountIncoice) {
  347. /**
  348. * 构造分页参数
  349. */
  350. PageRequest pageRequest = new PageRequest();
  351. pageRequest.setPageNum(invAccountIncoice.getPageNo());
  352. pageRequest.setPageSize(invAccountIncoice.getPageSize());
  353. Page<InvAccountIncoice> page = PageRequest.buildPageRequest(pageRequest);
  354. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  355. /**
  356. * 如果有开票时间范围,查询开票记录表
  357. */
  358. if (invAccountIncoice.getApplyTimeStart() != null && invAccountIncoice.getApplyTimeEnd() != null) {
  359. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  360. lambdaQueryWrapper.ge(InvAccountOperate::getCreateTime, invAccountIncoice.getApplyTimeStart());
  361. lambdaQueryWrapper.le(InvAccountOperate::getCreateTime, invAccountIncoice.getApplyTimeEnd());
  362. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  363. List<InvAccountOperate> list = invAccountOperateService.list(lambdaQueryWrapper);
  364. List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
  365. //将开票id集合放入查询中
  366. if (!collect.isEmpty()) {
  367. lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
  368. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(lambdaQuery, invAccountIncoice, page);
  369. return HttpResult.ok(invAccountIncoiceResult);
  370. }
  371. InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult();
  372. List<InvAccountIncoice> list1 = new ArrayList<>();
  373. invAccountIncoiceResult1.setRecords(list1);
  374. invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo());
  375. invAccountIncoiceResult1.setTotal(0);
  376. invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize());
  377. return HttpResult.ok(invAccountIncoiceResult1);
  378. } else {
  379. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(lambdaQuery, invAccountIncoice, page);
  380. return HttpResult.ok(invAccountIncoiceResult);
  381. }
  382. }
  383. private InvAccountIncoiceResult selectAccountIncoice(LambdaQueryWrapper<InvAccountIncoice> lambdaQuery, InvAccountIncoiceQueryVo invAccountIncoice, Page<InvAccountIncoice> page) {
  384. lambdaQuery
  385. .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller())
  386. .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  387. invAccountIncoice.getInvoiceBy())
  388. .eq(InvAccountIncoice::getDelFlag, "0")
  389. .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  390. invAccountIncoice.getInvoiceType())
  391. .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoice.getOtherUnit())
  392. .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoice.getClearFlag());
  393. if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeEnd())) {
  394. lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeStart().toString());
  395. lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeEnd().toString());
  396. }
  397. lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
  398. Page<InvAccountIncoice> invAccountIncoicePage = page(page, lambdaQuery);
  399. /**
  400. * 合计
  401. */
  402. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(invAccountIncoice);
  403. if (invAccountIncoiceResult == null) {
  404. InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult();
  405. invAccountIncoiceResult1.setRecords(invAccountIncoicePage.getRecords());
  406. invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo());
  407. invAccountIncoiceResult1.setTotal(invAccountIncoicePage.getTotal());
  408. invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize());
  409. return invAccountIncoiceResult1;
  410. }
  411. invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords());
  412. invAccountIncoiceResult.setCurrent(invAccountIncoice.getPageNo());
  413. invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal());
  414. invAccountIncoiceResult.setSize(invAccountIncoice.getPageSize());
  415. return invAccountIncoiceResult;
  416. }
  417. private List<InvAccountIncoice> selectExcel(LambdaQueryWrapper<InvAccountIncoice> lambdaQuery, InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  418. // lambdaQuery
  419. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
  420. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  421. // invAccountIncoiceQueryVo.getInvoiceBy())
  422. // .eq(InvAccountIncoice::getDelFlag, "0")
  423. // .eq(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  424. // invAccountIncoiceQueryVo.getInvoiceType())
  425. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoiceQueryVo.getOtherUnit());
  426. //
  427. //
  428. // if (!ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeEnd())) {
  429. // lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeStart().toString());
  430. // lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
  431. // }
  432. return invAccountIncoiceMapper.selectList(lambdaQuery);
  433. }
  434. }