|
|
|
|
@ -13,11 +13,19 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.dromara.oa.erp.domain.bo.ErpProjectContractsBo;
|
|
|
|
|
import org.dromara.oa.erp.domain.vo.ErpProjectContractsVo;
|
|
|
|
|
import org.dromara.oa.erp.domain.ErpProjectContracts;
|
|
|
|
|
import org.dromara.oa.erp.domain.ErpProjectInfo;
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpProjectContractsMapper;
|
|
|
|
|
import org.dromara.oa.erp.mapper.ErpProjectInfoMapper;
|
|
|
|
|
import org.dromara.oa.erp.service.IErpProjectContractsService;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -31,6 +39,7 @@ import java.util.Collection;
|
|
|
|
|
public class ErpProjectContractsServiceImpl implements IErpProjectContractsService {
|
|
|
|
|
|
|
|
|
|
private final ErpProjectContractsMapper baseMapper;
|
|
|
|
|
private final ErpProjectInfoMapper projectInfoMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询项目关联合同
|
|
|
|
|
@ -69,6 +78,34 @@ public class ErpProjectContractsServiceImpl implements IErpProjectContractsServi
|
|
|
|
|
return baseMapper.selectCustomErpProjectContractsVoList(lqw);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public BigDecimal sumProjectLinkedContractTotalPrice(Long projectId) {
|
|
|
|
|
MPJLambdaWrapper<ErpProjectContracts> lqw = JoinWrappers.lambda(ErpProjectContracts.class);
|
|
|
|
|
lqw.eq(ErpProjectContracts::getProjectId, projectId);
|
|
|
|
|
lqw.eq("t.del_flag", "0");
|
|
|
|
|
List<ErpProjectContractsVo> links = baseMapper.selectCustomErpProjectContractsVoList(lqw);
|
|
|
|
|
if (CollUtil.isEmpty(links)) {
|
|
|
|
|
return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
}
|
|
|
|
|
return links.stream()
|
|
|
|
|
.map(ErpProjectContractsVo::getTotalPrice)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
|
|
.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void syncProjectAmountByLinkedContracts(Long projectId) {
|
|
|
|
|
BigDecimal totalAmount = sumProjectLinkedContractTotalPrice(projectId);
|
|
|
|
|
ErpProjectInfo updateProject = new ErpProjectInfo();
|
|
|
|
|
updateProject.setProjectId(projectId);
|
|
|
|
|
updateProject.setAmount(totalAmount);
|
|
|
|
|
projectInfoMapper.updateById(updateProject);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 已有项目:列表展示金额为项目关联合同总价之和
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
private MPJLambdaWrapper<ErpProjectContracts> buildQueryWrapper(ErpProjectContractsBo bo) {
|
|
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
|
|
MPJLambdaWrapper<ErpProjectContracts> lqw = JoinWrappers.lambda(ErpProjectContracts.class)
|
|
|
|
|
|