|
|
@@ -85,12 +85,52 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
@Override
|
|
|
@Transactional
|
|
|
@GlobalTransactional
|
|
|
- public void modify(SettlementDTO settlementDTO)
|
|
|
+ public Settlement cancelModify(SettlementDTO settlementDTO)
|
|
|
+ {
|
|
|
+ Settlement model=new Settlement();
|
|
|
+ BeanUtils.copyProperties(settlementDTO,model);
|
|
|
+ List<Items> itemsList = settlementDTO.getItemsList();
|
|
|
+ if(settlementDTO.getId()==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("取消结算失败,无主表信息");
|
|
|
+ }
|
|
|
+ //撤销后, 回归主表原来的状态
|
|
|
+ model.setFinanceStatus("待结算");
|
|
|
+ model.setUpdateTime(new Date());
|
|
|
+ model.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ model.setUpdateUserName(AuthUtil.getUser().getRoleName());
|
|
|
+ baseMapper.updateById(model);
|
|
|
+ //撤销后, 回归子表回归原来状态
|
|
|
+ if(CollectionUtils.isNotEmpty(itemsList))
|
|
|
+ {
|
|
|
+ itemsList.forEach(e->{
|
|
|
+
|
|
|
+ e.setUpdateTime(new Date());
|
|
|
+ e.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ e.setUpdateUserName(AuthUtil.getUser().getRoleName());
|
|
|
+ itemsMapper.updateById(e);
|
|
|
+ cancelPayAcc(settlementDTO,e);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ model.setItemsList(itemsList);
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ @GlobalTransactional
|
|
|
+ public Settlement modify(SettlementDTO settlementDTO)
|
|
|
{
|
|
|
Settlement model=new Settlement();
|
|
|
BeanUtils.copyProperties(settlementDTO,model);
|
|
|
List<Files> filesList = settlementDTO.getFilesList();
|
|
|
List<Items> itemsList = settlementDTO.getItemsList();
|
|
|
+ model.setItemsList(itemsList);
|
|
|
//如果id=null, 无论主表还是从表, 必然都是新增
|
|
|
Long id = settlementDTO.getId();
|
|
|
if(id==null)
|
|
|
@@ -99,6 +139,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
model.setFinanceStatus("结算完成");
|
|
|
model.setTenantId(AuthUtil.getTenantId());
|
|
|
model.setCreateTime(new Date());
|
|
|
+ model.setSettlementDate(new Date());
|
|
|
model.setCreateUser(AuthUtil.getUserId());
|
|
|
model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
baseMapper.insert(model);
|
|
|
@@ -119,9 +160,10 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
//主表更新, 从表视情况更新新增
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
+ model.setFinanceStatus("结算完成");
|
|
|
model.setUpdateTime(new Date());
|
|
|
model.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ model.setSettlementDate(new Date());
|
|
|
model.setUpdateUserName(AuthUtil.getUser().getRoleName());
|
|
|
baseMapper.updateById(model);
|
|
|
|
|
|
@@ -150,11 +192,12 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
payAcc(settlementDTO,e);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
});
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ model.setFinanceStatus("结算完成");
|
|
|
+ return model;
|
|
|
//验证结算总金额是否超限
|
|
|
/*if(settlementDTO.getBillType().equals("收费")||settlementDTO.getBillType().equals("付费"))
|
|
|
{
|
|
|
@@ -180,10 +223,62 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
|
|
|
|
|
|
}
|
|
|
+ //撤销
|
|
|
+ public void cancelPayAcc(SettlementDTO settlementDTO,Items items)
|
|
|
+ {
|
|
|
+ Long accId = items.getAccId();
|
|
|
+ if(accId==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,没有绑定明细信息");
|
|
|
+ }
|
|
|
+ Acc acc = accMapper.selectById(accId);
|
|
|
+ if(acc==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,无对应明细信息");
|
|
|
+ }
|
|
|
+ //取消结算后,更新回退acc表金额,采购收费 销售付费
|
|
|
+ if(acc.getSettlementAmount()==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,结算金额为空");
|
|
|
+ }
|
|
|
+ acc.setSettlementAmount(acc.getSettlementAmount().subtract(items.getThisAmount()));
|
|
|
+ //判断是否退款,已收金额为负数
|
|
|
+ BigDecimal settlementAmount = acc.getSettlementAmount();
|
|
|
+ if(settlementAmount.compareTo(new BigDecimal("0")) ==-1)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,已结算金额为负数");
|
|
|
+ }
|
|
|
+ accMapper.updateById(acc);
|
|
|
+ //修改原业务表数据
|
|
|
+ Long srcParentId = acc.getSrcParentId();
|
|
|
+ if(srcParentId==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,未获取到原业务信息");
|
|
|
+ }
|
|
|
+ Order client = orderDescClient.getById(srcParentId);
|
|
|
+ if(client==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,未获取到原业务信息");
|
|
|
+ }
|
|
|
+ //回退原业务表数据
|
|
|
+ if(client.getSettlmentAmount() == null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("撤销账单失败,原业务表已收金额为空");
|
|
|
+ }
|
|
|
+ client.setSettlmentAmount(client.getSettlmentAmount().subtract(items.getThisAmount()));
|
|
|
+ orderDescClient.updateOrder(client);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//修改财务账单和订单表已收金额
|
|
|
public void payAcc(SettlementDTO settlementDTO,Items items)
|
|
|
{
|
|
|
Long accId = items.getAccId();
|
|
|
+ if(accId==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败,没有绑定明细信息");
|
|
|
+ }
|
|
|
Acc acc = accMapper.selectById(accId);
|
|
|
if(acc==null)
|
|
|
{
|
|
|
@@ -200,6 +295,10 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
accMapper.updateById(acc);
|
|
|
//修改原业务表数据
|
|
|
Long srcParentId = acc.getSrcParentId();
|
|
|
+ if(srcParentId==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败,未获取到原业务信息");
|
|
|
+ }
|
|
|
Order client = orderDescClient.getById(srcParentId);
|
|
|
if(client==null)
|
|
|
{
|
|
|
@@ -232,7 +331,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
//todo 系统编号暂时按时间戳, 后续按正式
|
|
|
settlement.setSysNo(String.valueOf(System.currentTimeMillis()));
|
|
|
settlement.setCreateTime(new Date());
|
|
|
- settlement.setAmount(total);
|
|
|
+ /* settlement.setAmount(total);*/
|
|
|
settlement.setTenantId(AuthUtil.getTenantId());
|
|
|
settlement.setCreateUser(AuthUtil.getUserId());
|
|
|
settlement.setStatus(0);
|