|
|
@@ -39,6 +39,7 @@ import org.springblade.project.entity.ServiceProject;
|
|
|
import org.springblade.project.feign.IProjectClient;
|
|
|
import org.springblade.project.feign.IProjectItemClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
+import org.springblade.purchase.sales.feign.IOrderCheckClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
@@ -73,6 +74,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
|
|
|
|
|
|
private IProjectClient iProjectClient;
|
|
|
|
|
|
+ private IOrderCheckClient orderCheckClient;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<AuditProecessVO> selectAuditProecessPage(IPage<AuditProecessVO> page, AuditProecessVO auditProecess) {
|
|
|
return page.setRecords(baseMapper.selectAuditProecessPage(page, auditProecess));
|
|
|
@@ -527,6 +530,183 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
|
|
|
@Override
|
|
|
@Transactional
|
|
|
@GlobalTransactional
|
|
|
+ public void orderCheckProcess(AuditProecess auditProecess)
|
|
|
+ {
|
|
|
+ //查看最新操作记录,防止重复提交
|
|
|
+ AuditProecess auditProecess1= baseMapper.selectById(auditProecess.getId());
|
|
|
+ if(auditProecess1==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("未查到此审批记录,禁止操作");
|
|
|
+ }
|
|
|
+ if(auditProecess1.getAuditStatus().equals("A")||auditProecess1.getAuditStatus().equals("B"))
|
|
|
+ {
|
|
|
+ throw new SecurityException("当前记录已经完成审批,禁止重复操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(auditProecess.getAuditStatus()==null || !auditProecess.getAuditStatus().equals("S"))
|
|
|
+ {
|
|
|
+ throw new SecurityException("审批状态非待审,禁止操作");
|
|
|
+ }
|
|
|
+ //信息
|
|
|
+ Message sendMessage=new Message();
|
|
|
+ sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
+ sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
+ sendMessage.setToUserId(auditProecess.getSendUserId());
|
|
|
+ sendMessage.setToUserName(auditProecess.getSendName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl(auditProecess.getUrl());
|
|
|
+ sendMessage.setPageLabel(auditProecess.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(auditProecess.getPageStatus());
|
|
|
+
|
|
|
+
|
|
|
+ //用户操作 1.通过 2.驳回
|
|
|
+ Integer operate = auditProecess.getOperate();
|
|
|
+ //查看当前审批是否为最后一级
|
|
|
+ String iffinalItem = auditProecess.getIffinalItem();
|
|
|
+ //审批人
|
|
|
+ auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
|
|
|
+ //审批时间
|
|
|
+ auditProecess.setAuditOpTime(new Date());
|
|
|
+ //不是最后一级
|
|
|
+ if(iffinalItem.equals("F"))
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ //通过
|
|
|
+ if(operate==1)
|
|
|
+ {
|
|
|
+ //如果是第一级, 则修改状态为审批中
|
|
|
+ if(auditProecess.getLevelId()==1)
|
|
|
+ {
|
|
|
+ Order order=new Order();
|
|
|
+ order.setId(auditProecess.getSrcBillId());
|
|
|
+ order.setStatus(2);
|
|
|
+ R submit = orderCheckClient.submit(order);
|
|
|
+ if(!submit.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("审批开始修改审核状态失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ //查询下一级,开启待审
|
|
|
+ LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
+ auditProecessLambdaQueryWrapper
|
|
|
+ .eq(AuditProecess::getBatchNo,auditProecess.getBatchNo())
|
|
|
+ .eq(AuditProecess::getSrcBillId,auditProecess.getSrcBillId())
|
|
|
+ .eq(AuditProecess::getIsDelete,0)
|
|
|
+ .eq(AuditProecess::getActId,auditProecess.getActId())
|
|
|
+ .eq(AuditProecess::getBillId,auditProecess.getBillId())
|
|
|
+ .eq(AuditProecess::getBillNo,auditProecess.getBillNo())
|
|
|
+ .eq(AuditProecess::getTenantId,AuthUtil.getTenantId())
|
|
|
+ .eq(AuditProecess::getLevelId,auditProecess.getLevelId()+1);
|
|
|
+ Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
|
|
|
+ if(count!=null && count>1)
|
|
|
+ {
|
|
|
+ throw new SecurityException("审核失败,获取下一级信息失败");
|
|
|
+ }
|
|
|
+ AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
|
|
|
+ if(proecess==null)
|
|
|
+ {
|
|
|
+ throw new SecurityException("审批通过=>获取下一级信息失败");
|
|
|
+ }
|
|
|
+ proecess.setAuditStatus("S");
|
|
|
+ baseMapper.updateById(proecess);
|
|
|
+ Message message=new Message();
|
|
|
+ message.setUserName(AuthUtil.getUserName());
|
|
|
+ message.setUserId(AuthUtil.getUserId());
|
|
|
+ //消息通知下一级
|
|
|
+ message.setToUserId(Long.valueOf(proecess.getAuditUserId()));
|
|
|
+ message.setMessageType(1);
|
|
|
+ message.setTenantId(AuthUtil.getTenantId());
|
|
|
+ message.setMessageBody("你有新的审批待操作,请及时处理");
|
|
|
+ message.setCreateUser(AuthUtil.getUserId());
|
|
|
+ message.setUrl("/approveData/index");
|
|
|
+ message.setCreateTime(new Date());
|
|
|
+
|
|
|
+ R save = messageClient.save(message);
|
|
|
+ if(!save.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if(operate==2)
|
|
|
+ {
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ //todo 调用feign取消
|
|
|
+ R r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
|
|
|
+ if(!r.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("修改财务数据失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ sendMessage.setMessageBody("您的请核未通过,请查看原因");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if(!save.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //是最后一级
|
|
|
+ else if(iffinalItem.equals("T"))
|
|
|
+ {
|
|
|
+ //通过
|
|
|
+ if(operate==1)
|
|
|
+ {
|
|
|
+ //todo 调用feign直接通过
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ R r = orderCheckClient.passCheck(auditProecess.getSrcBillId());
|
|
|
+ if(!r.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("修改财务数据失败");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sendMessage.setMessageBody("您的请核已通过,请继续操作");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if(!save.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if(operate==2)
|
|
|
+ {
|
|
|
+ //todo 调用feign取消
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ R r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
|
|
|
+ if(!r.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("修改财务数据失败");
|
|
|
+ }
|
|
|
+ sendMessage.setMessageBody("您的请核未通过,请查看原因");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if(!save.isSuccess())
|
|
|
+ {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ throw new SecurityException("审批异常,请联系管理员");
|
|
|
+ }
|
|
|
+ //保存操作记录
|
|
|
+ auditProecess.setAuditMsg(auditProecess.getAuditMsg());
|
|
|
+ auditProecess.setAuditItem(new Date());
|
|
|
+ baseMapper.updateById(auditProecess);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ @GlobalTransactional
|
|
|
public void batchOperation(List<AuditProecess> processLis, Integer operate,String auditMsg)
|
|
|
{
|
|
|
processLis.forEach(e->{
|