|
|
@@ -17,12 +17,15 @@
|
|
|
package com.trade.finance.service.impl;
|
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.trade.finance.dto.SettlementDTO;
|
|
|
+import com.trade.finance.entity.Acc;
|
|
|
import com.trade.finance.entity.Files;
|
|
|
import com.trade.finance.entity.Items;
|
|
|
import com.trade.finance.entity.Settlement;
|
|
|
+import com.trade.finance.mapper.AccMapper;
|
|
|
import com.trade.finance.mapper.ItemsMapper;
|
|
|
import com.trade.finance.mapper.SettlementMapper;
|
|
|
import com.trade.finance.service.ISettlementService;
|
|
|
@@ -37,6 +40,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -53,6 +57,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
private ItemsMapper itemsMapper;
|
|
|
|
|
|
private ISerialClient serialClient;//生成系统编号
|
|
|
+ @Autowired
|
|
|
+ private AccMapper accMapper;
|
|
|
|
|
|
@Override
|
|
|
public IPage<SettlementVO> selectSettlementPage(IPage<SettlementVO> page, SettlementVO settlement) {
|
|
|
@@ -66,9 +72,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
Settlement model=new Settlement();
|
|
|
BeanUtils.copyProperties(settlementDTO,model);
|
|
|
List<Files> filesList = settlementDTO.getFilesList();
|
|
|
- List<Items> itemsList = settlementDTO.getItemsList();
|
|
|
+ List<Items> itemsList = settlementDTO.getItemsList();
|
|
|
//如果id=null, 无论主表还是从表, 必然都是新增
|
|
|
- Long id = settlementDTO.getId();
|
|
|
+ Long id = settlementDTO.getId();
|
|
|
if(id==null)
|
|
|
{
|
|
|
|
|
|
@@ -88,6 +94,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
e.setCreateUser(AuthUtil.getUserId());
|
|
|
e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
itemsMapper.insert(e);
|
|
|
+ payAcc(settlementDTO,e);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
@@ -113,6 +120,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
e.setCreateUser(AuthUtil.getUserId());
|
|
|
e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
itemsMapper.insert(e);
|
|
|
+ payAcc(settlementDTO,e);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -132,19 +140,36 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public void payAcc(SettlementDTO settlementDTO,Items items)
|
|
|
+ {
|
|
|
+ Long accId = items.getAccId();
|
|
|
+ Acc acc = accMapper.selectById(accId);
|
|
|
+ if(acc==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("扣款账单失败");
|
|
|
+ }
|
|
|
+ //结算成功后,更新acc表金额,采购收费 销售付费
|
|
|
+ acc.setSettlementAmount(acc.getSettlementAmount()!=null?acc.getSettlementAmount().add(items.getAmount()):new BigDecimal("0").add(items.getAmount()));
|
|
|
+ accMapper.updateById(acc);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void apply(List<Items> itemsList, String billType)
|
|
|
{
|
|
|
- Settlement settlement=new Settlement();
|
|
|
+ BigDecimal total = itemsList.stream().filter(e -> e.getAmount() != null).map(Items::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Settlement settlement=new Settlement();
|
|
|
settlement.setBillType(billType);
|
|
|
settlement.setCorpId(itemsList.get(0).getCorpId());
|
|
|
+ settlement.setSrcOrderno(itemsList.get(0).getSrcOrderno());
|
|
|
//todo 系统编号暂时按时间戳, 后续按正式
|
|
|
settlement.setSysNo(String.valueOf(System.currentTimeMillis()));
|
|
|
settlement.setCreateTime(new Date());
|
|
|
+ settlement.setAmount(total);
|
|
|
settlement.setTenantId(AuthUtil.getTenantId());
|
|
|
settlement.setCreateUser(AuthUtil.getUserId());
|
|
|
settlement.setStatus(0);
|
|
|
+ settlement.setCheckStatus("未请核");
|
|
|
baseMapper.insert(settlement);
|
|
|
|
|
|
itemsList.forEach(e->{
|
|
|
@@ -157,4 +182,58 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void check(Settlement settlement)
|
|
|
+ {
|
|
|
+ //目前清核直接通过
|
|
|
+ LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
+ itemsLambdaQueryWrapper.eq(Items::getPid,settlement.getId());
|
|
|
+ List<Items> items = itemsMapper.selectList(itemsLambdaQueryWrapper);
|
|
|
+ if(!CollectionUtils.isEmpty(items))
|
|
|
+ {
|
|
|
+ //有几个申请明细 就生成几个账单明细
|
|
|
+ items.forEach(e->{
|
|
|
+ Acc acc=new Acc();
|
|
|
+ BeanUtils.copyProperties(e,acc);
|
|
|
+ acc.setId(null);
|
|
|
+ acc.setAccSysNo(e.getSrcOrderno());
|
|
|
+ acc.setSrcParentId(e.getSrcParentId());
|
|
|
+ acc.setBillType(settlement.getBillType());
|
|
|
+ acc.setCreateTime(new Date());
|
|
|
+ acc.setStatus(0);
|
|
|
+ acc.setCreateUser(AuthUtil.getUserId());
|
|
|
+ acc.setCostType(e.getCostType());
|
|
|
+ accMapper.insert(acc);
|
|
|
+
|
|
|
+ //绑定accId,从申请表传递给结算表,后续结算时操作账单表的结算金额
|
|
|
+ e.setAccId(acc.getId());
|
|
|
+ itemsMapper.updateById(e);
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ settlement.setCheckStatus("请核成功");
|
|
|
+ baseMapper.updateById(settlement);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void paymentApply(List<Items> itemsList, String billType)
|
|
|
+ {
|
|
|
+ itemsList.forEach(e->{
|
|
|
+ Acc acc=new Acc();
|
|
|
+ BeanUtils.copyProperties(e,acc);
|
|
|
+ acc.setId(null);
|
|
|
+ acc.setAccSysNo(e.getSrcOrderno());
|
|
|
+ acc.setSrcParentId(e.getSrcParentId());
|
|
|
+ acc.setBillType(billType);
|
|
|
+ acc.setCreateTime(new Date());
|
|
|
+ acc.setStatus(0);
|
|
|
+ acc.setCostType(e.getCostType());
|
|
|
+ acc.setCreateUser(AuthUtil.getUserId());
|
|
|
+ accMapper.insert(acc);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|