|
|
|
@ -1,7 +1,11 @@
|
|
|
|
package org.dromara.oa.erp.service.impl;
|
|
|
|
package org.dromara.oa.erp.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
|
|
|
import org.dromara.common.core.enums.BusinessStatusEnum;
|
|
|
|
|
|
|
|
import org.dromara.common.core.enums.OAStatusEnum;
|
|
|
|
|
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
@ -9,18 +13,12 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import org.dromara.oa.erp.domain.ErpContractPaymentMethod;
|
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
|
import org.dromara.oa.erp.domain.ErpFinInvoiceDetail;
|
|
|
|
import org.dromara.oa.erp.domain.*;
|
|
|
|
import org.dromara.oa.erp.domain.ErpProjectInfo;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpFinInvoiceDetailBo;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpContractPaymentMethodVo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpContractPaymentMethodVo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpFinInvoiceDetailVo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpFinInvoiceDetailVo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpContractPaymentMethodMapper;
|
|
|
|
import org.dromara.oa.erp.mapper.ErpContractPaymentMethodMapper;
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinInvoiceAttachMapper;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinInvoiceDetailMapper;
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinInvoiceDetailMapper;
|
|
|
|
import org.dromara.oa.workflow.strategy.InvoiceWorkflowStrategy;
|
|
|
|
import org.dromara.oa.workflow.strategy.InvoiceWorkflowStrategy;
|
|
|
|
import org.dromara.workflow.api.RemoteWorkflowService;
|
|
|
|
import org.dromara.workflow.api.RemoteWorkflowService;
|
|
|
|
@ -30,14 +28,15 @@ import org.dromara.workflow.strategy.WorkflowStrategy;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpFinInvoiceInfoBo;
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpFinInvoiceInfoBo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpFinInvoiceInfoVo;
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpFinInvoiceInfoVo;
|
|
|
|
import org.dromara.oa.erp.domain.ErpFinInvoiceInfo;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinInvoiceInfoMapper;
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinInvoiceInfoMapper;
|
|
|
|
import org.dromara.oa.erp.service.IErpFinInvoiceInfoService;
|
|
|
|
import org.dromara.oa.erp.service.IErpFinInvoiceInfoService;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 开票信息Service业务层处理
|
|
|
|
* 开票信息Service业务层处理
|
|
|
|
@ -83,8 +82,8 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService<ErpFin
|
|
|
|
public ErpFinInvoiceInfoVo queryById(Long invoiceId) {
|
|
|
|
public ErpFinInvoiceInfoVo queryById(Long invoiceId) {
|
|
|
|
ErpFinInvoiceInfoVo erpFinInvoiceInfoVo = baseMapper.selectVoById(invoiceId);
|
|
|
|
ErpFinInvoiceInfoVo erpFinInvoiceInfoVo = baseMapper.selectVoById(invoiceId);
|
|
|
|
MPJLambdaWrapper<ErpFinInvoiceDetail> lqw = JoinWrappers.lambda(ErpFinInvoiceDetail.class)
|
|
|
|
MPJLambdaWrapper<ErpFinInvoiceDetail> lqw = JoinWrappers.lambda(ErpFinInvoiceDetail.class)
|
|
|
|
.selectAll(ErpFinInvoiceDetail.class)
|
|
|
|
.selectAll(ErpFinInvoiceDetail.class)
|
|
|
|
.eq(invoiceId != null, ErpFinInvoiceDetail::getInvoiceId, invoiceId);
|
|
|
|
.eq(invoiceId != null, ErpFinInvoiceDetail::getInvoiceId, invoiceId);
|
|
|
|
List<ErpFinInvoiceDetailVo> erpFinInvoiceDetailVoList = erpFinInvoiceDetailMapper.selectVoList(lqw);
|
|
|
|
List<ErpFinInvoiceDetailVo> erpFinInvoiceDetailVoList = erpFinInvoiceDetailMapper.selectVoList(lqw);
|
|
|
|
erpFinInvoiceInfoVo.setErpFinInvoiceDetailVoList(erpFinInvoiceDetailVoList);
|
|
|
|
erpFinInvoiceInfoVo.setErpFinInvoiceDetailVoList(erpFinInvoiceDetailVoList);
|
|
|
|
Long contractId = erpFinInvoiceInfoVo.getContractId();
|
|
|
|
Long contractId = erpFinInvoiceInfoVo.getContractId();
|
|
|
|
@ -124,16 +123,16 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService<ErpFin
|
|
|
|
private MPJLambdaWrapper<ErpFinInvoiceInfo> buildQueryWrapper(ErpFinInvoiceInfoBo bo) {
|
|
|
|
private MPJLambdaWrapper<ErpFinInvoiceInfo> buildQueryWrapper(ErpFinInvoiceInfoBo bo) {
|
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
|
MPJLambdaWrapper<ErpFinInvoiceInfo> lqw = JoinWrappers.lambda(ErpFinInvoiceInfo.class)
|
|
|
|
MPJLambdaWrapper<ErpFinInvoiceInfo> lqw = JoinWrappers.lambda(ErpFinInvoiceInfo.class)
|
|
|
|
.selectAll(ErpFinInvoiceInfo.class)
|
|
|
|
.selectAll(ErpFinInvoiceInfo.class)
|
|
|
|
.eq(ErpFinInvoiceInfo::getDelFlag, "0")
|
|
|
|
.eq(ErpFinInvoiceInfo::getDelFlag, "0")
|
|
|
|
.like(StringUtils.isNotBlank(bo.getProjectCode()), ErpFinInvoiceInfo::getProjectCode, bo.getProjectCode())
|
|
|
|
.like(StringUtils.isNotBlank(bo.getProjectCode()), ErpFinInvoiceInfo::getProjectCode, bo.getProjectCode())
|
|
|
|
.like(StringUtils.isNotBlank(bo.getProjectName()), ErpFinInvoiceInfo::getProjectName, bo.getProjectName())
|
|
|
|
.like(StringUtils.isNotBlank(bo.getProjectName()), ErpFinInvoiceInfo::getProjectName, bo.getProjectName())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getInvoiceCategory()), ErpFinInvoiceInfo::getInvoiceCategory, bo.getInvoiceCategory())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getInvoiceCategory()), ErpFinInvoiceInfo::getInvoiceCategory, bo.getInvoiceCategory())
|
|
|
|
.like(StringUtils.isNotBlank(bo.getCustomerName()), ErpFinInvoiceInfo::getCustomerName, bo.getCustomerName())
|
|
|
|
.like(StringUtils.isNotBlank(bo.getCustomerName()), ErpFinInvoiceInfo::getCustomerName, bo.getCustomerName())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getEarlyFlag()), ErpFinInvoiceInfo::getEarlyFlag, bo.getEarlyFlag())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getEarlyFlag()), ErpFinInvoiceInfo::getEarlyFlag, bo.getEarlyFlag())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpFinInvoiceInfo::getFlowStatus, bo.getFlowStatus())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpFinInvoiceInfo::getFlowStatus, bo.getFlowStatus())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getInvoiceStatus()), ErpFinInvoiceInfo::getInvoiceStatus, bo.getInvoiceStatus())
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getInvoiceStatus()), ErpFinInvoiceInfo::getInvoiceStatus, bo.getInvoiceStatus())
|
|
|
|
.orderByDesc("invoice_id");
|
|
|
|
.orderByDesc("invoice_id");
|
|
|
|
return lqw;
|
|
|
|
return lqw;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -202,10 +201,26 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService<ErpFin
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
|
|
|
|
|
AtomicBoolean flag = new AtomicBoolean(false);
|
|
|
|
if (isValid) {
|
|
|
|
if (isValid) {
|
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
|
ids.forEach(id -> {
|
|
|
|
|
|
|
|
ErpFinInvoiceInfo erpFinInvoiceInfo = baseMapper.selectById(id);
|
|
|
|
|
|
|
|
if (!erpFinInvoiceInfo.getInvoiceStatus().equals(OAStatusEnum.DRAFT.getStatus())
|
|
|
|
|
|
|
|
|| !erpFinInvoiceInfo.getFlowStatus().equals(BusinessStatusEnum.DRAFT.getStatus())) {
|
|
|
|
|
|
|
|
throw new ServiceException("此开票申请已进入审批,不能删除!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaUpdateWrapper<ErpFinInvoiceInfo> luw = new LambdaUpdateWrapper<>();
|
|
|
|
|
|
|
|
// luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, "");
|
|
|
|
|
|
|
|
luw.set(ErpFinInvoiceInfo::getDelFlag, "1");
|
|
|
|
|
|
|
|
luw.set(ErpFinInvoiceInfo::getUpdateBy, LoginHelper.getUserId());
|
|
|
|
|
|
|
|
luw.set(ErpFinInvoiceInfo::getUpdateTime, new Date());
|
|
|
|
|
|
|
|
luw.eq(ErpFinInvoiceInfo::getInvoiceId, id);
|
|
|
|
|
|
|
|
flag.set(baseMapper.update(null, luw) > 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
|
return flag.get();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -217,9 +232,9 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService<ErpFin
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<ErpContractPaymentMethodVo> getErpContractPaymentMethodList(Long contractId) {
|
|
|
|
public List<ErpContractPaymentMethodVo> getErpContractPaymentMethodList(Long contractId) {
|
|
|
|
MPJLambdaWrapper<ErpContractPaymentMethod> lqw = JoinWrappers.lambda(ErpContractPaymentMethod.class)
|
|
|
|
MPJLambdaWrapper<ErpContractPaymentMethod> lqw = JoinWrappers.lambda(ErpContractPaymentMethod.class)
|
|
|
|
.selectAll(ErpContractPaymentMethod.class)
|
|
|
|
.selectAll(ErpContractPaymentMethod.class)
|
|
|
|
.eq(contractId != null, ErpContractPaymentMethod::getContractId, contractId)
|
|
|
|
.eq(contractId != null, ErpContractPaymentMethod::getContractId, contractId)
|
|
|
|
.orderByAsc(ErpContractPaymentMethod::getSortOrder);
|
|
|
|
.orderByAsc(ErpContractPaymentMethod::getSortOrder);
|
|
|
|
List<ErpContractPaymentMethodVo> erpContractPaymentMethodVoList = erpContractPaymentMethodMapper.selectCustomErpContractPaymentMethodVoList(lqw);
|
|
|
|
List<ErpContractPaymentMethodVo> erpContractPaymentMethodVoList = erpContractPaymentMethodMapper.selectCustomErpContractPaymentMethodVoList(lqw);
|
|
|
|
return erpContractPaymentMethodVoList;
|
|
|
|
return erpContractPaymentMethodVoList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -238,7 +253,7 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService<ErpFin
|
|
|
|
validEntityBeforeSave(update);
|
|
|
|
validEntityBeforeSave(update);
|
|
|
|
UpdateWrapper<ErpFinInvoiceInfo> updateWrapper = new UpdateWrapper<>();
|
|
|
|
UpdateWrapper<ErpFinInvoiceInfo> updateWrapper = new UpdateWrapper<>();
|
|
|
|
updateWrapper.set("oss_id", bo.getOssId())
|
|
|
|
updateWrapper.set("oss_id", bo.getOssId())
|
|
|
|
.eq("invoice_id", bo.getInvoiceId());
|
|
|
|
.eq("invoice_id", bo.getInvoiceId());
|
|
|
|
Boolean flag = baseMapper.update(updateWrapper) > 0;
|
|
|
|
Boolean flag = baseMapper.update(updateWrapper) > 0;
|
|
|
|
return flag;
|
|
|
|
return flag;
|
|
|
|
|
|
|
|
|
|
|
|
|