|
|
@@ -352,6 +352,120 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void masterCheck(Long id)
|
|
|
+ {
|
|
|
+ ServiceProject serviceProject = serviceProjectMapper.selectById(id);
|
|
|
+ if(serviceProject==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("清核失败:主营项目不存在或已被删除");
|
|
|
+ }
|
|
|
+ if(serviceProject.getStatus()>0)
|
|
|
+ {
|
|
|
+ throw new SecurityException("清核失败:主营项目已开启审批,禁止重复提交");
|
|
|
+ }
|
|
|
+ //查询子表是否符合请核条件
|
|
|
+ LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
+ itemLambdaQueryWrapper
|
|
|
+ .eq(ServiceProjectItem::getPId,id)
|
|
|
+ .eq(ServiceProjectItem::getIsDeleted,0);
|
|
|
+ List<ServiceProjectItem> serviceProjectItems = serviceProjectItemMapper.selectList(itemLambdaQueryWrapper);
|
|
|
+ if(!CollectionUtils.isEmpty(serviceProjectItems))
|
|
|
+ {
|
|
|
+ //存在一个未结算完成, 都不可以请核
|
|
|
+ boolean match = serviceProjectItems.stream().anyMatch(e -> e.getStatus() != 5);
|
|
|
+ if(match)
|
|
|
+ {
|
|
|
+ throw new SecurityException("清核失败:子表有未结算完成的数据");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ throw new SecurityException("清核失败:未查询到子表结算信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo 查看是否开启审批流,如果已经开启了,走审批流,反之直接走审批通过接口
|
|
|
+ //暂未加审批直接通过
|
|
|
+ this.projectPassCheck(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void projectPassCheck(Long id)
|
|
|
+ {
|
|
|
+ ServiceProject serviceProject = serviceProjectMapper.selectById(id);
|
|
|
+ if(serviceProject==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败:未查询到主营项目数据");
|
|
|
+ }
|
|
|
+ serviceProject.setStatus(3);
|
|
|
+ serviceProjectMapper.updateById(serviceProject);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void projectPassCancel(Long id)
|
|
|
+ {
|
|
|
+ ServiceProject serviceProject = serviceProjectMapper.selectById(id);
|
|
|
+ if(serviceProject==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败:未查询到主营项目数据");
|
|
|
+ }
|
|
|
+ serviceProject.setStatus(0);
|
|
|
+ serviceProjectMapper.updateById(serviceProject);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void settleAccounts(Long id,int status)
|
|
|
+ {
|
|
|
+ ServiceProjectItem serviceProjectItem = serviceProjectItemMapper.selectById(id);
|
|
|
+ if(status==5)
|
|
|
+ {
|
|
|
+ if(serviceProjectItem.getStatus()==5)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败:此明细已完成结算,禁止重复提交");
|
|
|
+ }
|
|
|
+ //主营项目子表操作
|
|
|
+ serviceProjectItem.setStatus(5);
|
|
|
+ serviceProjectItem.setPayTime(new Date());
|
|
|
+ serviceProjectItemMapper.updateById(serviceProjectItem);
|
|
|
+ //主营项目主表操作
|
|
|
+ ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
|
|
|
+ //主表已收款项增加
|
|
|
+ targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().add(serviceProjectItem.getAmount()));
|
|
|
+ //主表未收款项减少
|
|
|
+ targetServiceProject.setBalanceAmount(targetServiceProject.getBalanceAmount().subtract(serviceProjectItem.getAmount()));
|
|
|
+ targetServiceProject.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ targetServiceProject.setUpdateTime(new Date());
|
|
|
+ targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
|
|
|
+ serviceProjectMapper.updateById(targetServiceProject);
|
|
|
+ }
|
|
|
+ else if(status==6)
|
|
|
+ {
|
|
|
+ if(serviceProjectItem.getStatus()!=5)
|
|
|
+ {
|
|
|
+ throw new SecurityException("操作失败:此明细暂未结算,禁止撤回");
|
|
|
+ }
|
|
|
+ //status=6代表撤回, item状态回到4
|
|
|
+ serviceProjectItem.setStatus(4);
|
|
|
+ serviceProjectItem.setPayTime(null);
|
|
|
+ serviceProjectItemMapper.updateById(serviceProjectItem);
|
|
|
+
|
|
|
+ //主表信息
|
|
|
+ ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
|
|
|
+ //撤回时候,主表已收款项减少
|
|
|
+ targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().subtract(serviceProjectItem.getAmount()));
|
|
|
+ //撤回时候,主表未收款项增加
|
|
|
+ targetServiceProject.setBalanceAmount(targetServiceProject.getBalanceAmount().add(serviceProjectItem.getAmount()));
|
|
|
+ targetServiceProject.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ targetServiceProject.setUpdateTime(new Date());
|
|
|
+ targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
|
|
|
+ serviceProjectMapper.updateById(targetServiceProject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void checkMoney(Long serviceId,List<ServiceProjectItem> items)
|
|
|
{
|
|
|
ServiceProject serviceProject = serviceProjectMapper.selectById(serviceId);
|
|
|
@@ -367,4 +481,6 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
throw new RuntimeException("操作失败,明细总金额大于合同金额");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|