1.1.52 合同激活时选择已有项目后的项目金额,需要变为项目关联合同的总金额

dev
yinq 1 month ago
parent dd4e876b60
commit b80af05d95

@ -66,4 +66,9 @@ public interface IErpProjectContractsService {
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* amount
*/
void syncProjectAmountByLinkedContracts(Long projectId);
}

@ -33,6 +33,7 @@ import org.dromara.oa.crm.domain.vo.CrmCustomerInfoVo;
import org.dromara.oa.crm.service.ICrmCustomerInfoService;
import org.dromara.oa.erp.service.IErpContractChangeService;
import org.dromara.oa.erp.service.IErpContractOrderService;
import org.dromara.oa.erp.service.IErpProjectContractsService;
import org.dromara.oa.erp.service.IErpProjectInfoService;
import org.dromara.oa.erp.service.IErpProjectTypeService;
import org.dromara.oa.erp.domain.vo.ErpProjectTypeVo;
@ -78,6 +79,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
private final ErpContractInfoMapper contractInfoMapper;
private final ErpContractMaterialMapper contractMaterialMapper;
private final ErpProjectContractsMapper projectContractsMapper;
private final IErpProjectContractsService projectContractsService;
private final IErpContractChangeService erpContractChangeService;
private final IErpProjectInfoService projectInfoService;
@ -424,6 +426,10 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
} else {
projectContractsMapper.insertOrUpdate(projectContracts);
}
if ("0".equals(projectContractsBo.getProjectSource())) {
// 选择已有项目:关联当前合同后,项目金额更新为项目关联合同总价之和
projectContractsService.syncProjectAmountByLinkedContracts(projectContractsBo.getProjectId());
}
}
// 删除在旧列表中但不在新列表中的关联

@ -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)

Loading…
Cancel
Save