package com.ydtech.modules.inv.controller; import com.alibaba.excel.EasyExcel; 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.InvChannelAccount; import com.ydtech.modules.inv.model.po.InvSettlementSource; import com.ydtech.modules.inv.model.po.InvSource; import com.ydtech.modules.inv.model.po.QueryInvChannelAccount; import com.ydtech.modules.inv.model.vo.*; import com.ydtech.modules.inv.service.InvChannelAccountService; import com.ydtech.modules.inv.service.InvReceivableService; import com.ydtech.modules.inv.utils.EasyExcelUtils; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.utils.excel.ExcelUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDate; import java.time.LocalDateTime; 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("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("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("应收结果") @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.toString() + "-01",yearMonth.toString() + "-" + String.valueOf(maxDaysInMonth),insuranceId); BasePageResult invChannelAccountBasePageResult = new BasePageResult<>(0, 0, 0, 0, invChannelAccountList); return HttpResult.ok(invChannelAccountBasePageResult); } @ApiOperation("签单日期结算来源表") @GetMapping("signingSourceResult") public HttpResult> signingSourceResult(String yearMonthStr){ // 获取当前年月 String startMonth = yearMonthStr + "-01-01"; String endMonth = yearMonthStr + "-12-31"; List invChannelAccountList = invReceivableService.getSigningSourceResult(yearMonthStr,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); } }