|
|
|
@ -19,7 +19,9 @@ import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.config.RdBudgetDefinitionConfig;
|
|
|
|
import org.dromara.oa.erp.domain.*;
|
|
|
|
import org.dromara.oa.erp.domain.*;
|
|
|
|
|
|
|
|
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
|
|
|
|
import org.dromara.oa.erp.enums.ProjectCategoryEnum;
|
|
|
|
import org.dromara.oa.erp.enums.ProjectCategoryEnum;
|
|
|
|
import org.dromara.oa.erp.enums.RdBudgetCostEnums;
|
|
|
|
import org.dromara.oa.erp.enums.RdBudgetCostEnums;
|
|
|
|
import org.dromara.oa.erp.mapper.*;
|
|
|
|
import org.dromara.oa.erp.mapper.*;
|
|
|
|
@ -90,6 +92,8 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
|
|
|
|
|
|
|
|
private final RdProjectBudgetExcelExporter rdProjectBudgetExcelExporter;
|
|
|
|
private final RdProjectBudgetExcelExporter rdProjectBudgetExcelExporter;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final RdBudgetDefinitionConfig rdBudgetDefinitionConfig;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@DubboReference(timeout = 30000)
|
|
|
|
@DubboReference(timeout = 30000)
|
|
|
|
private RemoteWorkflowService remoteWorkflowService;
|
|
|
|
private RemoteWorkflowService remoteWorkflowService;
|
|
|
|
@ -157,8 +161,13 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
loadRdBudgetCosts(budgetId, erpBudgetInfoVo);
|
|
|
|
loadRdBudgetCosts(budgetId, erpBudgetInfoVo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
erpBudgetInfoVo = new ErpBudgetInfoVo();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<BudgetDefinitionDTO> subjects = rdBudgetDefinitionConfig.getAllSubjects();
|
|
|
|
|
|
|
|
erpBudgetInfoVo.setBudgetDefinitionDTOList(subjects);
|
|
|
|
|
|
|
|
|
|
|
|
return erpBudgetInfoVo;
|
|
|
|
return erpBudgetInfoVo;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -185,22 +194,14 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void loadRdBudgetCosts(Long budgetId, ErpBudgetInfoVo erpBudgetInfoVo) {
|
|
|
|
private void loadRdBudgetCosts(Long budgetId, ErpBudgetInfoVo erpBudgetInfoVo) {
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetEquipmentCostList(
|
|
|
|
|
|
|
|
queryBudgetCosts(erpRdBudgetEquipmentCostMapper, ErpRdBudgetEquipmentCost.class, budgetId));
|
|
|
|
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetMaterialCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetMaterialCostList(
|
|
|
|
queryBudgetCosts(erpRdBudgetMaterialCostMapper, ErpRdBudgetMaterialCost.class, budgetId));
|
|
|
|
queryBudgetCosts(erpRdBudgetMaterialCostMapper, ErpRdBudgetMaterialCost.class, budgetId));
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTravelCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTravelCostList(
|
|
|
|
queryBudgetCosts(erpRdBudgetTravelCostMapper, ErpRdBudgetTravelCost.class, budgetId));
|
|
|
|
queryBudgetCosts(erpRdBudgetTravelCostMapper, ErpRdBudgetTravelCost.class, budgetId));
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetMeetingCostList(
|
|
|
|
|
|
|
|
queryBudgetCosts(erpRdBudgetMeetingCostMapper, ErpRdBudgetMeetingCost.class, budgetId));
|
|
|
|
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetExchangeCostList(
|
|
|
|
|
|
|
|
queryBudgetCosts(erpRdBudgetExchangeCostMapper, ErpRdBudgetExchangeCost.class, budgetId));
|
|
|
|
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTechCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTechCostList(
|
|
|
|
queryBudgetCosts(erpRdBudgetTechCostMapper, ErpRdBudgetTechCost.class, budgetId));
|
|
|
|
queryBudgetCosts(erpRdBudgetTechCostMapper, ErpRdBudgetTechCost.class, budgetId));
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetLaborCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetLaborCostList(
|
|
|
|
queryBudgetCosts(erpRdBudgetLaborCostMapper, ErpRdBudgetLaborCost.class, budgetId));
|
|
|
|
queryBudgetCosts(erpRdBudgetLaborCostMapper, ErpRdBudgetLaborCost.class, budgetId));
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetLiteratureCostList(
|
|
|
|
|
|
|
|
queryBudgetCosts(erpRdBudgetLiteratureCostMapper, ErpRdBudgetLiteratureCost.class, budgetId));
|
|
|
|
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTestingCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetTestingCostList(
|
|
|
|
queryBudgetCosts(erpRdBudgetTestingCostMapper, ErpRdBudgetTestingCost.class, budgetId));
|
|
|
|
queryBudgetCosts(erpRdBudgetTestingCostMapper, ErpRdBudgetTestingCost.class, budgetId));
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetOtherCostList(
|
|
|
|
erpBudgetInfoVo.setErpRdBudgetOtherCostList(
|
|
|
|
@ -621,22 +622,14 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void processRdBudgetDeletions(ErpBudgetInfo erpBudgetInfo) {
|
|
|
|
private void processRdBudgetDeletions(ErpBudgetInfo erpBudgetInfo) {
|
|
|
|
executeInBatch(() -> {
|
|
|
|
executeInBatch(() -> {
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdEquipmentCostIdList(),
|
|
|
|
|
|
|
|
erpRdBudgetEquipmentCostMapper::deleteByIds, "设备成本");
|
|
|
|
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdMaterialCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdMaterialCostIdList(),
|
|
|
|
erpRdBudgetMaterialCostMapper::deleteByIds, "材料成本");
|
|
|
|
erpRdBudgetMaterialCostMapper::deleteByIds, "材料成本");
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTravelCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTravelCostIdList(),
|
|
|
|
erpRdBudgetTravelCostMapper::deleteByIds, "差旅成本");
|
|
|
|
erpRdBudgetTravelCostMapper::deleteByIds, "差旅成本");
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdMeetingCostIdList(),
|
|
|
|
|
|
|
|
erpRdBudgetMeetingCostMapper::deleteByIds, "会议成本");
|
|
|
|
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdExchangeCostIdList(),
|
|
|
|
|
|
|
|
erpRdBudgetExchangeCostMapper::deleteByIds, "交流成本");
|
|
|
|
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTechCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTechCostIdList(),
|
|
|
|
erpRdBudgetTechCostMapper::deleteByIds, "技术成本");
|
|
|
|
erpRdBudgetTechCostMapper::deleteByIds, "技术成本");
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdLaborCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdLaborCostIdList(),
|
|
|
|
erpRdBudgetLaborCostMapper::deleteByIds, "人工成本");
|
|
|
|
erpRdBudgetLaborCostMapper::deleteByIds, "人工成本");
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdLiteratureCostIdList(),
|
|
|
|
|
|
|
|
erpRdBudgetLiteratureCostMapper::deleteByIds, "文献成本");
|
|
|
|
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTestingCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdTestingCostIdList(),
|
|
|
|
erpRdBudgetTestingCostMapper::deleteByIds, "测试成本");
|
|
|
|
erpRdBudgetTestingCostMapper::deleteByIds, "测试成本");
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdOtherCostIdList(),
|
|
|
|
deleteIfNotEmpty(erpBudgetInfo.getToDeletedRdOtherCostIdList(),
|
|
|
|
@ -653,22 +646,14 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void processRdBudgetInsertOrUpdates(ErpBudgetInfo erpBudgetInfo, Long budgetId, Long projectId) {
|
|
|
|
private void processRdBudgetInsertOrUpdates(ErpBudgetInfo erpBudgetInfo, Long budgetId, Long projectId) {
|
|
|
|
executeInBatch(() -> {
|
|
|
|
executeInBatch(() -> {
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetEquipmentCostList(), budgetId, projectId,
|
|
|
|
|
|
|
|
erpRdBudgetEquipmentCostMapper::insertOrUpdateBatch, ErpRdBudgetEquipmentCost.class);
|
|
|
|
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetMaterialCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetMaterialCostList(), budgetId, projectId,
|
|
|
|
erpRdBudgetMaterialCostMapper::insertOrUpdateBatch, ErpRdBudgetMaterialCost.class);
|
|
|
|
erpRdBudgetMaterialCostMapper::insertOrUpdateBatch, ErpRdBudgetMaterialCost.class);
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTravelCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTravelCostList(), budgetId, projectId,
|
|
|
|
erpRdBudgetTravelCostMapper::insertOrUpdateBatch, ErpRdBudgetTravelCost.class);
|
|
|
|
erpRdBudgetTravelCostMapper::insertOrUpdateBatch, ErpRdBudgetTravelCost.class);
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetMeetingCostList(), budgetId, projectId,
|
|
|
|
|
|
|
|
erpRdBudgetMeetingCostMapper::insertOrUpdateBatch, ErpRdBudgetMeetingCost.class);
|
|
|
|
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetExchangeCostList(), budgetId, projectId,
|
|
|
|
|
|
|
|
erpRdBudgetExchangeCostMapper::insertOrUpdateBatch, ErpRdBudgetExchangeCost.class);
|
|
|
|
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTechCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTechCostList(), budgetId, projectId,
|
|
|
|
erpRdBudgetTechCostMapper::insertOrUpdateBatch, ErpRdBudgetTechCost.class);
|
|
|
|
erpRdBudgetTechCostMapper::insertOrUpdateBatch, ErpRdBudgetTechCost.class);
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetLaborCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetLaborCostList(), budgetId, projectId,
|
|
|
|
erpRdBudgetLaborCostMapper::insertOrUpdateBatch, ErpRdBudgetLaborCost.class);
|
|
|
|
erpRdBudgetLaborCostMapper::insertOrUpdateBatch, ErpRdBudgetLaborCost.class);
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetLiteratureCostList(), budgetId, projectId,
|
|
|
|
|
|
|
|
erpRdBudgetLiteratureCostMapper::insertOrUpdateBatch, ErpRdBudgetLiteratureCost.class);
|
|
|
|
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTestingCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetTestingCostList(), budgetId, projectId,
|
|
|
|
erpRdBudgetTestingCostMapper::insertOrUpdateBatch, ErpRdBudgetTestingCost.class);
|
|
|
|
erpRdBudgetTestingCostMapper::insertOrUpdateBatch, ErpRdBudgetTestingCost.class);
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetOtherCostList(), budgetId, projectId,
|
|
|
|
processCostList(erpBudgetInfo.getErpRdBudgetOtherCostList(), budgetId, projectId,
|
|
|
|
@ -772,7 +757,6 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param budgetId
|
|
|
|
* @param budgetId
|
|
|
|
* @return excel下载
|
|
|
|
* @return excel下载
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@ -792,4 +776,13 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService<ErpBudgetI
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取研发预算标准标识说明
|
|
|
|
|
|
|
|
* @return List<BudgetDefinitionDTO>
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public List<BudgetDefinitionDTO> getBudgetDefinitionList(){
|
|
|
|
|
|
|
|
return rdBudgetDefinitionConfig.getAllSubjects();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|