InvReceivableController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package com.ydtech.modules.inv.controller;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.ydtech.core.page.HttpResult;
  5. import com.ydtech.core.page.PageResult;
  6. import com.ydtech.modules.base.controller.BaseController;
  7. import com.ydtech.modules.esm.model.EsmInsCompany;
  8. import com.ydtech.modules.inv.model.po.InvSettlementSource;
  9. import com.ydtech.modules.inv.model.po.InvSource;
  10. import com.ydtech.modules.inv.model.vo.*;
  11. import com.ydtech.modules.inv.service.InvReceivableService;
  12. import com.ydtech.modules.inv.utils.EasyExcelUtils;
  13. import com.ydtech.modules.order.entity.BasePageResult;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Value;
  18. import org.springframework.web.bind.annotation.*;
  19. import java.io.*;
  20. import java.nio.file.Files;
  21. import java.nio.file.Path;
  22. import java.nio.file.Paths;
  23. import java.time.YearMonth;
  24. import java.time.format.DateTimeFormatter;
  25. import java.util.List;
  26. /**
  27. * @author jianlong
  28. * @date 2024-01-05 09:31
  29. */
  30. @Api(tags = "应收应付 - 数据查询", value = "应收应付数据查询")
  31. @RequestMapping("/InsReceivable")
  32. @RestController
  33. public class InvReceivableController extends BaseController {
  34. @Autowired
  35. private InvReceivableService invReceivableService;
  36. @Value("${upload.file.path}")
  37. private String uploadPath;
  38. @Value("${upload.file.url}")
  39. private String uploadUrl;
  40. @ApiOperation("应收导入数据分页查询")
  41. @PostMapping("receivablePage")
  42. public HttpResult<PageResult> receivablePage(@RequestBody InvSourceQueryVo invSourceQueryVo) {
  43. IPage<InvSource> recivablePage = invReceivableService.getRecivablePage(invSourceQueryVo);
  44. PageResult pageResult = buildPageResponse(recivablePage);
  45. return HttpResult.ok(pageResult);
  46. }
  47. @ApiOperation("应收导入数据修改")
  48. @PostMapping("receivableUpdates")
  49. public HttpResult updateRecivable(@RequestBody InvSource invSource) {
  50. Boolean b = invReceivableService.updateRecivable(invSource);
  51. return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
  52. }
  53. @ApiOperation("应收导入批量数据修改")
  54. @PostMapping("receivableUpdateBatch")
  55. public HttpResult updateRecivableBatch(@RequestBody InvSource invSource) {
  56. Boolean b = invReceivableService.updateRecivableBatch(invSource);
  57. return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
  58. }
  59. @ApiOperation("应收表导出")
  60. @PostMapping("exportReceivable")
  61. public HttpResult<PageResult> exportReceivable(@RequestBody InvSourceQueryVo invSourceQueryVo) throws IOException {
  62. List<InvSource> recivablePage = invReceivableService.getRecivableList(invSourceQueryVo);
  63. String uploadPath = this.uploadPath + "/excel/";
  64. Path path = Paths.get(uploadPath);
  65. if (!Files.exists(path)) {
  66. Files.createDirectories(path);
  67. }
  68. String fileName = EasyExcelUtils.downExcel(uploadPath, "应收表", InvSource.class, recivablePage);
  69. return HttpResult.ok(uploadUrl + "excel/" + fileName);
  70. }
  71. @ApiOperation("应收导入新增")
  72. @PostMapping("addReceivable")
  73. public HttpResult addReceivable(@RequestBody InvSource invSource) {
  74. Boolean b = invReceivableService.addReceivable(invSource);
  75. return b ? HttpResult.ok("新增成功") : HttpResult.error("新增失败");
  76. }
  77. @ApiOperation("应收导入删除")
  78. @PostMapping("deleteReceivable")
  79. public HttpResult deleteReceivable(@RequestBody String[] ids) {
  80. Boolean b = invReceivableService.deleteReceivable(ids);
  81. return b ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
  82. }
  83. @ApiOperation("结算导入数据分页查询")
  84. @PostMapping("settlementPage")
  85. public HttpResult<PageResult> settlementPage(@RequestBody InvSettlementSourceQueryVo invSettlementSourceQueryVo) {
  86. IPage<InvSettlementSource> recivablePage = invReceivableService.getSettlementPage(invSettlementSourceQueryVo);
  87. PageResult pageResult = buildPageResponse(recivablePage);
  88. return HttpResult.ok(pageResult);
  89. }
  90. @ApiOperation("结算导入数据修改")
  91. @PostMapping("updateSettlement")
  92. public HttpResult updateSettlement(@RequestBody InvSettlementSource invSettlementSource) {
  93. Boolean b = invReceivableService.updateSettlement(invSettlementSource);
  94. return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
  95. }
  96. @ApiOperation("结算导入数据批量修改")
  97. @PostMapping("updateSettlementBatch")
  98. public HttpResult updateSettlementBatch(@RequestBody InvSettlementSource invSettlementSource) {
  99. Boolean b = invReceivableService.updateSettlementBatch(invSettlementSource);
  100. return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败");
  101. }
  102. @ApiOperation("结算导出")
  103. @PostMapping("exportSettlement")
  104. public HttpResult<PageResult> exportSettlement(@RequestBody InvSettlementSourceQueryVo invSettlementSourceQueryVo) throws IOException {
  105. List<InvSettlementSource> recivableList = invReceivableService.getSettlementList(invSettlementSourceQueryVo);
  106. String uploadPath = this.uploadPath + "/excel/";
  107. Path path = Paths.get(uploadPath);
  108. if (!Files.exists(path)) {
  109. Files.createDirectories(path);
  110. }
  111. String fileName = EasyExcelUtils.downExcel(uploadPath, "结算表", InvSettlementSource.class, recivableList);
  112. return HttpResult.ok(uploadUrl + "excel/" + fileName);
  113. }
  114. @ApiOperation("结算导入新增")
  115. @PostMapping("addSettlement")
  116. public HttpResult addSettlement(@RequestBody InvSettlementSource invSettlementSource){
  117. return invReceivableService.addSettlement(invSettlementSource);
  118. }
  119. @ApiOperation("结算导入删除")
  120. @PostMapping("deleteSettlement")
  121. public HttpResult deleteSettlement(@RequestBody String[] ids) {
  122. Boolean b = invReceivableService.deleteSettlement(ids);
  123. return b ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
  124. }
  125. @ApiOperation("应收结果")
  126. @GetMapping("receivableResult")
  127. public HttpResult<BasePageResult<ReceivableResultVo>> receivableResult(String yearMonthStr, String insuranceId) {
  128. // 获取当前年月
  129. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
  130. YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter);
  131. // 获取当前月份的最大天数
  132. int maxDaysInMonth = yearMonth.lengthOfMonth();
  133. List<ReceivableResultVo> invChannelAccountList = invReceivableService.getReceivableList(yearMonth + "-01",
  134. yearMonth + "-" + maxDaysInMonth, insuranceId);
  135. BasePageResult<ReceivableResultVo> invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList);
  136. return HttpResult.ok(invChannelAccountBasePageResult);
  137. }
  138. @ApiOperation("签单日期结算来源表")
  139. @GetMapping("signingSourceResult")
  140. public HttpResult<BasePageResult<SigningSourceResultVo>> signingSourceResult(String yearMonthStr, String insuranceId) {
  141. // 获取当前年月
  142. String startMonth = yearMonthStr + "-01-01";
  143. String endMonth = yearMonthStr + "-12-31";
  144. List<SigningSourceResultVo> invChannelAccountList = invReceivableService.getSigningSourceResult(yearMonthStr, insuranceId,
  145. startMonth, endMonth);
  146. BasePageResult<SigningSourceResultVo> invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList);
  147. return HttpResult.ok(invChannelAccountBasePageResult);
  148. }
  149. @ApiOperation("结算日期结算来源表")
  150. @GetMapping("settlementSourceResult")
  151. public HttpResult<BasePageResult<SettlementSourceResultVo>> settlementSourceResult(String yearMonthStr, String insuranceId) {
  152. // 获取当前年月
  153. List<SettlementSourceResultVo> invChannelAccountList = invReceivableService.getSettlementSourceResult(yearMonthStr, insuranceId);
  154. BasePageResult<SettlementSourceResultVo> invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList);
  155. return HttpResult.ok(invChannelAccountBasePageResult);
  156. }
  157. @ApiOperation("同步应收表与结算表的状态")
  158. @GetMapping("syncStatus")
  159. public HttpResult syncStatus() {
  160. Integer i = invReceivableService.syncStatus();
  161. return HttpResult.ok("同步成功,共同步" + i + "条数据");
  162. }
  163. @ApiOperation("获取保险公司")
  164. @GetMapping("getInsureCompany")
  165. public HttpResult getInsureCompany() {
  166. List<EsmInsCompany> insureCompany = invReceivableService.getInsureCompany();
  167. return HttpResult.ok(insureCompany);
  168. }
  169. @ApiOperation("应收应付表")
  170. @PostMapping("receivableAndSettlement")
  171. public HttpResult<PageResult> receivableAndSettlement(@RequestBody ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) {
  172. Page<ReceivableAndSettlementVo> invChannelAccountList =
  173. invReceivableService.getReceivableAndSettlementPage(receivableAndSettlementQueryVo);
  174. PageResult pageResult = buildPageResponse(invChannelAccountList);
  175. return HttpResult.ok(pageResult);
  176. }
  177. @ApiOperation("导出应收应付表")
  178. @PostMapping("excelReceivableAndSettlement")
  179. public HttpResult excelReceivableAndSettlement(@RequestBody ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) throws IOException {
  180. String uploadPath = this.uploadPath + "/excel/";
  181. Path path = Paths.get(uploadPath);
  182. if (!Files.exists(path)) {
  183. Files.createDirectories(path);
  184. }
  185. List<ReceivableAndSettlementVo> invChannelAccountList =
  186. invReceivableService.getReceivableAndSettlementList(receivableAndSettlementQueryVo);
  187. String fileName = EasyExcelUtils.downExcel(uploadPath, "应收应付表", ReceivableAndSettlementVo.class, invChannelAccountList);
  188. return HttpResult.ok(uploadUrl + "excel/" + fileName);
  189. }
  190. @ApiOperation("数据匹配")
  191. @GetMapping("dataMatching")
  192. public HttpResult dataMatching() {
  193. List<String> licensenos = invReceivableService.dataMatching();
  194. if (!licensenos.isEmpty()) {
  195. StringBuilder msg = new StringBuilder();
  196. for (String licenseno : licensenos) {
  197. msg.append(licenseno).append(",");
  198. }
  199. msg = new StringBuilder(msg.substring(0, msg.length() - 1));
  200. return HttpResult.ok("有" + licensenos.size() + "条数据与应收表数据无法匹配,其中包括:" + msg, true);
  201. }
  202. return HttpResult.ok("", false);
  203. }
  204. @GetMapping("getAccountsReceivable")
  205. public HttpResult getAccountsReceivable(){
  206. return HttpResult.ok("下载成功","/template/finance/accountsReceivable.xlsx");
  207. }
  208. @GetMapping("/getSettlement")
  209. public HttpResult getSettlement(){
  210. return HttpResult.ok("下载成功","/template/finance/settlement.xlsx");
  211. }
  212. }