|
@@ -2,24 +2,32 @@ package com.qunzhixinxi.hnqz.admin.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.deepoove.poi.XWPFTemplate;
|
|
|
+import com.deepoove.poi.config.Configure;
|
|
|
+import com.deepoove.poi.data.RowRenderData;
|
|
|
+import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
|
|
|
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.SettlementProofModel;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.model.excel.WmScorePackageSettleExcelModel;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.PackageFinishStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
|
|
|
-import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmPayOffService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.util.OsEnvUtils;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
import com.qunzhixinxi.hnqz.common.ding.enums.DingEnum;
|
|
|
import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
|
|
@@ -41,9 +49,16 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.validation.Valid;
|
|
|
+import java.io.BufferedOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.Paths;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -67,6 +82,7 @@ public class WmPayOffController {
|
|
|
|
|
|
private final WmPayOffService wmPayOffService;
|
|
|
private final WmScorePackageService wmScorePackageService;
|
|
|
+ private final WmScorePackageSettleNoteService wmScorePackageSettleNoteService;
|
|
|
private final RedisTemplate<String, Object> redisTemplate;
|
|
|
private final SysDictItemService dictItemService;
|
|
|
|
|
@@ -377,6 +393,70 @@ public class WmPayOffController {
|
|
|
return exportList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 导出结算单
|
|
|
+ *
|
|
|
+ * @param packageIds 积分包ID
|
|
|
+ * @return {@link R}<{@link ?}> 结果
|
|
|
+ */
|
|
|
+ @SysLog("导出结算单")
|
|
|
+ @GetMapping("/exportSettlementProof")
|
|
|
+ public void exportSettlementProof(@RequestParam("packageIds") List<String> packageIds, HttpServletResponse response) {
|
|
|
+ List<WmScorePackage> scorePackageList = wmScorePackageService.listByIds(packageIds);
|
|
|
+ List<WmScorePackageSettleNote> settleNoteList =
|
|
|
+ wmScorePackageSettleNoteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
|
|
|
+ .eq(WmScorePackageSettleNote::getPackageId, packageIds));
|
|
|
+
|
|
|
+ // 导出模板渲染
|
|
|
+ // 拼装数据
|
|
|
+ SettlementProofModel.PackageDetail packageDetail = new SettlementProofModel.PackageDetail();
|
|
|
+ packageDetail.setScorePackageName("111");
|
|
|
+ packageDetail.setSubjectLocation("12312");
|
|
|
+ packageDetail.setActualAmount("11");
|
|
|
+ packageDetail.setSettleAmount("123");
|
|
|
+ packageDetail.setNumber("1");
|
|
|
+ SettlementProofModel settlementProofModel = new SettlementProofModel();
|
|
|
+ settlementProofModel.setPackageList(Collections.singletonList(packageDetail));
|
|
|
+
|
|
|
+ // 服务器模板文件路径
|
|
|
+ String resourcePath = OsEnvUtils.getEachEnvPaths().get("EXCEL_FILE_PATH") + "settlement_application_form_template.docx";
|
|
|
+
|
|
|
+ HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
|
|
|
+
|
|
|
+ Configure config = Configure.newBuilder().bind("package_list", policy).build();
|
|
|
+
|
|
|
+ XWPFTemplate template = XWPFTemplate.compile(resourcePath, config).render(
|
|
|
+ new HashMap<String, Object>() {{
|
|
|
+ put("package_list", settlementProofModel.getPackageList());
|
|
|
+ put("total_settle_amount", "111");
|
|
|
+ put("total_settle_amount_cn", "222");
|
|
|
+ put("collection_name", "222");
|
|
|
+ put("collection_account", "333");
|
|
|
+ put("collection_bank_name", "444");
|
|
|
+ }}
|
|
|
+ );
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ //清空response
|
|
|
+ response.reset();
|
|
|
+ //设置response的Header
|
|
|
+ response.addHeader("Content-Disposition",
|
|
|
+ String.format("attachment;filename=请款申请单(%s)-%s.docx", 123123, DateUtil.format(LocalDateTime.now(),
|
|
|
+ DatePattern.PURE_DATETIME_PATTERN)));
|
|
|
+ response.setContentType("application/msword");
|
|
|
+ OutputStream os = new BufferedOutputStream(response.getOutputStream());
|
|
|
+
|
|
|
+ template.write(os);
|
|
|
+
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("导出失败", e);
|
|
|
+ throw new RuntimeException("导出失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation(value = "结算", notes = "结算")
|
|
|
@SysLog("结算")
|
|
|
@PostMapping("/saveSettleInfo")
|