Ver código fonte

Merge branch 'feat-20231201-settlementproofv2'

lixuesong 1 ano atrás
pai
commit
fc9c57cd12

+ 21 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java

@@ -15,6 +15,7 @@ import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
@@ -28,6 +29,7 @@ import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmPayOffService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
@@ -68,7 +70,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -89,6 +93,7 @@ public class WmPayOffController {
 	private final SysDeptService sysDeptService;
 	private final RedisTemplate<String, Object> redisTemplate;
 	private final SysDictItemService dictItemService;
+	private final SysUserService sysUserService;
 
 	/**
 	 * 财务回退操作
@@ -479,6 +484,11 @@ public class WmPayOffController {
 //			throw new RuntimeException("结算渠道配置为空");
 //		}
 
+		// 查询结算人员信息
+		Set<String> userIds = settleNoteList.stream().map(WmScorePackageSettleNote::getUserId).collect(Collectors.toSet());
+		List<SysUser> userList = sysUserService.listByIds(userIds);
+		Map<Integer, SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+
 		// 导出数据整合
 		// 积分包列表
 		List<SettlementProofModel.PackageDetail> packageDetailList = new ArrayList<>();
@@ -508,6 +518,15 @@ public class WmPayOffController {
 			if (actualAmount.compareTo(BigDecimal.ZERO) > 0) {
 				packageDetail.setActualAmount(String.valueOf(actualAmount));
 			}
+
+			SysUser user = userMap.get(Integer.parseInt(settleNotes.get(0).getUserId()));
+			// 结算人员
+			packageDetail.setTaskUsername(user.getRealname());
+			// 开户行
+			packageDetail.setBankName(user.getBankName());
+			// 银行卡号
+			packageDetail.setBankCardNumber(user.getBankCardNumber());
+
 			packageDetailList.add(packageDetail);
 		}
 		SettlementProofModel settlementProofModel = new SettlementProofModel();
@@ -541,9 +560,9 @@ public class WmPayOffController {
 					// 积分包列表
 					put("package_list", settlementProofModel.getPackageList());
 					if (finalTotalSettleAmount.compareTo(BigDecimal.ZERO) > 0) {
-						// 实际到账金额
+						// 申请金额小计
 						put("total_settle_amount", String.valueOf(finalTotalSettleAmount));
-						// 实际结算金额
+						// 金额大写
 						put("total_settle_amount_cn", AmountToCNUtil.number2CNMontrayUnit(finalTotalSettleAmount));
 					}
 //					put("collection_name", finalCollectionName);

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/SettlementProofModel.java

@@ -52,6 +52,21 @@ public class SettlementProofModel implements Serializable {
          */
         private String scorePackageName;
 
+		/**
+		 * 结算人员
+		 */
+		private String taskUsername;
+
+		/**
+		 * 开户行
+		 */
+		private String bankName;
+
+		/**
+		 * 银行卡号
+		 */
+		private String bankCardNumber;
+
         /**
          * 结算渠道
          */

+ 67 - 0
hnqz-upms/hnqz-upms-biz/src/test/java/com/qunzhixinxi/hnqz/admin/ExportTest.java

@@ -0,0 +1,67 @@
+package com.qunzhixinxi.hnqz.admin;
+
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.SettlementProofModel;
+import com.qunzhixinxi.hnqz.admin.util.OsEnvUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 导出测试
+ *
+ * @author lixuesong
+ * @date 2023/12/01
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = {HnqzAdminApplication.class})
+public class ExportTest {
+
+//	@Test
+	public void testExport() throws Exception {
+		// 服务器模板文件路径
+		String resourcePath = "D:\\li312\\Desktop\\settlement_application_form_template.docx";
+
+		HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
+
+		Configure config = Configure.newBuilder().bind("package_list", policy).build();
+
+		List<SettlementProofModel.PackageDetail> packageList = new ArrayList<>();
+		SettlementProofModel.PackageDetail packageDetail = new SettlementProofModel.PackageDetail();
+		packageDetail.setNumber("666");
+		packageDetail.setScorePackageName("这个积分包名称怎么样12345");
+		packageDetail.setTaskUsername("迪丽热巴");
+		packageDetail.setBankName("中国建设银行");
+		packageDetail.setBankCardNumber("123456789123456789");
+		packageDetail.setSubjectLocation("正启之星");
+		packageDetail.setSettleAmount("100000.00");
+		packageDetail.setActualAmount("100000.00");
+		packageList.add(packageDetail);
+		packageList.add(packageDetail);
+
+		XWPFTemplate template = XWPFTemplate.compile(resourcePath, config).render(
+				new HashMap<String, Object>() {{
+					// 积分包列表
+					put("package_list", packageList);
+					// 实际到账金额
+					put("total_settle_amount", "999999.99");
+					// 实际结算金额
+					put("total_settle_amount_cn", "九十九万九千九百九十九");
+				}}
+		);
+
+		File file = new File("D:\\li312\\Desktop\\temp\\test.docx");
+		FileOutputStream outputStream = new FileOutputStream(file);
+		template.write(outputStream);
+
+	}
+}