InvAccountIncoiceServiceImpl.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  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());
  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. //支出操作记录
  128. InvAccountOperate outInvAccountOperate = new InvAccountOperate();
  129. outInvAccountOperate.setOutCardNum(outBankCardNum);
  130. outInvAccountOperate.setApplyAmount(payoutMoney);
  131. outInvAccountOperate.setRevenueOutlay("1");
  132. outInvAccountOperate.setFundFlow(fundFlow);
  133. outInvAccountOperate.setPayMethod(invAccountIncoice.getPayMethod());
  134. outInvAccountOperate.setCompany(invAccountIncoice1.getOtherUnit());
  135. outInvAccountOperate.setFundUse(invAccountIncoice.getFundUse());
  136. outInvAccountOperate.setFundFen(invAccountIncoice.getFundFen());
  137. outInvAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
  138. outInvAccountOperate.setCreateTime(LocalDateTime.now());
  139. outInvAccountOperate.setOutProfit(outProfit);
  140. outInvAccountOperate.setDel(String.valueOf(date.getTime()));
  141. outInvAccountOperate.setOutCardNum(outCard.getBankCardNum());
  142. outInvAccountOperate.setEnterCardNum(entCard.getBankCardNum());
  143. outInvAccountOperate.setCreateId(baseController.getUserId());
  144. outInvAccountOperate.setCreateBy(baseController.getUserName());
  145. //放入操作记录list中
  146. List<InvAccountOperate> invAccountOperateList = new ArrayList<>();
  147. invAccountOperateList.add(outInvAccountOperate);
  148. invAccountOperateList.add(invAccountOperate);
  149. //判断收款方是内部还是外部
  150. if (outInvAccount.getOuterFlag().equals("0")) {
  151. if (revInvAccount.getOuterFlag().equals("0")) {
  152. InvAccountExcel invAccountExcel = new InvAccountExcel();
  153. invAccountExcel.setApplyAmount(payoutMoney);
  154. List<InvAccountCard> invAccountCards = insideTransfer(outCard, outInvAccount, entCard, revInvAccount, payoutMoney);
  155. invAccountCardService.updateBatchById(invAccountCards);
  156. invAccountOperateService.saveBatch(invAccountOperateList);
  157. //归属列表
  158. List<InvAccountOp> list = new ArrayList<>();
  159. List<InvAccountOp> list1 = invAccountEntOpList(entProfit, revInvAccount, entCard, invAccountOperateList.get(0).getAccountOperateId());
  160. List<InvAccountOp> list2 = invAccountOutOpList(outProfit, outInvAccount, outCard, invAccountOperateList.get(0).getAccountOperateId());
  161. //将发票id放入 防止撤销发票时对应归属没删掉
  162. list1.forEach(invAccountOp -> {
  163. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  164. });
  165. list2.forEach(invAccountOp -> {
  166. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  167. });
  168. list.addAll(list1);
  169. list.addAll(list2);
  170. invAccountOpService.saveBatch(list);
  171. } else {
  172. InvAccountExcel invAccountExcel = new InvAccountExcel();
  173. invAccountExcel.setOutAccountQuality(revInvAccount.getOuterFlag());
  174. invAccountExcel.setApplyAmount(payoutMoney);
  175. List<InvAccountCard> invAccountCards = enterDeTransfer(outCard, outInvAccount, entCard, revInvAccount, payoutMoney);
  176. invAccountCardService.updateBatchById(invAccountCards);
  177. invAccountOperateService.saveBatch(invAccountOperateList);
  178. //归属列表
  179. List<InvAccountOp> list = new ArrayList<>();
  180. List<InvAccountOp> list1 = invAccountEntOpList(entProfit, revInvAccount, entCard, invAccountOperateList.get(0).getAccountOperateId());
  181. List<InvAccountOp> list2 = invAccountOutOpList(outProfit, outInvAccount, outCard, invAccountOperateList.get(0).getAccountOperateId());
  182. //将发票id放入 防止撤销发票时对应归属没删掉
  183. list1.forEach(invAccountOp -> {
  184. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  185. });
  186. list2.forEach(invAccountOp -> {
  187. invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
  188. });
  189. list.addAll(list1);
  190. list.addAll(list2);
  191. invAccountOpService.saveBatch(list);
  192. }
  193. } else {
  194. //转账给外部重新设置操作
  195. InvAccountOperate invAccountOperate1 = new InvAccountOperate();
  196. invAccountOperate1.setOutCardId(invAccountIncoice1.getOutBankCardNum());
  197. invAccountOperate1.setEnterCardId(invAccountIncoice1.getRevBankCardNum());
  198. invAccountOperate1.setApplyAmount(payoutMoney);
  199. invAccountOperate1.setRevenueOutlay("0");
  200. invAccountOperate1.setFundFlow(fundFlow);
  201. invAccountOperate1.setPayMethod(invAccountIncoice.getPayMethod());
  202. invAccountOperate1.setCompany(invAccountIncoice1.getOtherUnit());
  203. invAccountOperate1.setFundUse(invAccountIncoice.getFundUse());
  204. invAccountOperate1.setFundFen(invAccountIncoice.getFundFen());
  205. invAccountOperate1.setInvoiceId(invAccountIncoice1.getInvoiceId());
  206. invAccountOperate1.setOutProfit(outProfit);
  207. invAccountOperate1.setEntProfit(entProfit);
  208. invAccountOperateService.insert(invAccountOperate1);
  209. }
  210. return HttpResult.ok(invAccountIncoiceMapper.updateById(invAccountIncoice1));
  211. }
  212. public static BigDecimal getBigDecimal(InvAccountIncoice invAccountIncoice) {
  213. if (invAccountIncoice.getRate().isEmpty()) {
  214. throw new SystemException("请填写税率");
  215. }
  216. if (invAccountIncoice.getInvoiceMoney().isEmpty()) {
  217. throw new SystemException("请填写开票金额");
  218. }
  219. if (invAccountIncoice.getPayoutMoney().isEmpty()) {
  220. throw new SystemException("请填写进账金额");
  221. }
  222. //税率百分数转为小数
  223. BigDecimal divide = new BigDecimal(invAccountIncoice.getRate()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
  224. //税额
  225. return new BigDecimal(invAccountIncoice.getInvoiceMoney()).divide((divide.add(new BigDecimal("1"))), 2, RoundingMode.HALF_UP);
  226. }
  227. @Override
  228. public HttpResult delInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
  229. //发票信息
  230. InvAccountIncoice enInvAccountIncoice = invAccountIncoiceMapper.selectById(invAccountIncoice.getInvoiceId());
  231. //回滚收入
  232. InvAccountCard enterAccount = invAccountCardService.getById(enInvAccountIncoice.getRevBankCardNum());
  233. InvAccountCard outAccount = invAccountCardService.getById(enInvAccountIncoice.getOutBankCardNum());
  234. InvAccount entAccount = invAccountService.getById(enterAccount.getAccountId());
  235. //新增收入回滚操作
  236. List<InvAccountCard> invAccount = quashOutsideTransfer(outAccount, enterAccount, new BigDecimal(enInvAccountIncoice.getPayoutMoney()), entAccount);
  237. BaseController baseController = new BaseController();
  238. InvAccountOperate invAccountOperate = new InvAccountOperate();
  239. invAccountOperate.setInvoiceId(invAccountIncoice.getInvoiceId());
  240. invAccountOperate.setUpdateId(baseController.getUserId());
  241. invAccountOperate.setUpdateBy(baseController.getUserName());
  242. invAccountOperate.setUpdateTime(LocalDateTime.now());
  243. invAccountOperate.setDelFlag("1");
  244. LambdaUpdateWrapper<InvAccountOp> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
  245. lambdaUpdateWrapper.eq(InvAccountOp::getInvoiceId, invAccountIncoice.getInvoiceId());
  246. lambdaUpdateWrapper.set(InvAccountOp::getDelFlag, "1");
  247. try {
  248. invAccountIncoiceMapper.updateById(invAccountIncoice);
  249. invAccountCardService.updateBatchById(invAccount);
  250. invAccountOperateService.updateOperateByIncoiceId(invAccountOperate);
  251. invAccountOpService.update(lambdaUpdateWrapper);
  252. } catch (Exception e) {
  253. return HttpResult.error("撤销失败");
  254. }
  255. return HttpResult.ok("撤销成功");
  256. }
  257. /**
  258. * 统计总和
  259. *
  260. * @param invAccountIncoiceQueryVo
  261. * @return
  262. */
  263. @Override
  264. public InvAccountIncoiceResult selectAccountIncoice(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  265. return invAccountIncoiceMapper.selectAccountIncoice(invAccountIncoiceQueryVo);
  266. }
  267. @Override
  268. public String excel(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  269. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  270. List<InvAccountIncoice> invAccountIncoices = new ArrayList<>();
  271. List<InvAccountOperate> list;
  272. /**
  273. * 如果有开票时间范围,查询开票记录表
  274. */
  275. if (invAccountIncoiceQueryVo.getApplyTimeStart() != null && invAccountIncoiceQueryVo.getApplyTimeEnd() != null) {
  276. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  277. lambdaQueryWrapper.ge(InvAccountOperate::getCreateTime, invAccountIncoiceQueryVo.getApplyTimeStart());
  278. lambdaQueryWrapper.le(InvAccountOperate::getCreateTime, invAccountIncoiceQueryVo.getApplyTimeEnd());
  279. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  280. list = invAccountOperateService.list(lambdaQueryWrapper);
  281. List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
  282. //将开票id集合放入查询中
  283. if (!collect.isEmpty()) {
  284. lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
  285. invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
  286. }
  287. } else {
  288. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  289. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  290. lambdaQuery
  291. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
  292. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  293. invAccountIncoiceQueryVo.getInvoiceBy())
  294. .eq(InvAccountIncoice::getDelFlag, "0")
  295. .eq(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  296. invAccountIncoiceQueryVo.getInvoiceType())
  297. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoiceQueryVo.getOtherUnit())
  298. .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoiceQueryVo.getClearFlag());
  299. if (!ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeEnd())) {
  300. lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeStart().toString());
  301. lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
  302. }
  303. lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
  304. invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
  305. }
  306. //解决时间格式报错问题
  307. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  308. invAccountIncoices.forEach(invAccountIncoice -> {
  309. List<InvAccountOperateResult> payoutTimeList = invAccountIncoiceMapper.selectAccountOperate(invAccountIncoice.getInvoiceId());
  310. if (payoutTimeList != null && !payoutTimeList.isEmpty()) {
  311. List<InvAccountOperateResult> filteredList = payoutTimeList.stream()
  312. .filter(result -> result.getPayoutTime() != null)
  313. .collect(Collectors.toList());
  314. if (!filteredList.isEmpty()) {
  315. filteredList.sort(Comparator.comparing(InvAccountOperateResult::getPayoutTime).reversed());
  316. invAccountIncoice.setPayoutDate(filteredList.get(0).getPayoutTime().format(formatter).toString());
  317. } else {
  318. invAccountIncoice.setPayoutDate("");
  319. }
  320. }
  321. if (invAccountIncoice.getInvoiceTime() != null) {
  322. invAccountIncoice.setInvoiceDate(invAccountIncoice.getInvoiceTime().toString());
  323. }
  324. if (invAccountIncoice.getInvoiceType() != null) {
  325. invAccountIncoice.setInvoiceType(InvoiceTypeEnum.getNameByCode(invAccountIncoice.getInvoiceType()));
  326. }
  327. if (invAccountIncoice.getRate() != null) {
  328. invAccountIncoice.setRate(invAccountIncoice.getRate() + "%");
  329. }
  330. });
  331. File folder = new File(uploadFilePath);
  332. if (folder.exists()) {
  333. return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
  334. } else {
  335. if (folder.mkdirs()) {
  336. return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
  337. } else {
  338. throw new SystemException("文件导出失败");
  339. }
  340. }
  341. }
  342. @Override
  343. public HttpResult selectPage(InvAccountIncoiceQueryVo invAccountIncoice) {
  344. /**
  345. * 构造分页参数
  346. */
  347. PageRequest pageRequest = new PageRequest();
  348. pageRequest.setPageNum(invAccountIncoice.getPageNo());
  349. pageRequest.setPageSize(invAccountIncoice.getPageSize());
  350. Page<InvAccountIncoice> page = PageRequest.buildPageRequest(pageRequest);
  351. LambdaQueryWrapper<InvAccountIncoice> lambdaQuery = new LambdaQueryWrapper<>();
  352. /**
  353. * 如果有开票时间范围,查询开票记录表
  354. */
  355. if (invAccountIncoice.getApplyTimeStart() != null && invAccountIncoice.getApplyTimeEnd() != null) {
  356. LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  357. lambdaQueryWrapper.ge(InvAccountOperate::getCreateTime, invAccountIncoice.getApplyTimeStart());
  358. lambdaQueryWrapper.le(InvAccountOperate::getCreateTime, invAccountIncoice.getApplyTimeEnd());
  359. lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
  360. List<InvAccountOperate> list = invAccountOperateService.list(lambdaQueryWrapper);
  361. List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
  362. //将开票id集合放入查询中
  363. if (!collect.isEmpty()) {
  364. lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
  365. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(lambdaQuery, invAccountIncoice, page);
  366. return HttpResult.ok(invAccountIncoiceResult);
  367. }
  368. InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult();
  369. List<InvAccountIncoice> list1 = new ArrayList<>();
  370. invAccountIncoiceResult1.setRecords(list1);
  371. invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo());
  372. invAccountIncoiceResult1.setTotal(0);
  373. invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize());
  374. return HttpResult.ok(invAccountIncoiceResult1);
  375. } else {
  376. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(lambdaQuery, invAccountIncoice, page);
  377. return HttpResult.ok(invAccountIncoiceResult);
  378. }
  379. }
  380. private InvAccountIncoiceResult selectAccountIncoice(LambdaQueryWrapper<InvAccountIncoice> lambdaQuery, InvAccountIncoiceQueryVo invAccountIncoice, Page<InvAccountIncoice> page) {
  381. lambdaQuery
  382. .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller())
  383. .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  384. invAccountIncoice.getInvoiceBy())
  385. .eq(InvAccountIncoice::getDelFlag, "0")
  386. .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  387. invAccountIncoice.getInvoiceType())
  388. .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoice.getOtherUnit())
  389. .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoice.getClearFlag());
  390. if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeEnd())) {
  391. lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeStart().toString());
  392. lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeEnd().toString());
  393. }
  394. lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
  395. Page<InvAccountIncoice> invAccountIncoicePage = page(page, lambdaQuery);
  396. /**
  397. * 合计
  398. */
  399. InvAccountIncoiceResult invAccountIncoiceResult = selectAccountIncoice(invAccountIncoice);
  400. if (invAccountIncoiceResult == null) {
  401. InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult();
  402. invAccountIncoiceResult1.setRecords(invAccountIncoicePage.getRecords());
  403. invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo());
  404. invAccountIncoiceResult1.setTotal(invAccountIncoicePage.getTotal());
  405. invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize());
  406. return invAccountIncoiceResult1;
  407. }
  408. invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords());
  409. invAccountIncoiceResult.setCurrent(invAccountIncoice.getPageNo());
  410. invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal());
  411. invAccountIncoiceResult.setSize(invAccountIncoice.getPageSize());
  412. return invAccountIncoiceResult;
  413. }
  414. private List<InvAccountIncoice> selectExcel(LambdaQueryWrapper<InvAccountIncoice> lambdaQuery, InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) {
  415. // lambdaQuery
  416. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
  417. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
  418. // invAccountIncoiceQueryVo.getInvoiceBy())
  419. // .eq(InvAccountIncoice::getDelFlag, "0")
  420. // .eq(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceType()), InvAccountIncoice::getInvoiceType,
  421. // invAccountIncoiceQueryVo.getInvoiceType())
  422. // .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoiceQueryVo.getOtherUnit());
  423. //
  424. //
  425. // if (!ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTimeEnd())) {
  426. // lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeStart().toString());
  427. // lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
  428. // }
  429. return invAccountIncoiceMapper.selectList(lambdaQuery);
  430. }
  431. }