|
|
@@ -37,7 +37,6 @@ import org.springblade.los.basic.fees.entity.BFees;
|
|
|
import org.springblade.los.basic.fees.service.IBFeesService;
|
|
|
import org.springblade.los.billno.entity.BusinessBillNo;
|
|
|
import org.springblade.los.billno.service.IBusinessBillNoService;
|
|
|
-import org.springblade.los.business.aea.entity.AeaBills;
|
|
|
import org.springblade.los.business.files.entity.FilesCenter;
|
|
|
import org.springblade.los.business.files.service.IFilesCenterService;
|
|
|
import org.springblade.los.check.dto.LosAuditProecessDTO;
|
|
|
@@ -50,19 +49,20 @@ import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
import org.springblade.los.finance.fee.entity.FinAccBills;
|
|
|
import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
import org.springblade.los.finance.fee.service.IFinAccBillsService;
|
|
|
+import org.springblade.los.finance.invoices.entity.FinInvoices;
|
|
|
+import org.springblade.los.finance.invoices.entity.FinInvoicesItems;
|
|
|
+import org.springblade.los.finance.invoices.service.IFinInvoicesItemsService;
|
|
|
+import org.springblade.los.finance.invoices.service.IFinInvoicesService;
|
|
|
import org.springblade.los.finance.stl.entity.FinStlBills;
|
|
|
import org.springblade.los.finance.stl.entity.FinStlBillsItems;
|
|
|
import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
|
|
|
import org.springblade.los.finance.stl.service.IFinStlBillsService;
|
|
|
-import org.springblade.los.trade.entity.AdvanceCharge;
|
|
|
-import org.springblade.los.trade.entity.Agent;
|
|
|
-import org.springblade.los.trade.entity.AgentItems;
|
|
|
-import org.springblade.los.trade.entity.Record;
|
|
|
+import org.springblade.los.trade.entity.*;
|
|
|
import org.springblade.los.trade.mapper.AgentMapper;
|
|
|
+import org.springblade.los.trade.service.IAdvanceChargeItemService;
|
|
|
import org.springblade.los.trade.service.IAdvanceChargeService;
|
|
|
import org.springblade.los.trade.service.IAgentItemsService;
|
|
|
import org.springblade.los.trade.service.IAgentService;
|
|
|
-import org.springblade.los.trade.service.IRecordService;
|
|
|
import org.springblade.los.trade.vo.AgentVO;
|
|
|
import org.springblade.system.entity.Dept;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
@@ -100,8 +100,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
|
|
|
private final IFilesCenterService filesCenterService;
|
|
|
|
|
|
- private final IRecordService recordService;
|
|
|
-
|
|
|
private final ISysClient sysClient;
|
|
|
|
|
|
private final IUserClient userClient;
|
|
|
@@ -122,10 +120,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
|
|
|
private final IAdvanceChargeService advanceChargeService;
|
|
|
|
|
|
+ private final IAdvanceChargeItemService advanceChargeItemService;
|
|
|
+
|
|
|
private final IFinStlBillsService finStlBillsService;
|
|
|
|
|
|
private final IFinStlBillsItemsService finStlBillsItemsService;
|
|
|
|
|
|
+ private final IFinInvoicesService finInvoicesService;
|
|
|
+
|
|
|
+ private final IFinInvoicesItemsService finInvoicesItemsService;
|
|
|
+
|
|
|
private final IBCorpsBankService bCorpsBankService;
|
|
|
|
|
|
private final IMessageClient messageClient;
|
|
|
@@ -160,27 +164,119 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
.eq(AgentItems::getIsDeleted, 0)
|
|
|
.eq(AgentItems::getPid, agent.getId()));
|
|
|
detail.setAgentItemsList(!agentItemsList.isEmpty() ? agentItemsList : new ArrayList<>());
|
|
|
- List<Record> recordList = recordService.list(new LambdaQueryWrapper<Record>()
|
|
|
- .eq(Record::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Record::getIsDeleted, 0)
|
|
|
- .eq(Record::getPid, agent.getId()));
|
|
|
- if (!recordList.isEmpty()) {
|
|
|
- List<Record> recordListD = recordList.stream().filter(e -> "D".equals(e.getSrcType())).collect(Collectors.toList());
|
|
|
- detail.setRecordListD(!recordListD.isEmpty() ? recordListD : new ArrayList<>());
|
|
|
- List<Record> recordListC = recordList.stream().filter(e -> "C".equals(e.getSrcType())).collect(Collectors.toList());
|
|
|
- detail.setRecordListC(!recordListC.isEmpty() ? recordListC : new ArrayList<>());
|
|
|
- List<Record> recordInvoiceList = recordList.stream().filter(e -> "KP".equals(e.getSrcType())).collect(Collectors.toList());
|
|
|
- detail.setRecordInvoiceList(!recordInvoiceList.isEmpty() ? recordInvoiceList : new ArrayList<>());
|
|
|
- List<Record> recordRateList = recordList.stream().filter(e -> "FH".equals(e.getSrcType())).collect(Collectors.toList());
|
|
|
- detail.setRecordRateList(!recordRateList.isEmpty() ? recordRateList : new ArrayList<>());
|
|
|
- List<Record> recordClearanceList = recordList.stream().filter(e -> "TG".equals(e.getSrcType())).collect(Collectors.toList());
|
|
|
- detail.setRecordClearanceList(!recordClearanceList.isEmpty() ? recordClearanceList : new ArrayList<>());
|
|
|
+ List<FinStlBillsItems> finStlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
|
|
|
+ .eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinStlBillsItems::getIsDeleted, 0)
|
|
|
+ .eq(FinStlBillsItems::getBillNo, agent.getBusinessNo()));
|
|
|
+ if (!finStlBillsItemsList.isEmpty()) {
|
|
|
+ List<Long> ids = finStlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
|
|
|
+ List<FinStlBills> finStlBillsList = finStlBillsService.list(new LambdaQueryWrapper<FinStlBills>()
|
|
|
+ .eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinStlBills::getIsDeleted, 0)
|
|
|
+ .in(FinStlBills::getId, ids));
|
|
|
+ if (!finStlBillsList.isEmpty()) {
|
|
|
+ List<FinStlBills> recordListD = finStlBillsList.stream().filter(e -> "D".equals(e.getDc()) && "1".equals(e.getWhetherManual())).collect(Collectors.toList());
|
|
|
+ if (!recordListD.isEmpty()) {
|
|
|
+ List<Record> recordList = new ArrayList<>();
|
|
|
+ for (FinStlBills item : recordListD) {
|
|
|
+ Record record = new Record();
|
|
|
+ record.setAccount(item.getBankAccountName());
|
|
|
+ record.setAccountNumber(item.getBankAccountNo());
|
|
|
+ record.setBank(item.getBankAccountBank());
|
|
|
+ record.setPid(agent.getId());
|
|
|
+ record.setSrcId(item.getId());
|
|
|
+ record.setAmount(item.getAmountDr());
|
|
|
+ record.setDate(item.getBillDate());
|
|
|
+ record.setBillNo(item.getBillNo());
|
|
|
+ record.setRemarks(item.getRemarks());
|
|
|
+ record.setStatus("收款已结算");
|
|
|
+ record.setSrcType("STL-D");
|
|
|
+ recordList.add(record);
|
|
|
+ }
|
|
|
+ detail.setRecordListD(recordList);
|
|
|
+ }
|
|
|
+ List<FinStlBills> recordListC = finStlBillsList.stream().filter(e -> "C".equals(e.getDc()) && "1".equals(e.getWhetherManual())).collect(Collectors.toList());
|
|
|
+ if (!recordListC.isEmpty()) {
|
|
|
+ List<Record> recordList = new ArrayList<>();
|
|
|
+ for (FinStlBills item : recordListC) {
|
|
|
+ Record record = new Record();
|
|
|
+ record.setAccount(item.getBankAccountName());
|
|
|
+ record.setAccountNumber(item.getBankAccountNo());
|
|
|
+ record.setBank(item.getBankAccountBank());
|
|
|
+ record.setPid(agent.getId());
|
|
|
+ record.setSrcId(item.getId());
|
|
|
+ record.setAmount(item.getAmountDr());
|
|
|
+ record.setDate(item.getBillDate());
|
|
|
+ record.setBillNo(item.getBillNo());
|
|
|
+ record.setRemarks(item.getRemarks());
|
|
|
+ record.setStatus("付款已结算");
|
|
|
+ record.setSrcType("STL-C");
|
|
|
+ recordList.add(record);
|
|
|
+ }
|
|
|
+ detail.setRecordListC(recordList);
|
|
|
+ }
|
|
|
+ List<FinStlBills> recordRateList = finStlBillsList.stream().filter(e -> "0".equals(e.getWhetherManual())).collect(Collectors.toList());
|
|
|
+ if (!recordRateList.isEmpty()) {
|
|
|
+ List<Record> recordList = new ArrayList<>();
|
|
|
+ for (FinStlBills item : recordRateList) {
|
|
|
+ Record record = new Record();
|
|
|
+ record.setAccount(item.getBankAccountName());
|
|
|
+ record.setAccountNumber(item.getBankAccountNo());
|
|
|
+ record.setBank(item.getBankAccountBank());
|
|
|
+ record.setPid(agent.getId());
|
|
|
+ record.setSrcId(item.getId());
|
|
|
+ record.setAmount(item.getAmountDr());
|
|
|
+ record.setDate(item.getBillDate());
|
|
|
+ record.setBillNo(item.getBillNo());
|
|
|
+ record.setRemarks(item.getRemarks());
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ record.setStatus("付汇已结算");
|
|
|
+ record.setSrcType("STL-D-FH");
|
|
|
+ } else {
|
|
|
+ record.setStatus("购汇已结算");
|
|
|
+ record.setSrcType("STL-C-GH");
|
|
|
+ }
|
|
|
+ recordList.add(record);
|
|
|
+ }
|
|
|
+ detail.setRecordRateList(recordList);
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
detail.setRecordListD(new ArrayList<>());
|
|
|
detail.setRecordListC(new ArrayList<>());
|
|
|
- detail.setRecordInvoiceList(new ArrayList<>());
|
|
|
detail.setRecordRateList(new ArrayList<>());
|
|
|
- detail.setRecordClearanceList(new ArrayList<>());
|
|
|
+ }
|
|
|
+ List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
|
|
|
+ .eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinInvoicesItems::getIsDeleted, 0)
|
|
|
+ .eq(FinInvoicesItems::getBillNo, agent.getBusinessNo()));
|
|
|
+ if (!finInvoicesItemsList.isEmpty()) {
|
|
|
+ List<Long> ids = finInvoicesItemsList.stream().map(FinInvoicesItems::getPid).collect(Collectors.toList());
|
|
|
+ List<FinInvoices> finInvoicesList = finInvoicesService.list(new LambdaQueryWrapper<FinInvoices>()
|
|
|
+ .eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinInvoices::getIsDeleted, 0)
|
|
|
+ .in(FinInvoices::getId, ids));
|
|
|
+ if (!finInvoicesList.isEmpty()) {
|
|
|
+ List<Record> recordList = new ArrayList<>();
|
|
|
+ for (FinInvoices item : finInvoicesList) {
|
|
|
+ Record record = new Record();
|
|
|
+ record.setPid(agent.getId());
|
|
|
+ record.setSrcId(item.getId());
|
|
|
+ record.setAmount(item.getAmountCny());
|
|
|
+ record.setInvoiceHeader(item.getInvCorpCnName());
|
|
|
+ record.setInvoiceContent("");
|
|
|
+ record.setTaxRate(item.getTaxRate());
|
|
|
+ record.setDate(item.getBillDate());
|
|
|
+ record.setBillNo(item.getBillNo());
|
|
|
+ record.setRemarks(item.getRemarks());
|
|
|
+ record.setStatus("开票已确认");
|
|
|
+ record.setSrcType("FP");
|
|
|
+ recordList.add(record);
|
|
|
+ }
|
|
|
+ detail.setRecordInvoiceList(recordList);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ detail.setRecordInvoiceList(new ArrayList<>());
|
|
|
}
|
|
|
List<FilesCenter> filesCenterList = filesCenterService.list(new LambdaQueryWrapper<FilesCenter>()
|
|
|
.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -207,7 +303,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
List<Agent> count = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
- .eq(Agent::getCreateDept, deptUtils.getDeptPid()+"")
|
|
|
+ .eq(Agent::getCreateDept, deptUtils.getDeptPid() + "")
|
|
|
.eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(Agent::getIsDeleted, 0)
|
|
|
.eq(Agent::getContractNo, agent.getContractNo()
|
|
|
@@ -245,11 +341,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
} else {
|
|
|
List<Long> ids = count.stream().map(Agent::getId).distinct().collect(Collectors.toList());
|
|
|
- if (ObjectUtils.isNotNull(agent.getContractNo())) {
|
|
|
- if (!count.isEmpty() && !ids.contains(agent.getId())) {
|
|
|
- throw new RuntimeException("提单号不允许重复");
|
|
|
- }
|
|
|
+ if (ObjectUtils.isNotNull(agent.getContractNo())) {
|
|
|
+ if (!count.isEmpty() && !ids.contains(agent.getId())) {
|
|
|
+ throw new RuntimeException("提单号不允许重复");
|
|
|
}
|
|
|
+ }
|
|
|
agent.setUpdateUser(AuthUtil.getUserId());
|
|
|
agent.setUpdateTime(new Date());
|
|
|
agent.setUpdateUserName(AuthUtil.getUserName());
|
|
|
@@ -273,10 +369,32 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
agentItemsService.saveOrUpdateBatch(agent.getAgentItemsList());
|
|
|
+ BigDecimal goodsValue = agent.getAgentItemsList().stream().map(AgentItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ agent.setGoodsValue(goodsValue);
|
|
|
+ if (ObjectUtils.isNull(agent.getSumAmount())) {
|
|
|
+ agent.setSumAmount(goodsValue);
|
|
|
+ }
|
|
|
+ baseMapper.updateById(agent);
|
|
|
}
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
if (ObjectUtils.isNotNull(agent.getFeeCenterListC()) && !agent.getFeeCenterListC().isEmpty()) {
|
|
|
for (FeeCenter item : agent.getFeeCenterListC()) {
|
|
|
+ item.setBusinessType(agent.getBusinessType());
|
|
|
+ item.setBillNo(agent.getBusinessNo());
|
|
|
+ item.setBillDate(agent.getBusinessDate());
|
|
|
+ item.setCorpId(agent.getDomesticConsigneeId());
|
|
|
+ item.setCorpCnName(agent.getDomesticConsigneeCname());
|
|
|
+ item.setBillCorpId(agent.getCorpId());
|
|
|
+ item.setBillCorpCnName(agent.getCorpName());
|
|
|
+ item.setMblno(agent.getContractNo());
|
|
|
+ item.setPolId(agent.getPolId());
|
|
|
+ item.setPolCode(agent.getPolCode());
|
|
|
+ item.setPolCnName(agent.getPolCnName());
|
|
|
+ item.setPolEnName(agent.getPolEnName());
|
|
|
+ item.setPodId(agent.getPodId());
|
|
|
+ item.setPodCode(agent.getPodCode());
|
|
|
+ item.setPodCnName(agent.getPodCnName());
|
|
|
+ item.setPodEnName(agent.getPodEnName());
|
|
|
if (item.getId() == null) {
|
|
|
item.setPid(agent.getId());
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -296,6 +414,22 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(agent.getFeeCenterListD()) && !agent.getFeeCenterListD().isEmpty()) {
|
|
|
for (FeeCenter item : agent.getFeeCenterListD()) {
|
|
|
+ item.setBusinessType(agent.getBusinessType());
|
|
|
+ item.setBillNo(agent.getBusinessNo());
|
|
|
+ item.setBillDate(agent.getBusinessDate());
|
|
|
+ item.setCorpId(agent.getDomesticConsigneeId());
|
|
|
+ item.setCorpCnName(agent.getDomesticConsigneeCname());
|
|
|
+ item.setBillCorpId(agent.getCorpId());
|
|
|
+ item.setBillCorpCnName(agent.getCorpName());
|
|
|
+ item.setMblno(agent.getContractNo());
|
|
|
+ item.setPolId(agent.getPolId());
|
|
|
+ item.setPolCode(agent.getPolCode());
|
|
|
+ item.setPolCnName(agent.getPolCnName());
|
|
|
+ item.setPolEnName(agent.getPolEnName());
|
|
|
+ item.setPodId(agent.getPodId());
|
|
|
+ item.setPodCode(agent.getPodCode());
|
|
|
+ item.setPodCnName(agent.getPodCnName());
|
|
|
+ item.setPodEnName(agent.getPodEnName());
|
|
|
if (item.getId() == null) {
|
|
|
item.setPid(agent.getId());
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -320,6 +454,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
for (FilesCenter item : agent.getFilesCenterList()) {
|
|
|
if (item.getId() == null) {
|
|
|
item.setBusinessType("MYDL");
|
|
|
+ item.setSerialNo(1);
|
|
|
+ item.setSort(1);
|
|
|
item.setBillNo(agent.getBusinessNo());
|
|
|
item.setPid(agent.getId());
|
|
|
item.setCreateTime(new Date());
|
|
|
@@ -647,6 +783,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
Agent detail = baseMapper.selectById(agent.getId());
|
|
|
+ detail.setExchangeRate(agent.getExchangeRate());
|
|
|
+ detail.setDownPayment("1");
|
|
|
List<BFees> feesList = bFeesService.list(new LambdaQueryWrapper<BFees>()
|
|
|
.eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BFees::getIsDeleted, 0)
|
|
|
@@ -655,6 +793,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (feesList.isEmpty()) {
|
|
|
throw new RuntimeException("请先维护费用信息");
|
|
|
}
|
|
|
+ if (feeCenterService.count(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getFeeCode, "SFK")) > 0) {
|
|
|
+ throw new RuntimeException("首付款已生成,生成失败");
|
|
|
+ }
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
FeeCenter feeCenterSFK = assemblyDataSK("MYDL", detail, "SFK", 1L, 1, deptId, deptName, feesList);
|
|
|
if (feeCenterSFK != null) {
|
|
|
@@ -698,6 +844,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
}
|
|
|
Agent detail = baseMapper.selectById(agent.getId());
|
|
|
+ detail.setBalancePayment("1");
|
|
|
+ detail.setExchangeRate(agent.getExchangeRate());
|
|
|
List<BFees> feesList = bFeesService.list(new LambdaQueryWrapper<BFees>()
|
|
|
.eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BFees::getIsDeleted, 0)
|
|
|
@@ -706,6 +854,20 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (feesList.isEmpty()) {
|
|
|
throw new RuntimeException("请先维护费用信息");
|
|
|
}
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getFeeCode, "WK"));
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ BigDecimal amountWk = feeCenters.stream().map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal amount = detail.getGoodsValue().subtract(detail.getPrepaidAmount());
|
|
|
+ if (amount.compareTo(amountWk) == 0) {
|
|
|
+ throw new RuntimeException("尾款剩余生成金额为零,生成失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
FeeCenter feeCenterSFK = assemblyDataWK("MYDL", detail, "WK", 1L, 1, deptId, deptName, feesList);
|
|
|
if (feeCenterSFK != null) {
|
|
|
@@ -756,29 +918,49 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (businessType == null) {
|
|
|
throw new RuntimeException("未找到可用业务类型");
|
|
|
}
|
|
|
- List<FeeCenter> feeCenterList = agent.getFeeCenterListD();
|
|
|
+ String feeType = "";
|
|
|
+ String feeTypeName = "";
|
|
|
+ if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "1";
|
|
|
+ feeTypeName = "首付款";
|
|
|
+ } else if ("WK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "2";
|
|
|
+ feeTypeName = "尾款";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getFeeType, feeType));
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
- throw new RuntimeException("请选择收款数据");
|
|
|
+ throw new RuntimeException("未找到" + feeTypeName + "费用明细");
|
|
|
}
|
|
|
Date date = new Date();
|
|
|
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
int year = localDate.getYear();
|
|
|
int month = localDate.getMonthValue();
|
|
|
int day = localDate.getDayOfMonth();
|
|
|
- BigDecimal firstPaidInPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
- if (firstPaidInPayment.compareTo(agent.getPrepaidAmount()) != 0) {
|
|
|
- throw new RuntimeException("结算金额与首付款金额不一致,确认收款失败");
|
|
|
+ if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ BigDecimal firstPaidInPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
+ if (firstPaidInPayment.compareTo(agent.getPrepaidAmount()) != 0) {
|
|
|
+ throw new RuntimeException("结算金额与首付款金额不一致,确认收款失败");
|
|
|
+ }
|
|
|
+ agent.setFirstPaidInPayment(firstPaidInPayment);
|
|
|
+ agent.setFirstPaidInPaymentDate(date);
|
|
|
+ }
|
|
|
+ } else if ("WK".equals(agent.getPaidApplication())) {
|
|
|
+ BigDecimal finalPaymentReceived = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
+ if (agent.getFinalPaymentReceived().add(finalPaymentReceived).compareTo(agent.getFinalPaymentReceivable()) > 0) {
|
|
|
+ throw new RuntimeException("实收金额大于应收金额");
|
|
|
+ }
|
|
|
+ agent.setFinalPaymentReceived(agent.getFinalPaymentReceived().add(finalPaymentReceived));
|
|
|
+ agent.setFinalPaymentReceivedDate(date);
|
|
|
}
|
|
|
- agent.setFirstPaidInPayment(firstPaidInPayment);
|
|
|
- agent.setFirstPaidInPaymentDate(date);
|
|
|
- }
|
|
|
- BigDecimal finalPaymentReceived = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
- agent.setFinalPaymentReceived(agent.getFinalPaymentReceived().add(firstPaidInPayment));
|
|
|
- agent.setFinalPaymentReceivedDate(date);
|
|
|
}
|
|
|
BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
@@ -915,6 +1097,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
finStlBills.setBillNo((String) clientBillNo.getData());
|
|
|
finStlBills.setBillDate(date);
|
|
|
+ finStlBills.setWhetherManual("0");
|
|
|
finStlBills.setCreateTime(date);
|
|
|
finStlBills.setCreateUser(AuthUtil.getUserId());
|
|
|
finStlBills.setCreateUserName(AuthUtil.getUserName());
|
|
|
@@ -984,11 +1167,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
processType = "贸易代理首款付费申请";
|
|
|
checkType = "FFSQ-SK";
|
|
|
fidStatus = "first_status";
|
|
|
+ declare.setApplyForPayment("1");
|
|
|
+
|
|
|
} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
actId = 1124;
|
|
|
processType = "贸易代理尾款付费申请";
|
|
|
checkType = "FFSQ-WK";
|
|
|
fidStatus = "final_status";
|
|
|
+ declare.setApplyForPaymentBalance("1");
|
|
|
}
|
|
|
//获取审批级次
|
|
|
List<LosAuditPathsLevels> auditPathsLevels = null;
|
|
|
@@ -1047,10 +1233,51 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
throw new SecurityException("发送消息失败");
|
|
|
}
|
|
|
}
|
|
|
+ String feeType = "";
|
|
|
if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
declare.setFirstStatus("审核通过");
|
|
|
+ feeType = "1";
|
|
|
} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
declare.setFinalStatus("审核通过");
|
|
|
+ feeType = "2";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getFeeType, feeType));
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
+ for (FeeCenter item : feeCenters) {
|
|
|
+ FeeCenter feeCenter = new FeeCenter();
|
|
|
+ BeanUtil.copyProperties(item, feeCenter);
|
|
|
+ feeCenter.setDc("C");
|
|
|
+ feeCenter.setId(null);
|
|
|
+ feeCenter.setCreateTime(new Date());
|
|
|
+ feeCenter.setCreateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenter.setFeeType(feeType);
|
|
|
+ feeCenter.setAccBillId(null);
|
|
|
+ feeCenter.setAccBillNo(null);
|
|
|
+ feeCenter.setAccDate(null);
|
|
|
+ feeCenter.setAccAmount(new BigDecimal("0"));
|
|
|
+ feeCenter.setAccStatus(0);
|
|
|
+ feeCenter.setAccById(null);
|
|
|
+ feeCenter.setAccByName(null);
|
|
|
+ feeCenter.setUnsettledAmount(item.getAmount());
|
|
|
+ feeCenter.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlCurCode(null);
|
|
|
+ feeCenter.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlStatus(0);
|
|
|
+ feeCenter.setStlById(null);
|
|
|
+ feeCenter.setStlByName(null);
|
|
|
+ feeCenter.setUnsettledAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ }
|
|
|
+ if (!feeCenterList.isEmpty()) {
|
|
|
+ feeCenterService.saveBatch(feeCenterList);
|
|
|
}
|
|
|
} else {
|
|
|
if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
@@ -1125,27 +1352,149 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
if (businessType == null) {
|
|
|
throw new RuntimeException("未找到可用业务类型");
|
|
|
}
|
|
|
- List<FeeCenter> feeCenterListD = agent.getFeeCenterListC();
|
|
|
- List<FeeCenter> feeCenterList = agent.getFeeCenterListC();
|
|
|
+ String feeType = "";
|
|
|
+ String feeTypeName = "";
|
|
|
+ if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "1";
|
|
|
+ feeTypeName = "首付款";
|
|
|
+ } else if ("WK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "2";
|
|
|
+ feeTypeName = "尾款";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getFeeType, feeType));
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenters.stream().filter(e -> "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (feeCenterListD.isEmpty()) {
|
|
|
+ throw new RuntimeException("未找到" + feeTypeName + "应收费用明细");
|
|
|
+ }
|
|
|
+ BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> "C".equals(e.getDc())).collect(Collectors.toList());
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
- throw new RuntimeException("请选择收款数据");
|
|
|
+ throw new RuntimeException("未找到" + feeTypeName + "应付费用明细");
|
|
|
+ }
|
|
|
+ BigDecimal amountC = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(amountD) != 0 && amount.compareTo(amountD) == 0) {
|
|
|
+ BigDecimal amountSub = amountC.subtract(amountD);
|
|
|
+ if (amountSub.compareTo(new BigDecimal("0")) > 0) {
|
|
|
+ AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
+ .eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AdvanceCharge::getIsDeleted, 0)
|
|
|
+ .eq(AdvanceCharge::getCorpId, agent.getDomesticConsigneeId()));
|
|
|
+ if (advanceCharge != null) {
|
|
|
+ advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
|
|
|
+ advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().add(amountSub));
|
|
|
+ } else {
|
|
|
+ advanceCharge = new AdvanceCharge();
|
|
|
+ advanceCharge.setAdvancePaymentBalance(amountSub);
|
|
|
+ advanceCharge.setInOverpayment(amountSub);
|
|
|
+ advanceCharge.setCorpId(agent.getCorpId());
|
|
|
+ advanceCharge.setCorpName(agent.getCorpName());
|
|
|
+ advanceCharge.setCreateUser(AuthUtil.getUserId());
|
|
|
+ advanceCharge.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ advanceCharge.setCreateTime(new Date());
|
|
|
+ advanceCharge.setCreateDept(deptId);
|
|
|
+ advanceCharge.setCreateDeptName(deptName);
|
|
|
+ }
|
|
|
+ advanceChargeService.saveOrUpdate(advanceCharge);
|
|
|
+ AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
|
|
|
+ advanceChargeItem.setCreateUser(AuthUtil.getUserId());
|
|
|
+ advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ advanceChargeItem.setCreateTime(new Date());
|
|
|
+ advanceChargeItem.setCreateDept(deptId);
|
|
|
+ advanceChargeItem.setCreateDeptName(deptName);
|
|
|
+ advanceChargeItem.setPid(advanceCharge.getId());
|
|
|
+ advanceChargeItem.setSrcId(agent.getId());
|
|
|
+ advanceChargeItem.setSrcPid(agent.getId());
|
|
|
+ advanceChargeItem.setOrderNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setOverpayment(amountSub);
|
|
|
+ advanceChargeItem.setOverpaymentType(0);
|
|
|
+ advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setBillNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setIdentifier(0);
|
|
|
+ advanceChargeItem.setRemarks(feeTypeName);
|
|
|
+ advanceChargeItemService.save(advanceChargeItem);
|
|
|
+ } else if (amountSub.compareTo(new BigDecimal("0")) < 0) {
|
|
|
+ FeeCenter feeCenter = new FeeCenter();
|
|
|
+ feeCenter.setFeeType(feeType);
|
|
|
+ feeCenter.setCreateTime(new Date());
|
|
|
+ feeCenter.setCreateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
|
|
|
+ feeCenter.setCreateDept(deptId + "");
|
|
|
+ feeCenter.setBranchId(deptId + "");
|
|
|
+ feeCenter.setCreateDeptName(deptName);
|
|
|
+ }
|
|
|
+ feeCenter.setBusinessType(agent.getBusinessType());
|
|
|
+ feeCenter.setPid(agent.getId());
|
|
|
+ feeCenter.setLineNo(feeCenterListD.size() + 1L);
|
|
|
+ feeCenter.setBillNo(agent.getBusinessNo());
|
|
|
+ feeCenter.setBillDate(agent.getBusinessDate());
|
|
|
+ feeCenter.setCorpId(agent.getDomesticConsigneeId());
|
|
|
+ feeCenter.setCorpCnName(agent.getDomesticConsigneeCname());
|
|
|
+ feeCenter.setBillCorpId(agent.getCorpId());
|
|
|
+ feeCenter.setBillCorpCnName(agent.getCorpName());
|
|
|
+ feeCenter.setMblno(agent.getContractNo());
|
|
|
+ feeCenter.setPolId(agent.getPolId());
|
|
|
+ feeCenter.setPolCode(agent.getPolCode());
|
|
|
+ feeCenter.setPolCnName(agent.getPolCnName());
|
|
|
+ feeCenter.setPolEnName(agent.getPolEnName());
|
|
|
+ feeCenter.setPodId(agent.getPodId());
|
|
|
+ feeCenter.setPodCode(agent.getPodCode());
|
|
|
+ feeCenter.setPodCnName(agent.getPodCnName());
|
|
|
+ feeCenter.setPodEnName(agent.getPodEnName());
|
|
|
+ BFees feesSFK = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
|
|
|
+ .eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BFees::getIsDeleted, 0)
|
|
|
+ .eq(BFees::getCode, "YFK"));
|
|
|
+ if (feesSFK == null) {
|
|
|
+ throw new RuntimeException("请先维护预付款费用信息");
|
|
|
+ }
|
|
|
+ feeCenter.setFeeId(feesSFK.getId());
|
|
|
+ feeCenter.setFeeCode(feesSFK.getCode());
|
|
|
+ feeCenter.setFeeCnName(feesSFK.getCnName());
|
|
|
+ feeCenter.setFeeEnName(feesSFK.getEnName());
|
|
|
+ feeCenter.setDc("D");
|
|
|
+ feeCenter.setCurCode(feesSFK.getCurNo());
|
|
|
+ feeCenter.setSort(feeCenterListD.size() + 1);
|
|
|
+ feeCenter.setElementsId(feesSFK.getAccElementId());
|
|
|
+ feeCenter.setElementsCode(feesSFK.getElementsCode());
|
|
|
+ feeCenter.setElementsCnName(feesSFK.getAccElementName());
|
|
|
+ feeCenter.setElementsEnName(feesSFK.getElementsEnName());
|
|
|
+ feeCenter.setUnitNo("JOB");
|
|
|
+ feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenter.setPrice(amountSub.abs());
|
|
|
+ feeCenter.setAmount(amountSub.abs());
|
|
|
+ feeCenterService.save(feeCenter);
|
|
|
+ } else {
|
|
|
+ System.out.println("无差额");
|
|
|
+ }
|
|
|
}
|
|
|
Date date = new Date();
|
|
|
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
int year = localDate.getYear();
|
|
|
int month = localDate.getMonthValue();
|
|
|
int day = localDate.getDayOfMonth();
|
|
|
- BigDecimal firstActualPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
- agent.setFirstActualPayment(firstActualPayment);
|
|
|
- agent.setFirstActualPaymentDate(date);
|
|
|
- }
|
|
|
- BigDecimal finalPaymentInFull = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
- agent.setFinalPaymentInFull(agent.getFinalPaymentInFull().add(finalPaymentInFull));
|
|
|
- agent.setFinalPaymentInFullDate(date);
|
|
|
+ if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ BigDecimal firstActualPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
+ agent.setFirstActualPayment(firstActualPayment);
|
|
|
+ agent.setFirstActualPaymentDate(date);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ BigDecimal finalPaymentInFull = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
+ if (agent.getFinalPaymentInFull().add(finalPaymentInFull).compareTo(agent.getFinalPaymentPayable()) > 0) {
|
|
|
+ throw new RuntimeException("实付金额大于应付金额");
|
|
|
+ }
|
|
|
+ agent.setFinalPaymentInFull(agent.getFinalPaymentInFull().add(finalPaymentInFull));
|
|
|
+ agent.setFinalPaymentInFullDate(date);
|
|
|
+ }
|
|
|
}
|
|
|
List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
|
|
|
.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -1352,6 +1701,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
finStlBills.setBillNo((String) clientBillNo.getData());
|
|
|
finStlBills.setBillDate(date);
|
|
|
+ finStlBills.setWhetherManual("0");
|
|
|
finStlBills.setCreateTime(date);
|
|
|
finStlBills.setCreateUser(AuthUtil.getUserId());
|
|
|
finStlBills.setCreateUserName(AuthUtil.getUserName());
|
|
|
@@ -1437,10 +1787,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
throw new RuntimeException("未找到可用业务类型");
|
|
|
}
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
- if (!agent.getFeeCenterListD().isEmpty()) {
|
|
|
+ List<FeeCenter> feeCenterList1 = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(agent.getFeeCenterListD()) && !agent.getFeeCenterListD().isEmpty()) {
|
|
|
feeCenterList.addAll(agent.getFeeCenterListD());
|
|
|
}
|
|
|
- if (!agent.getFeeCenterListC().isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotNull(agent.getFeeCenterListC()) && !agent.getFeeCenterListC().isEmpty()) {
|
|
|
feeCenterList.addAll(agent.getFeeCenterListC());
|
|
|
}
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
@@ -1529,9 +1880,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setAccByName(AuthUtil.getUserName());
|
|
|
item.setUnsettledAmount(item.getAmount());
|
|
|
item.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
- feeCenterList.add(item);
|
|
|
+ feeCenterList1.add(item);
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList1);
|
|
|
+ if ("D".equals(feeCenterList1.get(0).getDc())) {
|
|
|
+ agent.setFeeCenterListD(feeCenterList1);
|
|
|
+ } else {
|
|
|
+ agent.setFeeCenterListC(feeCenterList1);
|
|
|
}
|
|
|
- feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
return agent;
|
|
|
}
|
|
|
|
|
|
@@ -1541,10 +1897,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
public Agent revokeBill(Agent agent) {
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
List<FeeCenter> feeCenters = new ArrayList<>();
|
|
|
- if (!agent.getFeeCenterListD().isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotNull(agent.getFeeCenterListD()) && !agent.getFeeCenterListD().isEmpty()) {
|
|
|
feeCenters.addAll(agent.getFeeCenterListD());
|
|
|
}
|
|
|
- if (!agent.getFeeCenterListC().isEmpty()) {
|
|
|
+ if (ObjectUtils.isNotNull(agent.getFeeCenterListC()) && !agent.getFeeCenterListC().isEmpty()) {
|
|
|
feeCenters.addAll(agent.getFeeCenterListC());
|
|
|
}
|
|
|
if (feeCenters.isEmpty()) {
|
|
|
@@ -1602,6 +1958,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
feeCenterList.add(feeCenterItem);
|
|
|
}
|
|
|
feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
+ if ("D".equals(feeCenterList.get(0).getDc())) {
|
|
|
+ agent.setFeeCenterListD(feeCenterList);
|
|
|
+ } else {
|
|
|
+ agent.setFeeCenterListC(feeCenterList);
|
|
|
+ }
|
|
|
return agent;
|
|
|
}
|
|
|
|
|
|
@@ -1611,21 +1972,45 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
throw new RuntimeException("缺少必要参数");
|
|
|
}
|
|
|
Agent declare = baseMapper.selectById(agent.getId());
|
|
|
- if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
if ("审核通过".equals(declare.getFirstStatus())) {
|
|
|
throw new SecurityException("审核已通过,撤销失败");
|
|
|
}
|
|
|
declare.setFirstStatus("录入");
|
|
|
- } else if ("WK".equals(agent.getPaidApplication())) {
|
|
|
+ } else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
if ("审核通过".equals(declare.getFinalStatus())) {
|
|
|
throw new SecurityException("审核已通过,撤销失败");
|
|
|
}
|
|
|
declare.setFinalStatus("录入");
|
|
|
}
|
|
|
-
|
|
|
- R financeProcess = auditProecessService.deteleByBillIdAndType(agent.getId(), agent.getPaidApplication());
|
|
|
- if (!financeProcess.isSuccess()) {
|
|
|
- throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ String status = sysClient.getParamServiceByDept("whether.apply.for.payment", AuthUtil.getTenantId(), AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(status) && !"0".equals(status)) {
|
|
|
+ R financeProcess = auditProecessService.deteleByBillIdAndType(agent.getId(), agent.getPaidApplication());
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ }
|
|
|
+ if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
+ declare.setApplyForPayment("0");
|
|
|
+ } else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
+ declare.setApplyForPaymentBalance("0");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ String feeType = "";
|
|
|
+ if ("FFSQ-SK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "1";
|
|
|
+ } else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "2";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getDc, "C")
|
|
|
+ .eq(FeeCenter::getFeeType, feeType));
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ List<Long> ids = feeCenters.stream().map(FeeCenter::getId).collect(Collectors.toList());
|
|
|
+ feeCenterService.removeByIds(ids);
|
|
|
+ }
|
|
|
}
|
|
|
baseMapper.updateById(declare);
|
|
|
return declare;
|
|
|
@@ -1751,6 +2136,38 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
return declare;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R confirmReceived(Agent agent) {
|
|
|
+ if (agent.getId() == null) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ String feeType = "";
|
|
|
+ String feeTypeName = "";
|
|
|
+ if ("SK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "1";
|
|
|
+ feeTypeName = "首付款";
|
|
|
+ } else if ("WK".equals(agent.getPaidApplication())) {
|
|
|
+ feeType = "2";
|
|
|
+ feeTypeName = "尾款";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getFeeType, feeType));
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenters.stream().filter(e -> "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (feeCenterListD.isEmpty()) {
|
|
|
+ throw new RuntimeException("未找到" + feeTypeName + "应收费用明细");
|
|
|
+ }
|
|
|
+ BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (amount.compareTo(amountD) != 0) {
|
|
|
+ return R.data(feeTypeName + "实收未全部到账是否继续确认付款");
|
|
|
+ } else {
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private FeeCenter assemblyDataSK(String businessType, Agent detail, String type, long lineNo, int sort, long deptId, String deptName, List<BFees> feesList) {
|
|
|
FeeCenter feeCenter = new FeeCenter();
|
|
|
feeCenter.setFeeType("1");
|