1.1.01后端:

feat(budget):根据研发预算新模板修改保存功能
dev
xs 2 months ago
parent 764867634b
commit 3fc03af7af

@ -0,0 +1,153 @@
package org.dromara.oa.erp.config;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author xins
* @Date 2025/12/25 15:28
* @Description: - Nacos
* * 使@RefreshScope
*/
@Slf4j
@Component
@RefreshScope // 重要:支持配置动态刷新
@ConfigurationProperties(prefix = "budget")
@Data
public class RdBudgetDefinitionConfig {
/**
*
*/
private List<BudgetDefinitionDTO> subjects = new ArrayList<>();
/**
*
*/
private Map<Integer, String> subjectNameMap;
/**
*
*/
private Map<Integer, String> subjectDefinitionMap;
/**
*
*/
private Map<Integer, String> subjectFlagMap;
/**
*
*/
private Map<Integer, BudgetDefinitionDTO> subjectMap;
/**
*
*/
@PostConstruct
public void initCache() {
refreshCache();
log.info("预算科目配置初始化完成,共 {} 条记录", subjects.size());
}
/**
*
*/
public void refreshCache() {
// 按序号排序
subjects.sort((a, b) -> a.getSerialNumber().compareTo(b.getSerialNumber()));
// 构建缓存
subjectNameMap = subjects.stream()
.collect(Collectors.toMap(
BudgetDefinitionDTO::getSerialNumber,
BudgetDefinitionDTO::getSubjectName,
(v1, v2) -> v1
));
subjectDefinitionMap = subjects.stream()
.collect(Collectors.toMap(
BudgetDefinitionDTO::getSerialNumber,
BudgetDefinitionDTO::getSubjectDefinition,
(v1, v2) -> v1
));
subjectFlagMap = subjects.stream()
.collect(Collectors.toMap(
BudgetDefinitionDTO::getSerialNumber,
BudgetDefinitionDTO::getSubjectFlag,
(v1, v2) -> v1
));
subjectMap = subjects.stream()
.collect(Collectors.toMap(
BudgetDefinitionDTO::getSerialNumber,
dto -> dto,
(v1, v2) -> v1
));
log.debug("预算科目缓存已刷新,当前数量:{}", subjects.size());
}
/**
*
*/
public List<BudgetDefinitionDTO> getAllSubjects() {
return new ArrayList<>(subjects); // 返回副本
}
/**
*
*/
public BudgetDefinitionDTO getSubjectByNumber(Integer serialNumber) {
return subjectMap.get(serialNumber);
}
/**
*
*/
public BudgetDefinitionDTO getSubjectByName(String subjectName) {
return subjects.stream()
.filter(subject -> subject.getSubjectName().equals(subjectName))
.findFirst()
.orElse(null);
}
/**
*
*/
public String getSubjectName(Integer serialNumber) {
return subjectNameMap.get(serialNumber);
}
/**
*
*/
public String getSubjectDefinition(Integer serialNumber) {
return subjectDefinitionMap.get(serialNumber);
}
/**
*
*/
public String getSubjectFlag(Integer serialNumber) {
return subjectFlagMap.get(serialNumber);
}
/**
*
*/
public boolean exists(Integer serialNumber) {
return subjectMap.containsKey(serialNumber);
}
}

@ -11,6 +11,7 @@ import org.dromara.oa.base.domain.bo.BaseMaterialInfoBo;
import org.dromara.oa.base.domain.vo.BaseMaterialInfoVo;
import org.dromara.oa.base.service.IBaseMaterialInfoService;
import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
import org.dromara.oa.erp.service.IErpProjectInfoService;
import org.springframework.http.MediaType;
@ -183,4 +184,14 @@ public class ErpBudgetInfoController extends BaseController {
return baseMaterialInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@GetMapping("/getRdBudgetDefinitionList")
public R<List<BudgetDefinitionDTO>> getRdBudgetDefinitionList() {
List<BudgetDefinitionDTO> list = erpBudgetInfoService.getBudgetDefinitionList();
return R.ok(list);
}
}

@ -62,5 +62,8 @@ public class ErpBudgetDetail{
*/
private String referenceProjectName;
/**
*
*/
private String detailSource;
}

@ -4,9 +4,11 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@ -70,22 +72,22 @@ public class ErpBudgetInfo extends TenantEntity {
private String managerName;
/**
* sys_user
* sys_user
*/
private Long productManagerId;
/**
*
*
*/
private String productManagerName;
/**
* ()IDsys_user
* ()ID()sys_user
*/
private Long approveUserId;
/**
* ()
* ()()
*/
private String approveUserName;
@ -159,6 +161,11 @@ public class ErpBudgetInfo extends TenantEntity {
*/
private String remark;
/**
*
*/
private Date preparationDate;
/**
* 0 1
*/
@ -200,8 +207,6 @@ public class ErpBudgetInfo extends TenantEntity {
private List<Long> toDeletedOtherCostIdList;
@TableField(exist = false)
private List<ErpRdBudgetEquipmentCost> erpRdBudgetEquipmentCostList;
@TableField(exist = false)
private List<ErpRdBudgetMaterialCost> erpRdBudgetMaterialCostList;
@ -209,52 +214,30 @@ public class ErpBudgetInfo extends TenantEntity {
@TableField(exist = false)
private List<ErpRdBudgetTravelCost> erpRdBudgetTravelCostList;
@TableField(exist = false)
private List<ErpRdBudgetMeetingCost> erpRdBudgetMeetingCostList;
@TableField(exist = false)
private List<ErpRdBudgetExchangeCost> erpRdBudgetExchangeCostList;
@TableField(exist = false)
private List<ErpRdBudgetTechCost> erpRdBudgetTechCostList;
@TableField(exist = false)
private List<ErpRdBudgetLaborCost> erpRdBudgetLaborCostList;
@TableField(exist = false)
private List<ErpRdBudgetLiteratureCost> erpRdBudgetLiteratureCostList;
@TableField(exist = false)
private List<ErpRdBudgetTestingCost> erpRdBudgetTestingCostList;
@TableField(exist = false)
private List<ErpRdBudgetOtherCost> erpRdBudgetOtherCostList;
@TableField(exist = false)
private List<Long> toDeletedRdEquipmentCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdMaterialCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdTravelCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdMeetingCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdExchangeCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdTechCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdLaborCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdLiteratureCostIdList;
@TableField(exist = false)
private List<Long> toDeletedRdTestingCostIdList;

@ -43,6 +43,11 @@ public class ErpRdBudgetTechCost extends TenantEntity {
*/
private String techType;
/**
*
*/
private String professionalDirection;
/**
*
*/

@ -38,6 +38,11 @@ public class ErpRdBudgetTravelCost extends TenantEntity {
*/
private Long projectId;
/**
* 12
*/
private String tripType;
/**
*
*/

@ -65,5 +65,8 @@ public class ErpBudgetDetailBo {
*/
private String referenceProjectName;
/**
*
*/
private String detailSource;
}

@ -9,8 +9,10 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@ -75,22 +77,22 @@ public class ErpBudgetInfoBo extends BaseEntity {
private String managerName;
/**
* sys_user
* sys_user
*/
private Long productManagerId;
/**
*
*
*/
private String productManagerName;
/**
* ()IDsys_user
* ()ID()sys_user
*/
private Long approveUserId;
/**
* ()
* ()()
*/
private String approveUserName;
@ -164,6 +166,11 @@ public class ErpBudgetInfoBo extends BaseEntity {
*/
private String remark;
/**
*
*/
private Date preparationDate;
private List<ErpBudgetDetail> erpBudgetDetailList;
private List<ErpBudgetMaterialCost> erpBudgetMaterialCostList;
@ -183,43 +190,26 @@ public class ErpBudgetInfoBo extends BaseEntity {
private List<Long> toDeletedOtherCostIdList;
private List<ErpRdBudgetEquipmentCost> erpRdBudgetEquipmentCostList;
private List<ErpRdBudgetMaterialCost> erpRdBudgetMaterialCostList;
private List<ErpRdBudgetTravelCost> erpRdBudgetTravelCostList;
private List<ErpRdBudgetMeetingCost> erpRdBudgetMeetingCostList;
private List<ErpRdBudgetExchangeCost> erpRdBudgetExchangeCostList;
private List<ErpRdBudgetTechCost> erpRdBudgetTechCostList;
private List<ErpRdBudgetLaborCost> erpRdBudgetLaborCostList;
private List<ErpRdBudgetLiteratureCost> erpRdBudgetLiteratureCostList;
private List<ErpRdBudgetTestingCost> erpRdBudgetTestingCostList;
private List<ErpRdBudgetOtherCost> erpRdBudgetOtherCostList;
private List<Long> toDeletedRdEquipmentCostIdList;
private List<Long> toDeletedRdMaterialCostIdList;
private List<Long> toDeletedRdTravelCostIdList;
private List<Long> toDeletedRdMeetingCostIdList;
private List<Long> toDeletedRdExchangeCostIdList;
private List<Long> toDeletedRdTechCostIdList;
private List<Long> toDeletedRdLaborCostIdList;
private List<Long> toDeletedRdLiteratureCostIdList;
private List<Long> toDeletedRdTestingCostIdList;
private List<Long> toDeletedRdOtherCostIdList;

@ -45,6 +45,11 @@ public class ErpRdBudgetTechCostBo extends BaseEntity {
@NotBlank(message = "技术服务费类型(1、技术咨询开发2、专家咨询-会议形式3、专家咨询-通讯形式)不能为空", groups = { AddGroup.class, EditGroup.class })
private String techType;
/**
*
*/
private String professionalDirection;
/**
*
*/

@ -39,6 +39,11 @@ public class ErpRdBudgetTravelCostBo extends BaseEntity {
*/
private Long projectId;
/**
* 12
*/
private String tripType;
/**
*
*/

@ -0,0 +1,56 @@
package org.dromara.oa.erp.domain.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Author xins
* @Date 2025/12/25 15:29
* @Description:,Excel
*/
@Data
public class BudgetDefinitionDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer serialNumber;
/**
*
*/
private String subjectName;
/**
*
*/
private String subjectDefinition;
/**
* 1 2
*/
private String subjectFlag;
/**
*
*/
public BudgetDefinitionDTO() {
}
/**
*
* @param serialNumber
* @param subjectName
* @param subjectDefinition
* @param subjectFlag
*/
public BudgetDefinitionDTO(Integer serialNumber, String subjectName, String subjectDefinition,String subjectFlag) {
this.serialNumber = serialNumber;
this.subjectName = subjectName;
this.subjectDefinition = subjectDefinition;
this.subjectFlag = subjectFlag;
}
}

@ -77,5 +77,8 @@ public class ErpBudgetDetailVo implements Serializable {
@ExcelProperty(value = "参考项目名称")
private String referenceProjectName;
/**
*
*/
private String detailSource;
}

@ -7,6 +7,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import java.io.Serial;
import java.io.Serializable;
@ -86,27 +87,23 @@ public class ErpBudgetInfoVo implements Serializable {
private String managerName;
/**
* sys_user
* sys_user
*/
@ExcelProperty(value = "产品经理关联sys_user")
private Long productManagerId;
/**
*
*
*/
@ExcelProperty(value = "产品经理姓名")
private String productManagerName;
/**
* ()IDsys_user
* ()ID()sys_user
*/
@ExcelProperty(value = "审核(评审组长)ID关联sys_user")
private Long approveUserId;
/**
* ()
* ()()
*/
@ExcelProperty(value = "审核(评审组长)姓名")
private String approveUserName;
/**
@ -195,6 +192,11 @@ public class ErpBudgetInfoVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
private Date preparationDate;
private List<ErpBudgetDetail> erpBudgetDetailList;
@ -208,23 +210,17 @@ public class ErpBudgetInfoVo implements Serializable {
private List<ErpBudgetOtherCost> erpBudgetOtherCostList;
private List<ErpRdBudgetEquipmentCost> erpRdBudgetEquipmentCostList;
private List<ErpRdBudgetMaterialCost> erpRdBudgetMaterialCostList;
private List<ErpRdBudgetTravelCost> erpRdBudgetTravelCostList;
private List<ErpRdBudgetMeetingCost> erpRdBudgetMeetingCostList;
private List<ErpRdBudgetExchangeCost> erpRdBudgetExchangeCostList;
private List<ErpRdBudgetTechCost> erpRdBudgetTechCostList;
private List<ErpRdBudgetLaborCost> erpRdBudgetLaborCostList;
private List<ErpRdBudgetLiteratureCost> erpRdBudgetLiteratureCostList;
private List<ErpRdBudgetTestingCost> erpRdBudgetTestingCostList;
private List<ErpRdBudgetOtherCost> erpRdBudgetOtherCostList;
private List<BudgetDefinitionDTO> budgetDefinitionDTOList;
}

@ -53,6 +53,11 @@ public class ErpRdBudgetTechCostVo implements Serializable {
@ExcelProperty(value = "技术服务费类型(1、技术咨询开发2、专家咨询-会议形式3、专家咨询-通讯形式)")
private String techType;
/**
*
*/
private String professionalDirection;
/**
*
*/

@ -47,6 +47,11 @@ public class ErpRdBudgetTravelCostVo implements Serializable {
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 12
*/
private String tripType;
/**
*
*/

@ -1,6 +1,7 @@
package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.ErpBudgetInfo;
import org.dromara.oa.erp.domain.dto.BudgetDefinitionDTO;
import org.dromara.oa.erp.domain.vo.ErpBudgetInfoVo;
import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -82,4 +83,10 @@ public interface IErpBudgetInfoService {
* @return excel
*/
public byte[] exportBudgetInfo(Long budgetId);
/**
*
* @return List<BudgetDefinitionDTO>
*/
public List<BudgetDefinitionDTO> getBudgetDefinitionList();
}

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

@ -532,12 +532,7 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
private int createEquipmentDataRows(Sheet sheet, ErpBudgetInfoVo budget, int startRowNum) {
int rowNum = startRowNum;
if (budget.getErpRdBudgetEquipmentCostList() != null) {
for (int i = 0; i < budget.getErpRdBudgetEquipmentCostList().size(); i++) {
var detail = budget.getErpRdBudgetEquipmentCostList().get(i);
rowNum = createEquipmentDataRow(sheet, detail, rowNum);
}
}
return rowNum;
}
@ -985,12 +980,12 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
private int createMeetingDataRows(Sheet sheet, ErpBudgetInfoVo budget, int startRowNum) {
int rowNum = startRowNum;
if (budget.getErpRdBudgetMeetingCostList() != null) {
for (int i = 0; i < budget.getErpRdBudgetMeetingCostList().size(); i++) {
ErpRdBudgetMeetingCost detail = budget.getErpRdBudgetMeetingCostList().get(i);
rowNum = createMeetingDataRow(sheet, detail, rowNum);
}
}
// if (budget.getErpRdBudgetMeetingCostList() != null) {
// for (int i = 0; i < budget.getErpRdBudgetMeetingCostList().size(); i++) {
// ErpRdBudgetMeetingCost detail = budget.getErpRdBudgetMeetingCostList().get(i);
// rowNum = createMeetingDataRow(sheet, detail, rowNum);
// }
// }
return rowNum;
}
@ -1032,22 +1027,22 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
*
*/
private int createEmptyMeetingRow(Sheet sheet, int rowNum, ErpBudgetInfoVo budget) {
List<ErpRdBudgetMeetingCost> erpRdBudgetMeetingCostList = budget.getErpRdBudgetMeetingCostList() == null ? new ArrayList<>() :
budget.getErpRdBudgetMeetingCostList();
int rdBudgetMeetingFillRowNum = rowNum + (4 - erpRdBudgetMeetingCostList.size());
while (rowNum <= rdBudgetMeetingFillRowNum) {
Row emptyRow = sheet.createRow(rowNum++);
createCell(emptyRow, 1, "", dataStyle);
createMergedCell(sheet, emptyRow, 2, 4, "", dataStyle);
for (int i = 5; i < 11; i++) {
Double value = null;
createNumericCell(emptyRow, i, value, dataStyle);
}
Cell meetingCostCell = emptyRow.createCell(11);
meetingCostCell.setCellFormula("ROUND(((F" + (rowNum) + "+G" + (rowNum) + ")*H" + (rowNum) + "+I" + (rowNum) + "+J" + (rowNum) + "*K" + (rowNum) + ")/10000,2)");
meetingCostCell.setCellStyle(formulaStyle);
}
// List<ErpRdBudgetMeetingCost> erpRdBudgetMeetingCostList = budget.getErpRdBudgetMeetingCostList() == null ? new ArrayList<>() :
// budget.getErpRdBudgetMeetingCostList();
//
// int rdBudgetMeetingFillRowNum = rowNum + (4 - erpRdBudgetMeetingCostList.size());
// while (rowNum <= rdBudgetMeetingFillRowNum) {
// Row emptyRow = sheet.createRow(rowNum++);
// createCell(emptyRow, 1, "", dataStyle);
// createMergedCell(sheet, emptyRow, 2, 4, "", dataStyle);
// for (int i = 5; i < 11; i++) {
// Double value = null;
// createNumericCell(emptyRow, i, value, dataStyle);
// }
// Cell meetingCostCell = emptyRow.createCell(11);
// meetingCostCell.setCellFormula("ROUND(((F" + (rowNum) + "+G" + (rowNum) + ")*H" + (rowNum) + "+I" + (rowNum) + "+J" + (rowNum) + "*K" + (rowNum) + ")/10000,2)");
// meetingCostCell.setCellStyle(formulaStyle);
// }
return rowNum;
}
@ -1112,12 +1107,12 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
private int createInternationalDataRows(Sheet sheet, ErpBudgetInfoVo budget, int startRowNum) {
int rowNum = startRowNum;
if (budget.getErpRdBudgetExchangeCostList() != null) {
for (int i = 0; i < budget.getErpRdBudgetExchangeCostList().size(); i++) {
ErpRdBudgetExchangeCost detail = budget.getErpRdBudgetExchangeCostList().get(i);
rowNum = createInternationalDataRow(sheet, detail, rowNum);
}
}
// if (budget.getErpRdBudgetExchangeCostList() != null) {
// for (int i = 0; i < budget.getErpRdBudgetExchangeCostList().size(); i++) {
// ErpRdBudgetExchangeCost detail = budget.getErpRdBudgetExchangeCostList().get(i);
// rowNum = createInternationalDataRow(sheet, detail, rowNum);
// }
// }
return rowNum;
}
@ -1154,28 +1149,28 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
*
*/
private int createEmptyInternationalRow(Sheet sheet, int rowNum, ErpBudgetInfoVo budget) {
List<ErpRdBudgetExchangeCost> erpRdBudgetExchangeCostList = budget.getErpRdBudgetExchangeCostList() == null ? new ArrayList<>() :
budget.getErpRdBudgetExchangeCostList();
int rdBudgetInternationalFillRowNum = rowNum + (4 - erpRdBudgetExchangeCostList.size());
while (rowNum <= rdBudgetInternationalFillRowNum) {
Row emptyRow = sheet.createRow(rowNum++);
createCell(emptyRow, 1, "", dataStyle);
createCell(emptyRow, 2, "", dataStyle);
createMergedCell(sheet, emptyRow, 3, 4, "", dataStyle);
createMergedCell(sheet, emptyRow, 5, 6, "", dataStyle);
for (int i = 7; i < 10; i++) {
Double value = null;
createNumericCell(emptyRow, i, value, dataStyle);
}
Cell subsidyCell = emptyRow.createCell(10);
subsidyCell.setCellFormula("IF(C" + (rowNum) + "=\"出国考察\",40*I" + (rowNum) + "*H" + (rowNum) + ",0)");
subsidyCell.setCellStyle(formulaStyle);
Cell subtotalCell = emptyRow.createCell(11);
subtotalCell.setCellFormula("ROUND((K" + (rowNum) + "+J" + (rowNum) + ")/10000,2)");
subtotalCell.setCellStyle(formulaStyle);
}
// List<ErpRdBudgetExchangeCost> erpRdBudgetExchangeCostList = budget.getErpRdBudgetExchangeCostList() == null ? new ArrayList<>() :
// budget.getErpRdBudgetExchangeCostList();
//
// int rdBudgetInternationalFillRowNum = rowNum + (4 - erpRdBudgetExchangeCostList.size());
// while (rowNum <= rdBudgetInternationalFillRowNum) {
// Row emptyRow = sheet.createRow(rowNum++);
// createCell(emptyRow, 1, "", dataStyle);
// createCell(emptyRow, 2, "", dataStyle);
// createMergedCell(sheet, emptyRow, 3, 4, "", dataStyle);
// createMergedCell(sheet, emptyRow, 5, 6, "", dataStyle);
// for (int i = 7; i < 10; i++) {
// Double value = null;
// createNumericCell(emptyRow, i, value, dataStyle);
// }
// Cell subsidyCell = emptyRow.createCell(10);
// subsidyCell.setCellFormula("IF(C" + (rowNum) + "=\"出国考察\",40*I" + (rowNum) + "*H" + (rowNum) + ",0)");
// subsidyCell.setCellStyle(formulaStyle);
//
// Cell subtotalCell = emptyRow.createCell(11);
// subtotalCell.setCellFormula("ROUND((K" + (rowNum) + "+J" + (rowNum) + ")/10000,2)");
// subtotalCell.setCellStyle(formulaStyle);
// }
return rowNum;
}
@ -1811,7 +1806,7 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
Sheet sheet = workbook.createSheet(SHEET_DOCUMENT);
// 准备数据
List<ErpRdBudgetLiteratureCost> literatureCostList = prepareLiteratureCostData(budget);
List<ErpRdBudgetLiteratureCost> literatureCostList = null;
int rowNum = 0;
@ -1842,15 +1837,6 @@ public class RdProjectBudgetExcelExporter extends BaseExcelExporter {
return rowNum;
}
/**
*
*/
private List<ErpRdBudgetLiteratureCost> prepareLiteratureCostData(ErpBudgetInfoVo budget) {
List<ErpRdBudgetLiteratureCost> literatureCostList = budget.getErpRdBudgetLiteratureCostList() == null ?
new ArrayList<>() : budget.getErpRdBudgetLiteratureCostList();
return literatureCostList;
}
/**
* /
*/

Loading…
Cancel
Save