领导预算与实际台账

This commit is contained in:
zhangzhiguo 2024-11-29 15:51:51 +08:00
parent b1c8e787fb
commit 146021bee4
1 changed files with 61 additions and 15 deletions

View File

@ -236,7 +236,8 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
m.put("correspondenceTotal",correspondenceTotal); m.put("correspondenceTotal",correspondenceTotal);
m.put("totalAmountTotal",totalAmountTotal); m.put("totalAmountTotal",totalAmountTotal);
countMap.put(year+"a",m); countMap.put(year+"a",m);
}else{ }
else{
Map<String, BigDecimal> m = new HashMap<>(); Map<String, BigDecimal> m = new HashMap<>();
m.put("travelTotal",stringBigDecimalMap.get("travelTotal")); m.put("travelTotal",stringBigDecimalMap.get("travelTotal"));
m.put("healthTotal",stringBigDecimalMap.get("healthTotal")); m.put("healthTotal",stringBigDecimalMap.get("healthTotal"));
@ -262,7 +263,6 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
BigDecimal entertainTotal = BigDecimal.ZERO;//业务招待费 BigDecimal entertainTotal = BigDecimal.ZERO;//业务招待费
BigDecimal totalAmountTotal = BigDecimal.ZERO;//金额合计 BigDecimal totalAmountTotal = BigDecimal.ZERO;//金额合计
for (Row itemRow : bdMaterialDataSet) { for (Row itemRow : bdMaterialDataSet) {
//TODO 继续补充其他费用类型
//汇总国内差旅费 FYXM0015.001防疫费 FYXM002-CUS.001 //汇总国内差旅费 FYXM0015.001防疫费 FYXM002-CUS.001
String itemnumber = itemRow.getString("itemnumber"); String itemnumber = itemRow.getString("itemnumber");
String happendateStr = dateFormat.format(itemRow.getDate("happendate")); String happendateStr = dateFormat.format(itemRow.getDate("happendate"));
@ -281,24 +281,44 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
//统计国内差旅费 er_tripreimbursebill //统计国内差旅费 er_tripreimbursebill
//报销金额费用项目差旅报销单-差旅费没有勾选了因公临时出国的差旅报销单报销金额 //报销金额费用项目差旅报销单-差旅费没有勾选了因公临时出国的差旅报销单报销金额
//travelRealTotal = travelRealTotal.add(expenseamount); DataSet tripreimburseDataSet = getTripreimburseDataSet(userId, year, false);
for (Row itemRow : tripreimburseDataSet) {
//国内差旅费
BigDecimal orientryamount = itemRow.getBigDecimal("orientryamount");
travelRealTotal = travelRealTotal.add(orientryamount);
}
//统计因公临时出国费 //统计因公临时出国费
//报销金额费用报销单报销金额勾选了因公临时出国 er_dailyreimbursebill //报销金额费用报销单报销金额勾选了因公临时出国 er_dailyreimbursebill
//报销金额差旅报销单报销金额勾选了因公临时出国 er_tripreimbursebill
//实际-统计因公临时出国费用报销单数据 //实际-统计因公临时出国费用报销单数据
DataSet bdMaterialForeignDataSet = getDailyreimbursebillDataSet(userId, year,true); DataSet bdMaterialForeignDataSet = getDailyreimbursebillDataSet(userId, year,true);
for (Row itemRow : bdMaterialForeignDataSet) {
//获取因公临时出国报销金额
BigDecimal expenseamount = itemRow.getBigDecimal("expenseamount");
abroadTravelTotal = abroadTravelTotal.add(expenseamount);
}
//报销金额差旅报销单报销金额勾选了因公临时出国 er_tripreimbursebill
DataSet tripreimburseForeignDataSet = getTripreimburseDataSet(userId, year, true);
for (Row itemRow : tripreimburseForeignDataSet) {
//获取因公临时出国报销金额
BigDecimal orientryamount = itemRow.getBigDecimal("orientryamount");
abroadTravelTotal = abroadTravelTotal.add(orientryamount);
}
Object [] tempRealData = new Object [FIELDS.length]; Object [] tempRealData = new Object [FIELDS.length];
tempRealData[0] = userId; tempRealData[0] = userId;
tempRealData[1] = username; tempRealData[1] = username;
tempRealData[2] = year+"年实际发生"; tempRealData[2] = year+"年实际发生";
tempRealData[3]=travelRealTotal; tempRealData[3]=travelRealTotal; //国内差旅费
tempRealData[4]=healthRealTotal; tempRealData[4]=healthRealTotal; //防疫费
BigDecimal totalRealAmount = travelRealTotal.add(healthRealTotal); tempRealData[5]=abroadTravelTotal; //因公临时出国费
tempRealData[9] = totalRealAmount; tempRealData[6]=correspondenceTotal; //通信费
tempRealData[7]=trainingTotal; //培训费
tempRealData[8]=entertainTotal; //业务招待费
BigDecimal totalRealAmountTotal = travelRealTotal.add(healthRealTotal).add(abroadTravelTotal)
.add(correspondenceTotal).add(trainingTotal).add(entertainTotal);
tempRealData[9] = totalRealAmountTotal;
coll.add(tempRealData); coll.add(tempRealData);
if(countMap.containsKey(year+"b") ){//预算汇总和实际的区分为年份+a,例如2024a if(countMap.containsKey(year+"b") ){//预算汇总和实际的区分为年份+a,例如2024a
@ -309,7 +329,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
BigDecimal correspondenceTotalMap = m.get("correspondenceTotal"); BigDecimal correspondenceTotalMap = m.get("correspondenceTotal");
BigDecimal trainingTotalMap = m.get("trainingTotal"); BigDecimal trainingTotalMap = m.get("trainingTotal");
BigDecimal entertainTotalMap = m.get("entertainTotal"); BigDecimal entertainTotalMap = m.get("entertainTotal");
BigDecimal totalAmountTotalMap = m.get("totalAmountTotal"); BigDecimal totalAmountTotalMap = m.get("totalRealAmountTotal");
travelRealTotal = travelTotalMap.add(travelRealTotal); travelRealTotal = travelTotalMap.add(travelRealTotal);
healthRealTotal = healthTotalMap.add(healthRealTotal); healthRealTotal = healthTotalMap.add(healthRealTotal);
@ -317,7 +337,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
correspondenceTotal = correspondenceTotalMap.add(correspondenceTotal); correspondenceTotal = correspondenceTotalMap.add(correspondenceTotal);
trainingTotal = trainingTotalMap.add(trainingTotal); trainingTotal = trainingTotalMap.add(trainingTotal);
entertainTotal= entertainTotalMap.add(entertainTotal); entertainTotal= entertainTotalMap.add(entertainTotal);
totalAmountTotal= totalAmountTotalMap.add(totalRealAmount); totalAmountTotal= totalAmountTotalMap.add(totalRealAmountTotal);
m.put("travelTotal",travelRealTotal); m.put("travelTotal",travelRealTotal);
m.put("healthTotal",healthRealTotal); m.put("healthTotal",healthRealTotal);
@ -325,7 +345,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
m.put("trainingTotal",trainingTotal); m.put("trainingTotal",trainingTotal);
m.put("entertainTotal",entertainTotal); m.put("entertainTotal",entertainTotal);
m.put("correspondenceTotal",correspondenceTotal); m.put("correspondenceTotal",correspondenceTotal);
m.put("totalAmountTotal",totalAmountTotal); m.put("totalRealAmountTotal",totalAmountTotal);
countMap.put(year+"b",m); countMap.put(year+"b",m);
}else{ }else{
Map<String, BigDecimal> m = new HashMap<>(); Map<String, BigDecimal> m = new HashMap<>();
@ -335,7 +355,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
m.put("trainingTotal",trainingTotal); m.put("trainingTotal",trainingTotal);
m.put("entertainTotal",entertainTotal); m.put("entertainTotal",entertainTotal);
m.put("correspondenceTotal",correspondenceTotal); m.put("correspondenceTotal",correspondenceTotal);
m.put("totalAmountTotal",totalAmountTotal); m.put("totalRealAmountTotal",totalRealAmountTotal);
countMap.put(year+"b",m); countMap.put(year+"b",m);
} }
} }
@ -373,7 +393,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
totalRealTempData[6] = stringBigDecimalMapReal.get("correspondenceTotal"); totalRealTempData[6] = stringBigDecimalMapReal.get("correspondenceTotal");
totalRealTempData[7] = stringBigDecimalMapReal.get("trainingTotal"); totalRealTempData[7] = stringBigDecimalMapReal.get("trainingTotal");
totalRealTempData[8] = stringBigDecimalMapReal.get("entertainTotal"); totalRealTempData[8] = stringBigDecimalMapReal.get("entertainTotal");
totalRealTempData[9] = stringBigDecimalMapReal.get("totalAmountTotal"); totalRealTempData[9] = stringBigDecimalMapReal.get("totalRealAmountTotal");
} }
coll.add(totalRealTempData); coll.add(totalRealTempData);
} }
@ -381,7 +401,7 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
} }
/** /**
* 获取差旅报销单数据 * 获取费用报销单数据
* @param userId 用户id * @param userId 用户id
* @param year 统计年份 * @param year 统计年份
* @param isBusinessForeign 是否因公临时出国 * @param isBusinessForeign 是否因公临时出国
@ -405,6 +425,32 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
return bdMaterialDataSet; return bdMaterialDataSet;
} }
/**
* 获取差旅报销单数据
* @param userId 用户id
* @param year 统计年份
* @param isBusinessForeign 是否因公临时出国
* @return 数据集
*/
private DataSet getTripreimburseDataSet(Long userId, Integer year,Boolean isBusinessForeign) {
LocalDate firstDay = getFirstDayOfYear(year);
LocalDate lastDay = getLastDayOfYear(year);
List<QFilter> searchFilterList = new ArrayList<>();
//searchFilterList.add(new QFilter(DEV_KEY+"_year", QCP.equals, getFirstDayOfYear(year)));
searchFilterList.add(new QFilter("applier", QCP.equals, userId));
searchFilterList.add(new QFilter("tripentry.startdate", QCP.large_equals, firstDay));
searchFilterList.add(new QFilter("tripentry.startdate", QCP.less_equals, lastDay));
searchFilterList.add(new QFilter(DEV_KEY+"_is_business_foreign", QCP.equals, isBusinessForeign));
DataSet bdMaterialDataSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"er_tripreimbursebill",
"id,applier,tripentry.startdate as startdate,tripentry.entryentity.orientryamount as orientryamount" ,
searchFilterList.toArray(new QFilter [] {}), null
).orderBy(new String[]{"applier", "startdate"});
return bdMaterialDataSet;
}
// 获取某年份的第一天 // 获取某年份的第一天
public static LocalDate getFirstDayOfYear(int year) { public static LocalDate getFirstDayOfYear(int year) {
return LocalDate.of(year, 1, 1); return LocalDate.of(year, 1, 1);