职务消费台账功能调整
This commit is contained in:
parent
108b3ebbfd
commit
605eecdcb3
|
@ -68,13 +68,32 @@ public class PositionFeesRptListPlugin extends AbstractReportFormPlugin implemen
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCellStyleRules(List<CellStyleRule> cellStyleRules) {
|
public void setCellStyleRules(List<CellStyleRule> cellStyleRules) {
|
||||||
|
|
||||||
|
String[] FIELDS = {
|
||||||
|
DEV_KEY+"_user", DEV_KEY+"_username", DEV_KEY+"_date",DEV_KEY+"_bill_number",
|
||||||
|
DEV_KEY+"_serve_business", DEV_KEY+"_serve_outside",DEV_KEY+"_serve_significant",
|
||||||
|
DEV_KEY+"_serve_other_business",DEV_KEY+"_serve_lodging",
|
||||||
|
DEV_KEY+"_serve_souvenir",DEV_KEY+"_serve_total",
|
||||||
|
DEV_KEY+"_travel",DEV_KEY+"_abroad_travel",
|
||||||
|
DEV_KEY+"_health",DEV_KEY+"_correspondence",DEV_KEY+"_training",
|
||||||
|
DEV_KEY+"_total"
|
||||||
|
};
|
||||||
|
|
||||||
for (String field : FIELDS) {
|
for (String field : FIELDS) {
|
||||||
|
CellStyleRule cellStyleRuleUser = new CellStyleRule();
|
||||||
|
cellStyleRuleUser.setFieldKey(field);// 字段标识
|
||||||
|
cellStyleRuleUser.setForeColor("#666666");// 前景色
|
||||||
|
cellStyleRuleUser.setBackgroundColor("#FFE5CC");// 背景色
|
||||||
|
cellStyleRuleUser.setDegree(100);// 透明度
|
||||||
|
cellStyleRuleUser.setCondition("zcgj_username = '人员合计'");// 前置条件,值与表达式计算器一致
|
||||||
|
cellStyleRules.add(cellStyleRuleUser);
|
||||||
|
|
||||||
CellStyleRule cellStyleRule = new CellStyleRule();
|
CellStyleRule cellStyleRule = new CellStyleRule();
|
||||||
cellStyleRule.setFieldKey(field);// 字段标识
|
cellStyleRule.setFieldKey(field);// 字段标识
|
||||||
cellStyleRule.setForeColor("#666666");// 前景色
|
cellStyleRule.setForeColor("#666666");// 前景色
|
||||||
cellStyleRule.setBackgroundColor("#ffc000");// 背景色
|
cellStyleRule.setBackgroundColor("#ffc000");// 背景色
|
||||||
cellStyleRule.setDegree(100);// 透明度
|
cellStyleRule.setDegree(100);// 透明度
|
||||||
cellStyleRule.setCondition("shxr_username = '合计'");// 前置条件,值与表达式计算器一致
|
cellStyleRule.setCondition("zcgj_username = '合计'");// 前置条件,值与表达式计算器一致
|
||||||
cellStyleRules.add(cellStyleRule);
|
cellStyleRules.add(cellStyleRule);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,16 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin {
|
||||||
DataType.BigDecimalType,DataType.BigDecimalType,DataType.BigDecimalType,
|
DataType.BigDecimalType,DataType.BigDecimalType,DataType.BigDecimalType,
|
||||||
DataType.BigDecimalType
|
DataType.BigDecimalType
|
||||||
};
|
};
|
||||||
|
Set<String> itemSet = new HashSet<>();
|
||||||
|
itemSet.add(FYF);
|
||||||
|
itemSet.add(TXF);
|
||||||
|
itemSet.add(PXF);
|
||||||
|
itemSet.add(YWZD_SWZD);
|
||||||
|
itemSet.add(YWZD_WSZD);
|
||||||
|
itemSet.add(YWZD_ZYGW);
|
||||||
|
itemSet.add(YWZD_ZS);
|
||||||
|
itemSet.add(YWZD_JNP);
|
||||||
|
itemSet.add(YWZD_QT);
|
||||||
// 初始化 DataSet
|
// 初始化 DataSet
|
||||||
RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES);
|
RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES);
|
||||||
Collection<Object[]> coll = new ArrayList<>();
|
Collection<Object[]> coll = new ArrayList<>();
|
||||||
|
@ -130,6 +139,9 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin {
|
||||||
}
|
}
|
||||||
Date happendate = entry.getDate("happendate");//费用发生日期
|
Date happendate = entry.getDate("happendate");//费用发生日期
|
||||||
String itemNumber = expenseitemObj.getString("number");//费用项目编码
|
String itemNumber = expenseitemObj.getString("number");//费用项目编码
|
||||||
|
if(!itemSet.contains(itemNumber)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
String happendateStr = dateFormat.format(happendate);//费用发生日期str
|
String happendateStr = dateFormat.format(happendate);//费用发生日期str
|
||||||
BigDecimal expenseamount = BigDecimal.ZERO;
|
BigDecimal expenseamount = BigDecimal.ZERO;
|
||||||
if(istax){
|
if(istax){
|
||||||
|
@ -247,65 +259,107 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin {
|
||||||
for (Long userId : userSet) {
|
for (Long userId : userSet) {
|
||||||
for (String string : strings) {
|
for (String string : strings) {
|
||||||
if(string.startsWith(userId+"")){
|
if(string.startsWith(userId+"")){
|
||||||
// userIdDataMap.put(userId,reportMap.get(string));
|
if(userIdDataMap.containsKey(userId)){
|
||||||
|
Map<String, ExpenseReport> stringExpenseReportMap = userIdDataMap.get(userId);
|
||||||
|
stringExpenseReportMap.put(string,reportMap.get(string));
|
||||||
|
//userIdDataMap.put(userId,stringExpenseReportMap);
|
||||||
|
}else{
|
||||||
|
Map<String, ExpenseReport> data= new HashMap<>();
|
||||||
|
data.put(string,reportMap.get(string));
|
||||||
|
userIdDataMap.put(userId,data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ArrayList<ExpenseReport> reportsList = new ArrayList<>(reportMap.values());
|
|
||||||
// 打印每一行报表
|
|
||||||
|
|
||||||
for (ExpenseReport report : reportsList) {
|
for (Long userId : userIdDataMap.keySet()) {
|
||||||
Map<String, Object> userInfoByID = UserServiceHelper.getUserInfoByID(report.getReimburser());
|
Map<String, ExpenseReport> stringExpenseReportMap = userIdDataMap.get(userId);
|
||||||
String username = String.valueOf(userInfoByID.get("name"));//报销人
|
ArrayList<ExpenseReport> reportsList = new ArrayList<>(stringExpenseReportMap.values());
|
||||||
|
ExpenseReport userTotalReport = new ExpenseReport(null, null, null);
|
||||||
|
|
||||||
Object [] tempData = new Object [FIELDS.length];
|
// 打印每一行报表
|
||||||
coll.add(tempData);
|
for (ExpenseReport report : reportsList) {
|
||||||
tempData[0] = report.getReimburser();
|
Map<String, Object> userInfoByID = UserServiceHelper.getUserInfoByID(report.getReimburser());
|
||||||
tempData[1] = username;
|
String username = String.valueOf(userInfoByID.get("name"));//报销人
|
||||||
tempData[2] = report.getHappenDateStr();
|
|
||||||
tempData[3] = report.getBillNumber();
|
|
||||||
BigDecimal businessEntertainment = report.getBusinessEntertainment();
|
|
||||||
totalReport.setBusinessEntertainment(totalReport.getBusinessEntertainment().add(businessEntertainment));
|
|
||||||
tempData[4] = businessEntertainment;
|
|
||||||
BigDecimal foreignEntertainment = report.getForeignEntertainment();
|
|
||||||
totalReport.setForeignEntertainment(totalReport.getForeignEntertainment().add(foreignEntertainment));
|
|
||||||
tempData[5] = foreignEntertainment;
|
|
||||||
BigDecimal importantOfficial = report.getImportantOfficial();
|
|
||||||
totalReport.setImportantOfficial(totalReport.getImportantOfficial().add(importantOfficial));
|
|
||||||
tempData[6] = importantOfficial;
|
|
||||||
BigDecimal other = report.getOther();
|
|
||||||
totalReport.setOther(totalReport.getOther().add(other));
|
|
||||||
tempData[7] = other;
|
|
||||||
BigDecimal accommodation = report.getAccommodation();
|
|
||||||
totalReport.setAccommodation(totalReport.getAccommodation().add(accommodation));
|
|
||||||
tempData[8] = accommodation;
|
|
||||||
BigDecimal souvenirs = report.getSouvenirs();
|
|
||||||
totalReport.setSouvenirs(totalReport.getSouvenirs().add(souvenirs));
|
|
||||||
tempData[9] = souvenirs;
|
|
||||||
BigDecimal subtotal = businessEntertainment.add(foreignEntertainment)
|
|
||||||
.add(importantOfficial).add(other)
|
|
||||||
.add(accommodation).add(souvenirs);
|
|
||||||
totalReport.setSubtotal(totalReport.getSubtotal().add(subtotal));
|
|
||||||
tempData[10] = subtotal;
|
|
||||||
BigDecimal travel = report.getTravel();
|
|
||||||
totalReport.setTravel(totalReport.getTravel().add(travel));
|
|
||||||
tempData[11] = travel;//travel
|
|
||||||
BigDecimal abroadTravel = report.getAbroadTravel();
|
|
||||||
totalReport.setAbroadTravel(totalReport.getAbroadTravel().add(abroadTravel));
|
|
||||||
tempData[12] = abroadTravel;
|
|
||||||
BigDecimal health = report.getHealth();
|
|
||||||
totalReport.setHealth(totalReport.getHealth().add(health));
|
|
||||||
tempData[13] = health;
|
|
||||||
BigDecimal correspondence = report.getCorrespondence();
|
|
||||||
totalReport.setCorrespondence(totalReport.getCorrespondence().add(correspondence));
|
|
||||||
tempData[14] = correspondence;
|
|
||||||
BigDecimal training = report.getTraining();
|
|
||||||
totalReport.setTraining(totalReport.getTraining().add(training));
|
|
||||||
tempData[15] = training;
|
|
||||||
|
|
||||||
BigDecimal total = subtotal.add(travel).add(abroadTravel).add(health).add(correspondence).add(training);
|
Object [] tempData = new Object [FIELDS.length];
|
||||||
totalReport.setTotal(totalReport.getTotal().add(total));
|
coll.add(tempData);
|
||||||
tempData[16] = total;
|
tempData[0] = report.getReimburser();
|
||||||
|
tempData[1] = username;
|
||||||
|
tempData[2] = report.getHappenDateStr();
|
||||||
|
tempData[3] = report.getBillNumber();
|
||||||
|
BigDecimal businessEntertainment = report.getBusinessEntertainment();
|
||||||
|
totalReport.setBusinessEntertainment(totalReport.getBusinessEntertainment().add(businessEntertainment));
|
||||||
|
userTotalReport.setBusinessEntertainment(userTotalReport.getBusinessEntertainment().add(businessEntertainment));
|
||||||
|
tempData[4] = businessEntertainment;
|
||||||
|
BigDecimal foreignEntertainment = report.getForeignEntertainment();
|
||||||
|
totalReport.setForeignEntertainment(totalReport.getForeignEntertainment().add(foreignEntertainment));
|
||||||
|
userTotalReport.setForeignEntertainment(userTotalReport.getForeignEntertainment().add(foreignEntertainment));
|
||||||
|
tempData[5] = foreignEntertainment;
|
||||||
|
BigDecimal importantOfficial = report.getImportantOfficial();
|
||||||
|
totalReport.setImportantOfficial(totalReport.getImportantOfficial().add(importantOfficial));
|
||||||
|
userTotalReport.setImportantOfficial(userTotalReport.getImportantOfficial().add(importantOfficial));
|
||||||
|
tempData[6] = importantOfficial;
|
||||||
|
BigDecimal other = report.getOther();
|
||||||
|
totalReport.setOther(totalReport.getOther().add(other));
|
||||||
|
userTotalReport.setOther(userTotalReport.getOther().add(other));
|
||||||
|
tempData[7] = other;
|
||||||
|
BigDecimal accommodation = report.getAccommodation();
|
||||||
|
totalReport.setAccommodation(totalReport.getAccommodation().add(accommodation));
|
||||||
|
userTotalReport.setAccommodation(userTotalReport.getAccommodation().add(accommodation));
|
||||||
|
tempData[8] = accommodation;
|
||||||
|
BigDecimal souvenirs = report.getSouvenirs();
|
||||||
|
totalReport.setSouvenirs(totalReport.getSouvenirs().add(souvenirs));
|
||||||
|
userTotalReport.setSouvenirs(userTotalReport.getSouvenirs().add(souvenirs));
|
||||||
|
tempData[9] = souvenirs;
|
||||||
|
BigDecimal subtotal = businessEntertainment.add(foreignEntertainment)
|
||||||
|
.add(importantOfficial).add(other)
|
||||||
|
.add(accommodation).add(souvenirs);
|
||||||
|
totalReport.setSubtotal(totalReport.getSubtotal().add(subtotal));
|
||||||
|
userTotalReport.setSubtotal(userTotalReport.getSubtotal().add(subtotal));
|
||||||
|
tempData[10] = subtotal;
|
||||||
|
BigDecimal travel = report.getTravel();
|
||||||
|
totalReport.setTravel(totalReport.getTravel().add(travel));
|
||||||
|
userTotalReport.setTravel(userTotalReport.getTravel().add(travel));
|
||||||
|
tempData[11] = travel;//travel
|
||||||
|
BigDecimal abroadTravel = report.getAbroadTravel();
|
||||||
|
totalReport.setAbroadTravel(totalReport.getAbroadTravel().add(abroadTravel));
|
||||||
|
userTotalReport.setAbroadTravel(userTotalReport.getAbroadTravel().add(abroadTravel));
|
||||||
|
tempData[12] = abroadTravel;
|
||||||
|
BigDecimal health = report.getHealth();
|
||||||
|
totalReport.setHealth(totalReport.getHealth().add(health));
|
||||||
|
userTotalReport.setHealth(userTotalReport.getHealth().add(health));
|
||||||
|
tempData[13] = health;
|
||||||
|
BigDecimal correspondence = report.getCorrespondence();
|
||||||
|
totalReport.setCorrespondence(totalReport.getCorrespondence().add(correspondence));
|
||||||
|
userTotalReport.setCorrespondence(userTotalReport.getCorrespondence().add(correspondence));
|
||||||
|
tempData[14] = correspondence;
|
||||||
|
BigDecimal training = report.getTraining();
|
||||||
|
totalReport.setTraining(totalReport.getTraining().add(training));
|
||||||
|
userTotalReport.setTraining(userTotalReport.getTraining().add(training));
|
||||||
|
tempData[15] = training;
|
||||||
|
|
||||||
|
BigDecimal total = subtotal.add(travel).add(abroadTravel).add(health).add(correspondence).add(training);
|
||||||
|
totalReport.setTotal(totalReport.getTotal().add(total));
|
||||||
|
userTotalReport.setTotal(userTotalReport.getTotal().add(total));
|
||||||
|
tempData[16] = total;
|
||||||
|
}
|
||||||
|
Object [] tempDataUserTotal = new Object [FIELDS.length];
|
||||||
|
coll.add(tempDataUserTotal);
|
||||||
|
tempDataUserTotal[1] = "人员合计";
|
||||||
|
tempDataUserTotal[4] = userTotalReport.getBusinessEntertainment();
|
||||||
|
tempDataUserTotal[5] = userTotalReport.getForeignEntertainment();
|
||||||
|
tempDataUserTotal[6] = userTotalReport.getImportantOfficial();
|
||||||
|
tempDataUserTotal[7] = userTotalReport.getOther();
|
||||||
|
tempDataUserTotal[8] = userTotalReport.getAccommodation();
|
||||||
|
tempDataUserTotal[9] = userTotalReport.getSouvenirs();
|
||||||
|
tempDataUserTotal[10] = userTotalReport.getSubtotal();
|
||||||
|
tempDataUserTotal[11] = userTotalReport.getTravel();
|
||||||
|
tempDataUserTotal[12] = userTotalReport.getAbroadTravel();
|
||||||
|
tempDataUserTotal[13] = userTotalReport.getHealth();
|
||||||
|
tempDataUserTotal[14] = userTotalReport.getCorrespondence();
|
||||||
|
tempDataUserTotal[15] = userTotalReport.getTraining();
|
||||||
|
tempDataUserTotal[16] = userTotalReport.getTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue