|
|
@@ -42,6 +42,7 @@ import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.deliver.goods.entity.DeliveryFees;
|
|
|
@@ -747,6 +748,19 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
deliveryFees.setSettlmentAmount(deliveryFees.getSettlmentAmount() != null ? deliveryFees.getSettlmentAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
accMapper.updateById(acc);
|
|
|
deliveryClient.submitFees(deliveryFees);
|
|
|
+ } else if (type == 4) {
|
|
|
+ BigDecimal amount = BigDecimal.ZERO;
|
|
|
+ amount = acc.getAmount();
|
|
|
+ BigDecimal receivedAmount = items.getCurrentAmount();
|
|
|
+ receivedAmount = receivedAmount.add(acc.getSettlementAmount());
|
|
|
+ amount = amount.subtract(receivedAmount);
|
|
|
+ Order order1 = new Order();
|
|
|
+ order1.setId(acc.getSrcId());
|
|
|
+ order1.setSettlmentAmount(receivedAmount);
|
|
|
+ order1.setBalanceAmount(amount);
|
|
|
+ orderDescClient.updateOrder(order1);
|
|
|
+ acc.setSettlementAmount(receivedAmount);
|
|
|
+ accMapper.updateById(acc);
|
|
|
} else {
|
|
|
throw new SecurityException("操作失败,财务类型为空无法结算");
|
|
|
}
|
|
|
@@ -2288,7 +2302,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public void paymentApplyParts(ApplyDTO dto) {
|
|
|
Acc acc = new Acc();
|
|
|
BeanUtils.copyProperties(dto, acc);
|
|
|
@@ -2300,8 +2315,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
} else {
|
|
|
acc = accMapper.selectById(acc.getId());
|
|
|
Long id = acc.getId();
|
|
|
- BigDecimal settlementAmount = new BigDecimal(0.00);
|
|
|
- settlementAmount.add(acc.getSettlementAmount());
|
|
|
for (Settlement settlement : dto.getSettlementList()) {
|
|
|
if (settlement.getId() == null) {
|
|
|
Settlement model = new Settlement();
|
|
|
@@ -2361,9 +2374,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
items.setTradeType(acc.getTradeType());
|
|
|
itemsMapper.insert(items);
|
|
|
|
|
|
- settlementAmount = settlementAmount.add(settlement.getAmount());
|
|
|
}
|
|
|
- acc.setSettlementAmount(settlementAmount);
|
|
|
+ acc.setSettlementAmount(dto.getSettlementAmount());
|
|
|
acc.setId(id);
|
|
|
acc.setUpdateTime(new Date());
|
|
|
acc.setUpdateUser(AuthUtil.getUserId());
|
|
|
@@ -2377,4 +2389,95 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
public void deleteBySrcId(Long srcId) {
|
|
|
baseMapper.deleteBySrcId(srcId);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
+ public Settlement modifyParts(SettlementDTO dto) {
|
|
|
+ Settlement model = new Settlement();
|
|
|
+ BeanUtils.copyProperties(dto, model);
|
|
|
+
|
|
|
+ List<Files> filesList = dto.getFilesList();
|
|
|
+ List<Acc> accList = dto.getAccList();
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ for (Acc acc:accList) {
|
|
|
+ Items items = new Items();
|
|
|
+ BeanUtils.copyProperties(acc, items);
|
|
|
+ items.setItemId(acc.getSrcFeesId());
|
|
|
+ items.setSrcOrderno(acc.getAccSysNo());
|
|
|
+ items.setItemType(acc.getBillType());
|
|
|
+ items.setBillNo(acc.getSrcBillNo());
|
|
|
+ items.setTradeType(acc.getTradeType());
|
|
|
+ itemsList.add(items);
|
|
|
+ }
|
|
|
+// List<Items> itemsList = BeanUtil.copy(accList, Items.class);
|
|
|
+
|
|
|
+ //如果id=null, 无论主表还是从表, 必然都是新增
|
|
|
+ Long id = dto.getId();
|
|
|
+ if (id == null) {
|
|
|
+ model.setSysNo(dto.getBillType() + System.currentTimeMillis());
|
|
|
+ model.setFoundStatus("结算完成");
|
|
|
+ model.setTenantId(AuthUtil.getTenantId());
|
|
|
+ model.setCreateTime(new Date());
|
|
|
+ model.setCreateUser(AuthUtil.getUserId());
|
|
|
+ model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ baseMapper.insert(model);
|
|
|
+ dto.setId(model.getId());
|
|
|
+ dto.setSysNo(model.getSysNo());
|
|
|
+ dto.setFoundStatus("结算完成");
|
|
|
+ dto.setCreateTime(new Date());
|
|
|
+ dto.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
+ itemsList.forEach(e -> {
|
|
|
+ e.setAccId(e.getId());
|
|
|
+ e.setId(null);
|
|
|
+ e.setPid(model.getId());
|
|
|
+ e.setTenantId(AuthUtil.getTenantId());
|
|
|
+ e.setCreateTime(new Date());
|
|
|
+ e.setCreateUser(AuthUtil.getUserId());
|
|
|
+ e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ e.setAmount(e.getCurrentAmount());
|
|
|
+ e.setThisAmount(e.getCurrentAmount());
|
|
|
+ itemsMapper.insert(e);
|
|
|
+ payAcc(dto, e, e.getSrcType());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //主表更新, 从表视情况更新新增
|
|
|
+ else {
|
|
|
+ model.setUpdateTime(new Date());
|
|
|
+ model.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ model.setUpdateUserName(AuthUtil.getUser().getRoleName());
|
|
|
+ baseMapper.updateById(model);
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
+ itemsList.forEach(e -> {
|
|
|
+ if (e.getId() == null) {
|
|
|
+ e.setPid(model.getId());
|
|
|
+ e.setTenantId(AuthUtil.getTenantId());
|
|
|
+ e.setCreateTime(new Date());
|
|
|
+ e.setCreateUser(AuthUtil.getUserId());
|
|
|
+ e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ e.setAmount(e.getCurrentAmount());
|
|
|
+ e.setThisAmount(e.getCurrentAmount());
|
|
|
+ itemsMapper.insert(e);
|
|
|
+ payAcc(dto, e, e.getSrcType());
|
|
|
+ } else {
|
|
|
+ e.setAccId(e.getId());
|
|
|
+ e.setUpdateTime(new Date());
|
|
|
+ e.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ e.setUpdateUserName(AuthUtil.getUser().getRoleName());
|
|
|
+ e.setAmount(e.getCurrentAmount());
|
|
|
+ e.setThisAmount(e.getCurrentAmount());
|
|
|
+ itemsMapper.updateById(e);
|
|
|
+ payAcc(dto, e, e.getSrcType());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ model.setItemsList(itemsList);
|
|
|
+ model.setFoundStatus("结算完成");
|
|
|
+ //更新绑定
|
|
|
+ baseMapper.updateById(model);
|
|
|
+ }
|
|
|
+ return model;
|
|
|
+ }
|
|
|
}
|