package com.ydtech.modules.inv.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageResult; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.esm.model.EsmInsCompany; import com.ydtech.modules.inv.model.po.InvSettlementSource; import com.ydtech.modules.inv.model.po.InvSource; import com.ydtech.modules.inv.model.vo.*; import com.ydtech.modules.inv.service.InvReceivableService; import com.ydtech.modules.inv.utils.EasyExcelUtils; import com.ydtech.modules.order.entity.BasePageResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.util.List; /** * @author jianlong * @date 2024-01-05 09:31 */ @Api(tags = "应收应付 - 数据查询", value = "应收应付数据查询") @RequestMapping("/InsReceivable") @RestController public class InvReceivableController extends BaseController { @Autowired private InvReceivableService invReceivableService; @Value("${upload.file.path}") private String uploadPath; @Value("${upload.file.url}") private String uploadUrl; @ApiOperation("应收导入数据分页查询") @PostMapping("receivablePage") public HttpResult receivablePage(@RequestBody InvSourceQueryVo invSourceQueryVo) { IPage recivablePage = invReceivableService.getRecivablePage(invSourceQueryVo); PageResult pageResult = buildPageResponse(recivablePage); return HttpResult.ok(pageResult); } @ApiOperation("应收导入数据修改") @PostMapping("receivableUpdates") public HttpResult updateRecivable(@RequestBody InvSource invSource) { Boolean b = invReceivableService.updateRecivable(invSource); return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败"); } @ApiOperation("应收导入批量数据修改") @PostMapping("receivableUpdateBatch") public HttpResult updateRecivableBatch(@RequestBody InvSource invSource) { Boolean b = invReceivableService.updateRecivableBatch(invSource); return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败"); } @ApiOperation("应收表导出") @PostMapping("exportReceivable") public HttpResult exportReceivable(@RequestBody InvSourceQueryVo invSourceQueryVo) throws IOException { List recivablePage = invReceivableService.getRecivableList(invSourceQueryVo); String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { Files.createDirectories(path); } String fileName = EasyExcelUtils.downExcel(uploadPath, "应收表", InvSource.class, recivablePage); return HttpResult.ok(uploadUrl + "excel/" + fileName); } @ApiOperation("应收导入新增") @PostMapping("addReceivable") public HttpResult addReceivable(@RequestBody InvSource invSource) { Boolean b = invReceivableService.addReceivable(invSource); return b ? HttpResult.ok("新增成功") : HttpResult.error("新增失败"); } @ApiOperation("应收导入删除") @PostMapping("deleteReceivable") public HttpResult deleteReceivable(@RequestBody String[] ids) { Boolean b = invReceivableService.deleteReceivable(ids); return b ? HttpResult.ok("删除成功") : HttpResult.error("删除失败"); } @ApiOperation("结算导入数据分页查询") @PostMapping("settlementPage") public HttpResult settlementPage(@RequestBody InvSettlementSourceQueryVo invSettlementSourceQueryVo) { IPage recivablePage = invReceivableService.getSettlementPage(invSettlementSourceQueryVo); PageResult pageResult = buildPageResponse(recivablePage); return HttpResult.ok(pageResult); } @ApiOperation("结算导入数据修改") @PostMapping("updateSettlement") public HttpResult updateSettlement(@RequestBody InvSettlementSource invSettlementSource) { Boolean b = invReceivableService.updateSettlement(invSettlementSource); return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败"); } @ApiOperation("结算导入数据批量修改") @PostMapping("updateSettlementBatch") public HttpResult updateSettlementBatch(@RequestBody InvSettlementSource invSettlementSource) { Boolean b = invReceivableService.updateSettlementBatch(invSettlementSource); return b ? HttpResult.ok("修改成功") : HttpResult.error("修改失败"); } @ApiOperation("结算导出") @PostMapping("exportSettlement") public HttpResult exportSettlement(@RequestBody InvSettlementSourceQueryVo invSettlementSourceQueryVo) throws IOException { List recivableList = invReceivableService.getSettlementList(invSettlementSourceQueryVo); String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { Files.createDirectories(path); } String fileName = EasyExcelUtils.downExcel(uploadPath, "结算表", InvSettlementSource.class, recivableList); return HttpResult.ok(uploadUrl + "excel/" + fileName); } @ApiOperation("结算导入新增") @PostMapping("addSettlement") public HttpResult addSettlement(@RequestBody InvSettlementSource invSettlementSource){ return invReceivableService.addSettlement(invSettlementSource); } @ApiOperation("结算导入删除") @PostMapping("deleteSettlement") public HttpResult deleteSettlement(@RequestBody String[] ids) { Boolean b = invReceivableService.deleteSettlement(ids); return b ? HttpResult.ok("删除成功") : HttpResult.error("删除失败"); } @ApiOperation("应收结果") @GetMapping("receivableResult") public HttpResult> receivableResult(String yearMonthStr, String insuranceId) { // 获取当前年月 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter); // 获取当前月份的最大天数 int maxDaysInMonth = yearMonth.lengthOfMonth(); List invChannelAccountList = invReceivableService.getReceivableList(yearMonth + "-01", yearMonth + "-" + maxDaysInMonth, insuranceId); BasePageResult invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList); return HttpResult.ok(invChannelAccountBasePageResult); } @ApiOperation("签单日期结算来源表") @GetMapping("signingSourceResult") public HttpResult> signingSourceResult(String yearMonthStr, String insuranceId) { // 获取当前年月 String startMonth = yearMonthStr + "-01-01"; String endMonth = yearMonthStr + "-12-31"; List invChannelAccountList = invReceivableService.getSigningSourceResult(yearMonthStr, insuranceId, startMonth, endMonth); BasePageResult invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList); return HttpResult.ok(invChannelAccountBasePageResult); } @ApiOperation("结算日期结算来源表") @GetMapping("settlementSourceResult") public HttpResult> settlementSourceResult(String yearMonthStr, String insuranceId) { // 获取当前年月 List invChannelAccountList = invReceivableService.getSettlementSourceResult(yearMonthStr, insuranceId); BasePageResult invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList); return HttpResult.ok(invChannelAccountBasePageResult); } @ApiOperation("同步应收表与结算表的状态") @GetMapping("syncStatus") public HttpResult syncStatus() { Integer i = invReceivableService.syncStatus(); return HttpResult.ok("同步成功,共同步" + i + "条数据"); } @ApiOperation("获取保险公司") @GetMapping("getInsureCompany") public HttpResult getInsureCompany() { List insureCompany = invReceivableService.getInsureCompany(); return HttpResult.ok(insureCompany); } @ApiOperation("应收应付表") @PostMapping("receivableAndSettlement") public HttpResult receivableAndSettlement(@RequestBody ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) { Page invChannelAccountList = invReceivableService.getReceivableAndSettlementPage(receivableAndSettlementQueryVo); PageResult pageResult = buildPageResponse(invChannelAccountList); return HttpResult.ok(pageResult); } @ApiOperation("导出应收应付表") @PostMapping("excelReceivableAndSettlement") public HttpResult excelReceivableAndSettlement(@RequestBody ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) throws IOException { String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { Files.createDirectories(path); } List invChannelAccountList = invReceivableService.getReceivableAndSettlementList(receivableAndSettlementQueryVo); String fileName = EasyExcelUtils.downExcel(uploadPath, "应收应付表", ReceivableAndSettlementVo.class, invChannelAccountList); return HttpResult.ok(uploadUrl + "excel/" + fileName); } @ApiOperation("数据匹配") @GetMapping("dataMatching") public HttpResult dataMatching() { List licensenos = invReceivableService.dataMatching(); if (!licensenos.isEmpty()) { StringBuilder msg = new StringBuilder(); for (String licenseno : licensenos) { msg.append(licenseno).append(","); } msg = new StringBuilder(msg.substring(0, msg.length() - 1)); return HttpResult.ok("有" + licensenos.size() + "条数据与应收表数据无法匹配,其中包括:" + msg, true); } return HttpResult.ok("", false); } @GetMapping("getAccountsReceivable") public HttpResult getAccountsReceivable(){ return HttpResult.ok("下载成功","/template/finance/accountsReceivable.xlsx"); } @GetMapping("/getSettlement") public HttpResult getSettlement(){ return HttpResult.ok("下载成功","/template/finance/settlement.xlsx"); } }