|
|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
package org.dromara.oa.erp.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
|
@ -8,13 +7,9 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.dromara.oa.erp.constant.ProjectCategoryConstant;
|
|
|
|
|
import org.dromara.oa.erp.domain.ErpFinAccountReceivableStage;
|
|
|
|
|
import org.dromara.oa.erp.domain.ErpProjectInfo;
|
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo;
|
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpFinAccountReceivableStageMapper;
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpProjectInfoMapper;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@ -25,9 +20,11 @@ import org.dromara.oa.erp.mapper.ErpFinAccountReceivableMapper;
|
|
|
|
|
import org.dromara.oa.erp.service.IErpFinAccountReceivableService;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 应收款信息Service业务层处理
|
|
|
|
|
@ -164,10 +161,23 @@ public class ErpFinAccountReceivableServiceImpl implements IErpFinAccountReceiva
|
|
|
|
|
* @return 是否删除成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
|
|
if (isValid) {
|
|
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
|
|
}
|
|
|
|
|
List<Long> allReceivableStageIdList = new ArrayList<>();
|
|
|
|
|
for (Long accountReceivableId : ids) {
|
|
|
|
|
MPJLambdaWrapper<ErpFinAccountReceivableStage> lqw = JoinWrappers.lambda(ErpFinAccountReceivableStage.class)
|
|
|
|
|
.selectAll(ErpFinAccountReceivableStage.class)
|
|
|
|
|
.eq(ErpFinAccountReceivableStage::getAccountReceivableId, accountReceivableId);
|
|
|
|
|
List<ErpFinAccountReceivableStage> finAccountReceivableStageList = stageMapper.selectList(lqw);
|
|
|
|
|
List<Long> receivableStageIdList = finAccountReceivableStageList.stream()
|
|
|
|
|
.map(ErpFinAccountReceivableStage::getReceivableStageId)
|
|
|
|
|
.toList();
|
|
|
|
|
allReceivableStageIdList.addAll(receivableStageIdList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stageMapper.deleteByIds(allReceivableStageIdList);
|
|
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -188,29 +198,22 @@ public class ErpFinAccountReceivableServiceImpl implements IErpFinAccountReceiva
|
|
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
|
|
MPJLambdaWrapper<ErpFinAccountReceivable> lqw = JoinWrappers.lambda(ErpFinAccountReceivable.class)
|
|
|
|
|
.selectAll(ErpFinAccountReceivable.class)
|
|
|
|
|
.select(ErpProjectInfo::getProjectCode)
|
|
|
|
|
.select(ErpProjectInfo::getProjectName)
|
|
|
|
|
.selectAs(ErpProjectInfo::getProjectCode,"receivableProjectCode")
|
|
|
|
|
.selectAs(ErpProjectInfo::getProjectName,"receivableProjectName")
|
|
|
|
|
.selectAs(ErpProjectInfo::getProjectStatus,"receivableProjectStatus")
|
|
|
|
|
.leftJoin(ErpProjectInfo.class, ErpProjectInfo::getProjectId, ErpFinAccountReceivable::getProjectId)
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getInvoiceCode()), ErpFinAccountReceivable::getInvoiceCode, bo.getInvoiceCode())
|
|
|
|
|
.eq(bo.getProjectId() != null, ErpFinAccountReceivable::getProjectId, bo.getProjectId())
|
|
|
|
|
.eq(bo.getProjectCategory() != null, ErpFinAccountReceivable::getProjectCategory, bo.getProjectCategory())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getProjectType()), ErpFinAccountReceivable::getProjectType, bo.getProjectType())
|
|
|
|
|
.eq(bo.getContractId() != null, ErpFinAccountReceivable::getContractId, bo.getContractId())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getGeneralContractor()), ErpFinAccountReceivable::getGeneralContractor, bo.getGeneralContractor())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getCustomerAbbreviation()), ErpFinAccountReceivable::getCustomerAbbreviation, bo.getCustomerAbbreviation())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getContractParties()), ErpFinAccountReceivable::getContractParties, bo.getContractParties())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getWbsElement()), ErpFinAccountReceivable::getWbsElement, bo.getWbsElement())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getLineItem()), ErpFinAccountReceivable::getLineItem, bo.getLineItem())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFinProjectStatus()), ErpFinAccountReceivable::getFinProjectStatus, bo.getFinProjectStatus())
|
|
|
|
|
.eq(bo.getSettlementMonth() != null, ErpFinAccountReceivable::getSettlementMonth, bo.getSettlementMonth())
|
|
|
|
|
.eq(bo.getIncome() != null, ErpFinAccountReceivable::getIncome, bo.getIncome())
|
|
|
|
|
.eq(bo.getBackToBackRatio() != null, ErpFinAccountReceivable::getBackToBackRatio, bo.getBackToBackRatio())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getCurrency()), ErpFinAccountReceivable::getCurrency, bo.getCurrency())
|
|
|
|
|
.eq(bo.getInvoiceAmount() != null, ErpFinAccountReceivable::getInvoiceAmount, bo.getInvoiceAmount())
|
|
|
|
|
.eq(bo.getTotalPrice() != null, ErpFinAccountReceivable::getTotalPrice, bo.getTotalPrice())
|
|
|
|
|
.eq(bo.getTotalPriceHighway() != null, ErpFinAccountReceivable::getTotalPriceHighway, bo.getTotalPriceHighway())
|
|
|
|
|
.eq(bo.getTotalPriceOri() != null, ErpFinAccountReceivable::getTotalPriceOri, bo.getTotalPriceOri())
|
|
|
|
|
.eq(bo.getExchangeRate() != null, ErpFinAccountReceivable::getExchangeRate, bo.getExchangeRate());
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getReceivableProjectCode()), ErpProjectInfo::getProjectCode, bo.getReceivableProjectCode())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getReceivableProjectName()), ErpProjectInfo::getProjectName, bo.getReceivableProjectName())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getReceivableProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getReceivableProjectStatus())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getInvoiceCode()), ErpFinAccountReceivable::getInvoiceCode, bo.getInvoiceCode())
|
|
|
|
|
.like(bo.getProjectCategory() != null, ErpFinAccountReceivable::getProjectCategory, bo.getProjectCategory())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getProjectType()), ErpFinAccountReceivable::getProjectType, bo.getProjectType())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getGeneralContractor()), ErpFinAccountReceivable::getGeneralContractor, bo.getGeneralContractor())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getCustomerAbbreviation()), ErpFinAccountReceivable::getCustomerAbbreviation, bo.getCustomerAbbreviation())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getContractParties()), ErpFinAccountReceivable::getContractParties, bo.getContractParties())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getWbsElement()), ErpFinAccountReceivable::getWbsElement, bo.getWbsElement())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getLineItem()), ErpFinAccountReceivable::getLineItem, bo.getLineItem())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getFinProjectStatus()), ErpFinAccountReceivable::getFinProjectStatus, bo.getFinProjectStatus());
|
|
|
|
|
return lqw;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -221,30 +224,9 @@ public class ErpFinAccountReceivableServiceImpl implements IErpFinAccountReceiva
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public ErpFinAccountReceivableVo getAccountReceivableWithProjectByReceivableId(Long accountReceivableId) {
|
|
|
|
|
ErpFinAccountReceivableVo erpFinAccountReceivableVo = this.queryById(accountReceivableId);
|
|
|
|
|
ErpProjectInfoVo erpProjectInfoVo = this.queryJoinProjectByProjectId(erpFinAccountReceivableVo.getProjectId());
|
|
|
|
|
erpFinAccountReceivableVo.setErpProjectInfoVo(erpProjectInfoVo);
|
|
|
|
|
return erpFinAccountReceivableVo;
|
|
|
|
|
|
|
|
|
|
return baseMapper.selectReceivableVoWithProjectById(accountReceivableId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据项目ID获取项目信息,主要提供财务应收款使用
|
|
|
|
|
*
|
|
|
|
|
* @param projectId 项目ID
|
|
|
|
|
* @return 项目信息
|
|
|
|
|
*/
|
|
|
|
|
private ErpProjectInfoVo queryJoinProjectByProjectId(Long projectId) {
|
|
|
|
|
ErpProjectInfoVo erpProjectInfoVo = new ErpProjectInfoVo();
|
|
|
|
|
|
|
|
|
|
MPJLambdaWrapper<ErpProjectInfo> lqw = JoinWrappers.lambda(ErpProjectInfo.class)
|
|
|
|
|
.selectAll(ErpProjectInfo.class)
|
|
|
|
|
.eq(projectId != null, ErpProjectInfo::getProjectId, projectId);
|
|
|
|
|
List<ErpProjectInfoVo> erpProjectInfoVoList = erpProjectInfoMapper.selectErpProjectInfoVoJoinList(lqw);
|
|
|
|
|
if (erpProjectInfoVoList != null && !erpProjectInfoVoList.isEmpty()) {
|
|
|
|
|
erpProjectInfoVo = erpProjectInfoVoList.get(0);
|
|
|
|
|
}
|
|
|
|
|
return erpProjectInfoVo;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|