InvExternalBillsController.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package com.ydtech.modules.inv.controller;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
  5. import cn.hutool.core.bean.BeanUtil;
  6. import cn.hutool.core.bean.copier.CopyOptions;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.metadata.IPage;
  9. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  10. import com.ydtech.core.page.HttpResult;
  11. import com.ydtech.core.page.PageRequest;
  12. import com.ydtech.core.page.PageResult;
  13. import com.ydtech.exception.SystemException;
  14. import com.ydtech.modules.base.controller.BaseController;
  15. import com.ydtech.modules.base.model.dto.PageDto;
  16. import com.ydtech.modules.base.model.dto.TestDto;
  17. import com.ydtech.modules.base.model.vo.PageVo;
  18. import com.ydtech.modules.esm.model.EsmInsCompany;
  19. import com.ydtech.modules.esm.service.EsmInsCompanyService;
  20. import com.ydtech.modules.fnc.vo.FncVoucherVo;
  21. import com.ydtech.modules.ins.utils.ExcelStyleUtil;
  22. import com.ydtech.modules.inv.model.InvBaseExternalBillsDetails;
  23. import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
  24. import com.ydtech.modules.inv.model.InvExternalBills;
  25. import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
  26. import com.ydtech.modules.inv.model.dto.InvInsCompanyDto;
  27. import com.ydtech.modules.inv.model.dto.InvInsImportDto;
  28. import com.ydtech.modules.inv.model.vo.InsChannelMatchVo;
  29. import com.ydtech.modules.inv.model.vo.InvInsCompanyExportVo;
  30. import com.ydtech.modules.inv.model.vo.InvInsCompanyVo;
  31. import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
  32. import com.ydtech.modules.inv.model.vo.req.InvInsExternalBillsReqVO;
  33. import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
  34. import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
  35. import com.ydtech.modules.inv.service.InvExternalBillsService;
  36. import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
  37. import com.ydtech.utils.StringUtils;
  38. import com.ydtech.utils.excel.ExcelEasypoiUtils;
  39. import com.ydtech.utils.excel.ExcelUtils2;
  40. import io.swagger.annotations.*;
  41. import org.apache.commons.lang3.ObjectUtils;
  42. import org.apache.poi.ss.usermodel.Workbook;
  43. import org.springframework.beans.factory.annotation.Autowired;
  44. import org.springframework.web.bind.annotation.*;
  45. import org.springframework.web.multipart.MultipartFile;
  46. import javax.servlet.http.HttpServletRequest;
  47. import javax.servlet.http.HttpServletResponse;
  48. import java.io.IOException;
  49. import java.io.UnsupportedEncodingException;
  50. import java.util.ArrayList;
  51. import java.util.Date;
  52. import java.util.List;
  53. /**
  54. * 外部单据控制层
  55. *
  56. * @author: lig
  57. * @date: 2023-05-31
  58. */
  59. @Api(tags = "财务 - 外部票据控制层")
  60. @RestController
  61. @RequestMapping("api/inv/insExternalBills")
  62. public class InvExternalBillsController extends BaseController {
  63. @Autowired
  64. private InvExternalBillsService invExternalBillsService;
  65. @Autowired
  66. private InvInsExternalBillsDetailsService invInsExternalBillsDetailsService;
  67. @Autowired
  68. private InvChannelsExternalBillsDetailsService invChannelsExternalBillsDetailsService;
  69. @Autowired
  70. private EsmInsCompanyService esmInsCompanyService;
  71. /**
  72. * 分页查询
  73. *
  74. * @param reqVo
  75. * @return
  76. */
  77. @ApiOperation(value = "分页查询")
  78. @PostMapping(value = "/queryPage")
  79. public HttpResult<PageResult<InvExternalBills>> queryPage(@RequestBody InvInsExternalBillsReqVO reqVo) {
  80. LambdaQueryWrapper<InvExternalBills> lqw = new LambdaQueryWrapper();
  81. lqw.eq(StringUtils.isNotEmpty(reqVo.getImportStatus()), InvExternalBills::getImportStatus, reqVo.getImportStatus());
  82. lqw.between(StringUtils.isNotEmpty(reqVo.getImportStartTime()) && StringUtils.isNotEmpty(reqVo.getImportEndTime()), InvExternalBills::getCreateTime, reqVo.getImportStartTime(), reqVo.getImportEndTime());
  83. lqw.eq(InvExternalBills::getFlag, reqVo.getFlag());
  84. lqw.eq(StringUtils.isNotEmpty(reqVo.getInsCompanyId()), InvExternalBills::getInsCompanyId, reqVo.getInsCompanyId());
  85. lqw.eq(StringUtils.isNotEmpty(reqVo.getId()), InvExternalBills::getId, reqVo.getId());
  86. Page p = PageRequest.buildPageRequestByVo(reqVo);
  87. IPage<InvExternalBills> pResult = invExternalBillsService.page(p, lqw);
  88. //传入查询条件
  89. PageResult<InvExternalBills> pageResult = PageResult.buildPageResult(pResult);
  90. return HttpResult.ok(pageResult);
  91. }
  92. @PostMapping("/importData")
  93. @ApiOperation(value = "excel导入数据")
  94. @ApiImplicitParams({
  95. @ApiImplicitParam(name = "file", value = "excel文件", required = true, dataType = "__file")
  96. })
  97. // public HttpResult importData( InvInsImportDto importDto) {
  98. public HttpResult importData(@RequestPart MultipartFile file, InvInsImportDto importDto) {
  99. // public HttpResult importData(@RequestBody InvInsImportDto importDto) {
  100. if (importDto.getFlag().equals("1") && StringUtils.isEmpty(importDto.getInsCompanyId()))
  101. return HttpResult.error("保险公司导入模式下,保险公司ID为必填。");
  102. InvExternalBills iieb = null;
  103. if (StringUtils.isNotEmpty(importDto.getBatchNum())) {
  104. iieb = invExternalBillsService.getById(importDto.getBatchNum());
  105. //删除详细数据
  106. invInsExternalBillsDetailsService.deleteByBatchNum(iieb.getId());
  107. } else {
  108. iieb = new InvExternalBills();
  109. iieb.setCreateTime(new Date());
  110. iieb.setCreateBy(getUserId());
  111. iieb.setImportStatus("1");
  112. iieb.setFlag(importDto.getFlag());
  113. // //渠道
  114. // iieb.setBusinessChannels(importDto.getBusinessChannels());
  115. invExternalBillsService.save(iieb);
  116. }
  117. //数据导入
  118. invExternalBillsService.importData(importDto, iieb, file);
  119. return HttpResult.ok("导入成功");
  120. }
  121. @ApiOperation(value = "修改")
  122. @ApiResponses({
  123. @ApiResponse(code = 500, message = "出现异常"),
  124. @ApiResponse(code = 200, message = "请求成功")
  125. })
  126. @PostMapping(value = "/edit")
  127. public HttpResult edit(@RequestBody InvExternalBills invExternalBills, HttpServletRequest request) {
  128. return HttpResult.ok(invExternalBillsService.updateById(invExternalBills));
  129. }
  130. @ApiOperation(value = "单条删除通过批次号")
  131. @ApiResponses({
  132. @ApiResponse(code = 500, message = "出现异常"),
  133. @ApiResponse(code = 200, message = "请求成功")
  134. })
  135. @ApiImplicitParams({
  136. @ApiImplicitParam(name = "batchNum", value = "批次号", required = true)
  137. , @ApiImplicitParam(name = "flag", value = "标识(1 保险公司模板导入 2 渠道模板导入)", required = true)})
  138. @DeleteMapping(value = "/deleteByBatchNum")
  139. public HttpResult deleteByBatchNum(String batchNum, String flag) {
  140. if (flag.equals("1")) {
  141. invInsExternalBillsDetailsService.deleteByBatchNum(batchNum);
  142. }
  143. if (flag.equals("2")) {
  144. invChannelsExternalBillsDetailsService.deleteByBatchNum(batchNum);
  145. }
  146. return HttpResult.ok(invExternalBillsService.removeById(batchNum));
  147. }
  148. @PostMapping("/channelMatchingIns")
  149. @ApiOperation(value = "渠道匹配保险公司数据(分页)")
  150. public HttpResult<PageVo<InvBaseChannelMatchInsResVO>> channelMatchIns(@RequestBody PageDto<InvChannelExternalBillsDetailsReqVO> pageDto) {
  151. return HttpResult.ok(invChannelsExternalBillsDetailsService.gainChannelMatchIns(pageDto));
  152. }
  153. // @PostMapping("/channelMatchingIns")
  154. // @ApiOperation(value = "渠道匹配保险公司数据(分页)")
  155. // public HttpResult<PageResult<InvBaseChannelMatchInsResVO>> channelMatchIns(@RequestBody InvChannelExternalBillsDetailsReqVO reqVo) {
  156. //
  157. // return HttpResult.ok(invChannelsExternalBillsDetailsService.gainChannelMatchIns(reqVo));
  158. //
  159. // }
  160. @GetMapping(value = "/export/{batchNum}")
  161. @ApiOperation(value = "保司数据导出(包含费用)")
  162. @ApiImplicitParams({
  163. @ApiImplicitParam(name = "batchNum", value = "批次号", required = true, dataType = "String")
  164. })
  165. public HttpResult export(@PathVariable String batchNum, HttpServletRequest request, HttpServletResponse response) {
  166. LambdaQueryWrapper<InvInsExternalBillsDetails> lqw = new LambdaQueryWrapper();
  167. lqw.eq(InvInsExternalBillsDetails::getBatchNum, batchNum);
  168. List<InvInsExternalBillsDetails> list = invInsExternalBillsDetailsService.list(lqw);
  169. List<InvInsCompanyExportVo> listVo = new ArrayList<>();
  170. list.stream().forEach(a -> {
  171. InvInsCompanyExportVo vo = new InvInsCompanyExportVo();
  172. vo.setMliftaPolicyNum(a.getMliftaPolicyNum());
  173. vo.setCipPolicyNum(a.getCipPolicyNum());
  174. vo.setApplicant(a.getApplicant());
  175. vo.setPlateNum(a.getPlateNum());
  176. vo.setPayDate(a.getPayDate());
  177. vo.setMlifta(a.getMlifta());
  178. vo.setVavt(a.getVavt());
  179. vo.setCip(a.getCip());
  180. vo.setOther(a.getOther());
  181. vo.setMliftaCost(a.getMliftaCost());
  182. vo.setVavtCost(a.getVavtCost());
  183. vo.setCipCost(a.getCipCost());
  184. vo.setInsCompany(a.getInsCompany());
  185. listVo.add(vo);
  186. });
  187. String fileName = batchNum + "-保司数据导出";
  188. try {
  189. ExcelEasypoiUtils.exportExcel(listVo, InvInsCompanyExportVo.class, fileName, response);
  190. } catch (IOException e) {
  191. throw new RuntimeException(e);
  192. }
  193. return HttpResult.ok();
  194. }
  195. @PostMapping(value = "/synthesize")
  196. @ApiOperation(value = "综合查询")
  197. public HttpResult<PageVo<InvInsCompanyVo>> synthesize(@RequestBody PageDto<InvInsCompanyDto> pageDto) {
  198. return HttpResult.ok(invExternalBillsService.gainSynthesizePage(pageDto));
  199. }
  200. }