|
|
@@ -16,8 +16,10 @@ import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import shop.alien.entity.result.R;
|
|
|
import shop.alien.entity.store.LawFirm;
|
|
|
+import shop.alien.entity.store.LawFirmPayment;
|
|
|
import shop.alien.entity.store.excelVo.LawFirmExcelVo;
|
|
|
import shop.alien.entity.store.excelVo.util.ExcelHeader;
|
|
|
+import shop.alien.lawyer.service.LawFirmPaymentService;
|
|
|
import shop.alien.lawyer.service.LawFirmService;
|
|
|
import shop.alien.mapper.LawFirmMapper;
|
|
|
|
|
|
@@ -47,6 +49,7 @@ import java.util.stream.Collectors;
|
|
|
public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> implements LawFirmService {
|
|
|
|
|
|
private final LawFirmMapper lawFirmMapper;
|
|
|
+ private final LawFirmPaymentService lawFirmPaymentService;
|
|
|
|
|
|
@Override
|
|
|
public R<IPage<LawFirm>> getLawFirmList(int pageNum, int pageSize, String firmName, Integer status) {
|
|
|
@@ -68,21 +71,129 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
@Override
|
|
|
public R<LawFirm> addLawFirm(LawFirm lawFirm) {
|
|
|
log.info("LawFirmServiceImpl.addLawFirm?lawFirm={}", lawFirm);
|
|
|
+
|
|
|
+ // 校验收款账号唯一性
|
|
|
+ if (lawFirm.getPaymentList() != null && !lawFirm.getPaymentList().isEmpty()) {
|
|
|
+ for (LawFirmPayment payment : lawFirm.getPaymentList()) {
|
|
|
+ if (StringUtils.hasText(payment.getPaymentAccount())) {
|
|
|
+ // 检查收款账号是否已存在
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(LawFirmPayment::getPaymentAccount, payment.getPaymentAccount());
|
|
|
+ queryWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ long count = lawFirmPaymentService.count(queryWrapper);
|
|
|
+ if (count > 0) {
|
|
|
+ return R.fail("收款账号[" + payment.getPaymentAccount() + "]已存在,不能重复添加");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存主表
|
|
|
boolean result = this.save(lawFirm);
|
|
|
- if (result) {
|
|
|
- return R.data(lawFirm);
|
|
|
+ if (!result) {
|
|
|
+ return R.fail("新增失败");
|
|
|
}
|
|
|
- return R.fail("新增失败");
|
|
|
+
|
|
|
+ // 保存子表数据
|
|
|
+ if (lawFirm.getPaymentList() != null && !lawFirm.getPaymentList().isEmpty()) {
|
|
|
+ for (LawFirmPayment payment : lawFirm.getPaymentList()) {
|
|
|
+ try {
|
|
|
+ // 创建新的对象,避免污染原对象
|
|
|
+ LawFirmPayment newPayment = new LawFirmPayment();
|
|
|
+ newPayment.setFirmId(lawFirm.getId());
|
|
|
+ newPayment.setPaymentAccount(payment.getPaymentAccount().trim());
|
|
|
+ if (StringUtils.hasText(payment.getAddress())) {
|
|
|
+ newPayment.setAddress(payment.getAddress().trim());
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean saveResult = lawFirmPaymentService.save(newPayment);
|
|
|
+ if (!saveResult) {
|
|
|
+ log.error("保存收款账号失败,firmId={}, paymentAccount={}", lawFirm.getId(), payment.getPaymentAccount());
|
|
|
+ return R.fail("保存收款账号失败:" + payment.getPaymentAccount());
|
|
|
+ }
|
|
|
+ log.info("保存收款账号成功,firmId={}, paymentAccount={}, id={}", lawFirm.getId(), payment.getPaymentAccount(), newPayment.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("保存收款账号异常,firmId={}, paymentAccount={}", lawFirm.getId(), payment.getPaymentAccount(), e);
|
|
|
+ return R.fail("保存收款账号异常:" + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(lawFirm);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public R<LawFirm> editLawFirm(LawFirm lawFirm) {
|
|
|
log.info("LawFirmServiceImpl.editLawFirm?lawFirm={}", lawFirm);
|
|
|
+
|
|
|
+ if (lawFirm.getId() == null) {
|
|
|
+ return R.fail("律所ID不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验收款账号唯一性(排除当前律所的账号)
|
|
|
+ if (lawFirm.getPaymentList() != null && !lawFirm.getPaymentList().isEmpty()) {
|
|
|
+ for (LawFirmPayment payment : lawFirm.getPaymentList()) {
|
|
|
+ if (StringUtils.hasText(payment.getPaymentAccount())) {
|
|
|
+ // 检查收款账号是否已存在(排除当前律所和当前记录)
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(LawFirmPayment::getPaymentAccount, payment.getPaymentAccount());
|
|
|
+ queryWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ queryWrapper.ne(LawFirmPayment::getFirmId, lawFirm.getId());
|
|
|
+ // 如果是更新操作,排除当前记录
|
|
|
+ if (payment.getId() != null) {
|
|
|
+ queryWrapper.ne(LawFirmPayment::getId, payment.getId());
|
|
|
+ }
|
|
|
+ long count = lawFirmPaymentService.count(queryWrapper);
|
|
|
+ if (count > 0) {
|
|
|
+ return R.fail("收款账号[" + payment.getPaymentAccount() + "]已存在,不能重复添加");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新主表
|
|
|
boolean result = this.updateById(lawFirm);
|
|
|
- if (result) {
|
|
|
- return R.data(lawFirm);
|
|
|
+ if (!result) {
|
|
|
+ return R.fail("修改失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理子表数据
|
|
|
+ if (lawFirm.getPaymentList() != null) {
|
|
|
+ // 查询现有的收款账号记录
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> existingWrapper = new LambdaQueryWrapper<>();
|
|
|
+ existingWrapper.eq(LawFirmPayment::getFirmId, lawFirm.getId());
|
|
|
+ existingWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ List<LawFirmPayment> existingPayments = lawFirmPaymentService.list(existingWrapper);
|
|
|
+
|
|
|
+ // 收集前端传来的收款账号ID
|
|
|
+ Set<Integer> incomingIds = lawFirm.getPaymentList().stream()
|
|
|
+ .filter(p -> p.getId() != null)
|
|
|
+ .map(LawFirmPayment::getId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 删除不在前端列表中的记录(逻辑删除)
|
|
|
+ for (LawFirmPayment existing : existingPayments) {
|
|
|
+ if (!incomingIds.contains(existing.getId())) {
|
|
|
+ existing.setDeleteFlag(1);
|
|
|
+ lawFirmPaymentService.updateById(existing);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增或更新收款账号记录
|
|
|
+ for (LawFirmPayment payment : lawFirm.getPaymentList()) {
|
|
|
+ payment.setFirmId(lawFirm.getId());
|
|
|
+ if (payment.getId() != null) {
|
|
|
+ // 更新
|
|
|
+ payment.setDeleteFlag(0);
|
|
|
+ lawFirmPaymentService.updateById(payment);
|
|
|
+ } else {
|
|
|
+ // 新增
|
|
|
+ payment.setDeleteFlag(0);
|
|
|
+ lawFirmPaymentService.save(payment);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return R.fail("修改失败");
|
|
|
+
|
|
|
+ return R.data(lawFirm);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -204,13 +315,20 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
|
|
|
for (Map.Entry<String, List<LawFirm>> entry : firmNameMap.entrySet()) {
|
|
|
List<LawFirm> firms = entry.getValue();
|
|
|
- // 合并所有账号
|
|
|
- String allPaymentAccounts = firms.stream()
|
|
|
- .map(LawFirm::getPaymentAccount)
|
|
|
- .filter(Objects::nonNull)
|
|
|
- .filter(acc -> !acc.trim().isEmpty())
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.joining(","));
|
|
|
+ // 合并所有账号(从子表获取)
|
|
|
+ Set<String> accountSet = new HashSet<>();
|
|
|
+ for (LawFirm firm : firms) {
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> paymentWrapper = new LambdaQueryWrapper<>();
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getFirmId, firm.getId());
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ List<LawFirmPayment> payments = lawFirmPaymentService.list(paymentWrapper);
|
|
|
+ for (LawFirmPayment payment : payments) {
|
|
|
+ if (StringUtils.hasText(payment.getPaymentAccount())) {
|
|
|
+ accountSet.add(payment.getPaymentAccount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String allPaymentAccounts = String.join(",", accountSet);
|
|
|
|
|
|
// 为每个账号创建一行(如果账号为空,至少创建一行)
|
|
|
if (firms.isEmpty()) {
|
|
|
@@ -389,25 +507,19 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
|
|
|
// 检查数据库中是否已存在这些账号
|
|
|
if (!allImportAccounts.isEmpty()) {
|
|
|
- // 查询数据库中所有已存在的收款账号
|
|
|
- LambdaQueryWrapper<LawFirm> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(LawFirm::getDeleteFlag, 0);
|
|
|
- queryWrapper.isNotNull(LawFirm::getPaymentAccount);
|
|
|
- queryWrapper.ne(LawFirm::getPaymentAccount, "");
|
|
|
- List<LawFirm> existingLawFirms = this.list(queryWrapper);
|
|
|
+ // 查询数据库中所有已存在的收款账号(从子表查询)
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> paymentWrapper = new LambdaQueryWrapper<>();
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ paymentWrapper.isNotNull(LawFirmPayment::getPaymentAccount);
|
|
|
+ paymentWrapper.ne(LawFirmPayment::getPaymentAccount, "");
|
|
|
+ List<LawFirmPayment> existingPayments = lawFirmPaymentService.list(paymentWrapper);
|
|
|
|
|
|
// 收集数据库中所有已存在的账号
|
|
|
Set<String> existingAccounts = new HashSet<>();
|
|
|
- for (LawFirm firm : existingLawFirms) {
|
|
|
- String paymentAccount = firm.getPaymentAccount();
|
|
|
+ for (LawFirmPayment payment : existingPayments) {
|
|
|
+ String paymentAccount = payment.getPaymentAccount();
|
|
|
if (StringUtils.hasText(paymentAccount)) {
|
|
|
- String[] accounts = paymentAccount.split(",");
|
|
|
- for (String account : accounts) {
|
|
|
- String trimmedAccount = account.trim();
|
|
|
- if (!trimmedAccount.isEmpty()) {
|
|
|
- existingAccounts.add(trimmedAccount);
|
|
|
- }
|
|
|
- }
|
|
|
+ existingAccounts.add(paymentAccount.trim());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -448,7 +560,29 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
// 使用第一个数据作为主数据
|
|
|
LawFirmExcelVo firstVo = voList.get(0);
|
|
|
LawFirm lawFirm = convertToLawFirm(firstVo);
|
|
|
- lawFirm.setPaymentAccount(paymentAccounts);
|
|
|
+
|
|
|
+ // 保存主表
|
|
|
+ boolean saveResult = this.save(lawFirm);
|
|
|
+ if (!saveResult) {
|
|
|
+ importErrors.add("律所[" + firmName + "]保存失败");
|
|
|
+ failCount++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存子表收款账号
|
|
|
+ if (StringUtils.hasText(paymentAccounts)) {
|
|
|
+ String[] accounts = paymentAccounts.split(",");
|
|
|
+ for (String account : accounts) {
|
|
|
+ String trimmedAccount = account.trim();
|
|
|
+ if (!trimmedAccount.isEmpty()) {
|
|
|
+ LawFirmPayment payment = new LawFirmPayment();
|
|
|
+ payment.setFirmId(lawFirm.getId());
|
|
|
+ payment.setPaymentAccount(trimmedAccount);
|
|
|
+ payment.setDeleteFlag(0);
|
|
|
+ lawFirmPaymentService.save(payment);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 校验统一社会信用代码是否已存在
|
|
|
// LambdaQueryWrapper<LawFirm> creditCodeWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -465,33 +599,12 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
if (lawFirm.getStatus() == null) {
|
|
|
lawFirm.setStatus(1);
|
|
|
}
|
|
|
-// if (lawFirm.getCertificationStatus() == null) {
|
|
|
-// lawFirm.setCertificationStatus(0);
|
|
|
-// }
|
|
|
if (lawFirm.getDeleteFlag() == null) {
|
|
|
lawFirm.setDeleteFlag(0);
|
|
|
}
|
|
|
-// if (lawFirm.getIsRecommended() == null) {
|
|
|
-// lawFirm.setIsRecommended(0);
|
|
|
-// }
|
|
|
-// if (lawFirm.getLawyerCount() == null) {
|
|
|
-// lawFirm.setLawyerCount(0);
|
|
|
-// }
|
|
|
-// if (lawFirm.getPartnerCount() == null) {
|
|
|
-// lawFirm.setPartnerCount(0);
|
|
|
-// }
|
|
|
-// if (lawFirm.getPlatformCommissionRatio() == null) {
|
|
|
-// lawFirm.setPlatformCommissionRatio(new BigDecimal("3.00"));
|
|
|
-// }
|
|
|
|
|
|
- // 保存
|
|
|
- boolean result = this.save(lawFirm);
|
|
|
- if (result) {
|
|
|
- successCount++;
|
|
|
- } else {
|
|
|
- importErrors.add("律所[" + firmName + "]保存失败");
|
|
|
- failCount++;
|
|
|
- }
|
|
|
+ // 保存主表(已在上面保存)
|
|
|
+ successCount++;
|
|
|
}
|
|
|
|
|
|
String resultMsg = String.format("导入完成:成功%d条,失败%d条", successCount, failCount);
|
|
|
@@ -881,6 +994,13 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
return R.fail("律所已被删除");
|
|
|
}
|
|
|
|
|
|
+ // 查询收款账号列表
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> paymentWrapper = new LambdaQueryWrapper<>();
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getFirmId, id);
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ List<LawFirmPayment> paymentList = lawFirmPaymentService.list(paymentWrapper);
|
|
|
+ lawFirm.setPaymentList(paymentList);
|
|
|
+
|
|
|
return R.data(lawFirm, "查询成功");
|
|
|
}
|
|
|
|
|
|
@@ -938,6 +1058,45 @@ public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量填充律所的收款账号列表
|
|
|
+ *
|
|
|
+ * @param lawFirmList 律所列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void fillPaymentList(List<LawFirm> lawFirmList) {
|
|
|
+ if (lawFirmList == null || lawFirmList.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 收集所有律所ID
|
|
|
+ List<Integer> firmIds = lawFirmList.stream()
|
|
|
+ .map(LawFirm::getId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (firmIds.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量查询所有收款账号
|
|
|
+ LambdaQueryWrapper<LawFirmPayment> paymentWrapper = new LambdaQueryWrapper<>();
|
|
|
+ paymentWrapper.in(LawFirmPayment::getFirmId, firmIds);
|
|
|
+ paymentWrapper.eq(LawFirmPayment::getDeleteFlag, 0);
|
|
|
+ List<LawFirmPayment> allPayments = lawFirmPaymentService.list(paymentWrapper);
|
|
|
+
|
|
|
+ // 按律所ID分组
|
|
|
+ Map<Integer, List<LawFirmPayment>> paymentMap = allPayments.stream()
|
|
|
+ .collect(Collectors.groupingBy(LawFirmPayment::getFirmId));
|
|
|
+
|
|
|
+ // 为每个律所设置收款账号列表
|
|
|
+ lawFirmList.forEach(lawFirm -> {
|
|
|
+ List<LawFirmPayment> paymentList = paymentMap.getOrDefault(lawFirm.getId(), Collections.emptyList());
|
|
|
+ lawFirm.setPaymentList(paymentList);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|