1.财务共享功能开发

This commit is contained in:
zhangzhiguo 2025-02-19 14:12:50 +08:00
parent 62a675fe82
commit a722ae200b
6 changed files with 288 additions and 33 deletions

View File

@ -186,7 +186,7 @@ public class CostcompanyDefaultPlugin extends AbstractBillPlugIn implements Plu
//bos_costcenter //bos_costcenter
QFilter numberFilter = new QFilter("number",QCP.equals,costcompanyObj.getString("number")); QFilter numberFilter = new QFilter("number",QCP.equals,costcompanyObj.getString("number"));
DynamicObject[] dynamicObjectAccItem = BusinessDataServiceHelper.load("bos_costcenter", "number,name", new QFilter[]{numberFilter}); DynamicObject[] dynamicObjectAccItem = BusinessDataServiceHelper.load("bos_costcenter", "number,name", new QFilter[]{numberFilter});
if(dynamicObjectAccItem!=null ){ if(dynamicObjectAccItem!=null && dynamicObjectAccItem.length >0){
this.getModel().setValue("std_entrycostcenter", dynamicObjectAccItem[0], rowIndex); this.getModel().setValue("std_entrycostcenter", dynamicObjectAccItem[0], rowIndex);
} }
} }

View File

@ -60,21 +60,22 @@ public class ApprovalCheckFlowOp extends AbstractOperationServicePlugIn {
boolean isOk = true; boolean isOk = true;
//所有审批记录,从审批记录中获取已经审批过的人 //所有审批记录,从审批记录中获取已经审批过的人
List<IApprovalRecordGroup> allApprovalRecords = WorkflowServiceHelper.getApprovalRecords(formid, billId, true); List<IApprovalRecordGroup> allApprovalRecords = WorkflowServiceHelper.getApprovalRecords(formid, billId, true);
for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) { if(allApprovalRecords!=null){
String groupDecisionType = allApprovalRecord.getGroupDecisionType(); for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) {
//过滤提交的和待分配的任务 String groupDecisionType = allApprovalRecord.getGroupDecisionType();
if("submit".equals(groupDecisionType)){ //获取每个节点的审批类型 提交submit //过滤提交的和待分配的任务
Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人 if("submit".equals(groupDecisionType)){ //获取每个节点的审批类型 提交submit
if(currentUserId.equals(userId) ){//如果审批不是提交人则可以进行审批操作 Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人
isOk = false; if(currentUserId.equals(userId) ){//如果审批不是提交人则可以进行审批操作
isOk = false;
}
} }
} }
if(!isOk){
this.addFatalErrorMessage(extendedDataEntity, "当前操作人为单据提交人,无法进行审批操作,请转给他人进行审批!");
return;
}
} }
if(!isOk){
this.addFatalErrorMessage(extendedDataEntity, "当前操作人为单据提交人,无法进行审批操作,请转给他人进行审批!");
return;
}
} }
} }
} }

View File

@ -93,7 +93,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
QFilter[] visitSetFilterArray = new QFilter[1]; QFilter[] visitSetFilterArray = new QFilter[1];
visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId); visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId);
DynamicObject dynamicObject = QueryServiceHelper.queryOne( prefix+"_user_visit_set", DynamicObject dynamicObject = QueryServiceHelper.queryOne( prefix+"_user_visit_set",
"id,zcgj_visit_times as visitTime,zcgj_visit_days as visitDays,zcgj_married_status as marriedStatus," + "id,zcgj_visit_times as visitTime,zcgj_visit_days as visitDays,zcgj_married_spouse_days marriedSpouseDays,zcgj_married_status as marriedStatus," +
"zcgj_married_parents_year as marriedParentsYear,zcgj_married_parents_time as marriedParentsTime," + "zcgj_married_parents_year as marriedParentsYear,zcgj_married_parents_time as marriedParentsTime," +
"zcgj_married_spouse_year as marriedSpouseYear,zcgj_married_spouse_time as marriedSpouseTime," + "zcgj_married_spouse_year as marriedSpouseYear,zcgj_married_spouse_time as marriedSpouseTime," +
"zcgj_unmarried_parents_y as unmarriedParentsYear,zcgj_unmarried_parents_t as unmarriedParentsTime",visitSetFilterArray); "zcgj_unmarried_parents_y as unmarriedParentsYear,zcgj_unmarried_parents_t as unmarriedParentsTime",visitSetFilterArray);
@ -110,6 +110,8 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
//总年探亲天数 //总年探亲天数
int visitDays =dynamicObject.getInt("visitDays"); int visitDays =dynamicObject.getInt("visitDays");
//探望配偶天数
int marriedSpouseDays =dynamicObject.getInt("marriedSpouseDays");
//婚姻状况1已婚2未婚 //婚姻状况1已婚2未婚
int marriedStatus =dynamicObject.getInt("marriedStatus"); int marriedStatus =dynamicObject.getInt("marriedStatus");
//已婚探望父母年限 //已婚探望父母年限
@ -125,11 +127,15 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
//未婚探望父母次数 //未婚探望父母次数
int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime"); int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime");
if(visitDays == 0 ){ /*if(visitDays == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探亲假天数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探父母天数为空!");
return; return;
} }*/
if(marriedStatus == 1 ){ // 已婚 if(marriedStatus == 1 ){ // 已婚
/*if(marriedSpouseDays == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探配偶天数为空!");
return;
}
if(marriedParentsYear == 0 ){ if(marriedParentsYear == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望父母年限为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望父母年限为空!");
return; return;
@ -145,7 +151,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
if(marriedSpouseTime == 0 ){ if(marriedSpouseTime == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望配偶次数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望配偶次数为空!");
return; return;
} }*/
//如果是探望父母 //如果是探望父母
if("1".equals(visitType)){ if("1".equals(visitType)){
visitYear = marriedParentsYear; visitYear = marriedParentsYear;
@ -161,14 +167,14 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
this.addFatalErrorMessage(extendedDataEntity, "未婚状态下探亲类型只能选择探望父母!"); this.addFatalErrorMessage(extendedDataEntity, "未婚状态下探亲类型只能选择探望父母!");
return; return;
} }
if(unmarriedParentsYear == 0 ){ /*if(unmarriedParentsYear == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母年限为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母年限为空!");
return; return;
} }
if(unmarriedParentsTime == 0 ){ if(unmarriedParentsTime == 0 ){
this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母次数为空!"); this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母次数为空!");
return; return;
} }*/
visitTime = unmarriedParentsTime; visitTime = unmarriedParentsTime;
visitYear = unmarriedParentsYear; visitYear = unmarriedParentsYear;
@ -199,7 +205,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
DataSet dateSet = QueryServiceHelper.queryDataSet( DataSet dateSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(), this.getClass().getName(),
"er_dailyreimbursebill", "er_dailyreimbursebill",
"id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days", "id,billno,zcgj_visit_type as visitType,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days",
filterArray, null filterArray, null
); );
@ -218,7 +224,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
DataSet dateSetSave = QueryServiceHelper.queryDataSet( DataSet dateSetSave = QueryServiceHelper.queryDataSet(
this.getClass().getName(), this.getClass().getName(),
"er_dailyreimbursebill", "er_dailyreimbursebill",
"id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days", "id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_holiday_days as days,zcgj_visit_type as visitType",
filterArray1, null filterArray1, null
); );
dateSet = dateSet.union(dateSetSave) ; dateSet = dateSet.union(dateSetSave) ;
@ -226,6 +232,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
//使用请假总天数 //使用请假总天数
int allHolidayCount = 0; int allHolidayCount = 0;
int allHolidayCountPO = 0;
//使用请假总次数 //使用请假总次数
int holidayCount = 0; int holidayCount = 0;
for (Row itemRow : dateSet) { for (Row itemRow : dateSet) {
@ -233,8 +240,14 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
Date startTimeVal = itemRow.getDate("startTime"); Date startTimeVal = itemRow.getDate("startTime");
Date endTimeVal = itemRow.getDate("endTime"); Date endTimeVal = itemRow.getDate("endTime");
Integer dayCount = itemRow.getInteger("days"); Integer dayCount = itemRow.getInteger("days");
String type = itemRow.getString("visitType");//1:探父母2:探配哦
//long dayCount = ChronoUnit.DAYS.between(dateToLocalDate(startTimeVal), dateToLocalDate(endTimeVal)); //long dayCount = ChronoUnit.DAYS.between(dateToLocalDate(startTimeVal), dateToLocalDate(endTimeVal));
allHolidayCount+=dayCount; if("1".equals(type)){
allHolidayCount+=dayCount;
}else if("2".equals(type)){
allHolidayCountPO+=dayCount;
}
holidayCount++; holidayCount++;
System.out.println(string); System.out.println(string);
} }
@ -242,12 +255,23 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn {
//剩余次数 //剩余次数
int remainderTimes = visitTime-holidayCount; int remainderTimes = visitTime-holidayCount;
//剩余天数 //剩余天数
long remainderDays = visitDays-allHolidayCount; long remainderDays = 0;
String typeStr = "父母";
Integer dayCount =0;
if("1".equals(visitType)){ // 1探望父母2探望配偶
remainderDays = visitDays-allHolidayCount;
dayCount =allHolidayCount;
}else if("2".equals(visitType)){
remainderDays = marriedSpouseDays-allHolidayCountPO;
dayCount =allHolidayCountPO;
typeStr = "配偶";
}
//判断剩余天数和本次请假天数 //判断剩余天数和本次请假天数
//long nowDays = ChronoUnit.DAYS.between(dateToLocalDate(startTime),dateToLocalDate(endTime))+1; //long nowDays = ChronoUnit.DAYS.between(dateToLocalDate(startTime),dateToLocalDate(endTime))+1;
String message = String.format("您在%s年到%s年中已用%d次探亲休假剩余%d次探亲休假已用%d天探亲天数剩余%d天探亲天数。本次休假天数%d天。" String message = String.format("您在%s年到%s年中已用%d次探"+typeStr+"休假,剩余%d次探"+typeStr+"休假,已用%d天探"+typeStr+"天数,剩余%d天探"+typeStr+"天数。本次休假天数%d天。"
,firstDayYearsAgo.getYear(),dateFormat.format(startTime),holidayCount,remainderTimes, ,firstDayYearsAgo.getYear(),dateFormat.format(startTime),holidayCount,remainderTimes,
allHolidayCount,remainderDays,days); dayCount,remainderDays,days);
if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - days) >=0)){ if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - days) >=0)){
//this.getView().showTipNotification(message); //this.getView().showTipNotification(message);
//this.addMessage(extendedDataEntity, message); //this.addMessage(extendedDataEntity, message);

View File

@ -1,19 +1,42 @@
package zcgj.zcdev.zcdev.fs.plugin.report; package zcgj.zcdev.zcdev.fs.plugin.report;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.context.RequestContext; import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.PackageDataEvent; import kd.bos.entity.datamodel.events.PackageDataEvent;
import kd.bos.entity.report.FilterInfo; import kd.bos.entity.report.FilterInfo;
import kd.bos.entity.report.ReportQueryParam; import kd.bos.entity.report.ReportQueryParam;
import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.form.StyleCss;
import kd.bos.form.control.Control;
import kd.bos.form.events.HyperLinkClickEvent;
import kd.bos.form.events.HyperLinkClickListener;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.report.events.CellStyleRule; import kd.bos.report.events.CellStyleRule;
import kd.bos.report.events.TreeReportListEvent;
import kd.bos.report.plugin.AbstractReportFormPlugin; import kd.bos.report.plugin.AbstractReportFormPlugin;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import kd.bos.report.ReportList;
import kd.bos.report.events.CreateColumnEvent;
import kd.bos.report.events.CreateFilterInfoEvent;
import kd.bos.report.plugin.AbstractReportFormPlugin;
import kd.bos.entity.report.*;
import java.util.Date;
import java.util.List; import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
/** /**
* 职员出差天数统计台账 * 职员扣除餐补天数统计台账
* 报表格式化插件 * 报表格式化插件
*/ */
public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements Plugin { public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements Plugin {
@ -29,6 +52,88 @@ public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements
DEV_KEY+"_total" DEV_KEY+"_total"
}; };
@Override
public void registerListener(EventObject e) {
//监听报表超链接点击事件
super.registerListener(e);
ReportList reportList = getControl("reportlistap");
reportList.addHyperClickListener(new HyperLinkClickListener() {
@Override
public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) {
String fieldName = hyperLinkClickEvent.getFieldName();
int rowIndex = hyperLinkClickEvent.getRowIndex();
if(rowIndex > 0){
ReportList reportList = getView().getControl("reportlistap");
DynamicObject rowData = reportList.getReportModel().getRowData(rowIndex);
if(rowData!=null && rowData.get("zcgj_user") != null){
DynamicObject user = (DynamicObject)rowData.get(0);
Long userId = (Long)user.getPkValue();
String zcgjYear = rowData.getString("zcgj_year");
DataSet tripreimbursebill = getTripreimbursebill(zcgjYear, "02", userId);
for (Row itemRow : tripreimbursebill){
String string = itemRow.getString("billno");
System.out.println();
}
DataSet dailyreimbursebill = getDailyreimbursebill(zcgjYear, "02", userId);
for (Row itemRow : dailyreimbursebill){
String string = itemRow.getString("billno");
Date startTime = itemRow.getDate("zcgj_holiday_start_time");
Date endTime = itemRow.getDate("zcgj_holiday_end_time");
Date startTimeEntity = itemRow.getDate("zcgj_startdate");
Date endTimeEntity = itemRow.getDate("zcgj_enddate");
System.out.println();
}
System.out.println();
FormShowParameter formShowParameter;
formShowParameter = new FormShowParameter();
formShowParameter.getOpenStyle().setShowType(ShowType.Modal);
formShowParameter.setFormId("zcgj_kccb_list");
// 自定义传参把当前单据的文本字段传过去
//formShowParameter.setCustomParam("list", this.getModel().getValue("kdec_textfield"));
StyleCss styleCss = new StyleCss();
styleCss.setWidth("800");
styleCss.setHeight("600");
formShowParameter.getOpenStyle().setInlineStyleCss(styleCss);
getView().showForm(formShowParameter);
}
}
//跳转到指定借款单
/* BillShowParameter showParameter = new BillShowParameter();
showParameter.setFormId("er_dailyloanbill");
showParameter.setPkId(loadSingle.getPkValue());
showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
showParameter.setStatus(OperationStatus.VIEW);
this.getView().showForm(showParameter);*/
System.out.println();
/*DataSet cDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "kdec_fruit_bill",
"billno as kdec_billno, kdec_fruit_pro.name as proname, kdec_entryentity.kdec_fruits as kdec_fruits",
null, "billno asc");
Iterator<Row> iterator = cDataSet.iterator();
int index = 0;
String billno = "";
while (iterator.hasNext()) {
index++;
Row row = iterator.next();
if (index == hyperLinkClickEvent.getRowIndex()) {
billno = row.getString(hyperLinkClickEvent.getFieldName());
break;
}
}*/
//System.out.println(billno + "HyperLinkClick");
}
});
}
@Override @Override
public void setMergeColums(List<String> columns) { public void setMergeColums(List<String> columns) {
columns.add(MERGECOLUM); columns.add(MERGECOLUM);
@ -94,4 +199,128 @@ public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements
ent.setSort(true); ent.setSort(true);
} }
}*/ }*/
/**
* 获取差旅费报销单
*
* @param applierId
* @return
*/
public DataSet getTripreimbursebill(String queryYear,String month,Long applierId) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String queryDate = queryYear+"-"+month+"-01";
LocalDate date = LocalDate.parse(queryDate, formatter);
// 获取当前日期的月份的第一天
LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
// 获取当前日期的月份的最后一天
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
//查询非暂存废弃的数据
List<String> billStatuslist = new ArrayList<>();
billStatuslist.add("E"); //审核通过
billStatuslist.add("F"); //等待付款
billStatuslist.add("G"); //已付款
billStatuslist.add("I"); //关闭
//查询申请人下的今年的探亲差旅单据
List<QFilter> searchFilterList = new ArrayList<>();
searchFilterList.add(new QFilter("applier", QCP.equals, applierId));
searchFilterList.add(new QFilter( "zcgj_is_include_home", QCP.equals, true));
searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));
searchFilterList.add( new QFilter("bizdate", QCP.large_equals, firstDayOfMonth));
searchFilterList.add( new QFilter("bizdate", QCP.less_equals, lastDayOfMonth));
DataSet dateSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"er_tripreimbursebill",
"id,billno,zcgj_kccbdays as kccbdays,bizdate",
searchFilterList.toArray(new QFilter [] {}), null
);
return dateSet;
}
/**
* 获取费用报销单
*
* @return
*/
public DataSet getDailyreimbursebill(String queryYear,String month,Long applierId) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String queryDate = queryYear+"-"+month+"-01";
LocalDate date = LocalDate.parse(queryDate, formatter);
// 获取当前日期的月份的第一天
LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
// 获取当前日期的月份的最后一天
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
//查询非暂存废弃的数据
List<String> billStatuslist = new ArrayList<>();
billStatuslist.add("E"); //审核通过
billStatuslist.add("F"); //等待付款
billStatuslist.add("G"); //已付款
//billStatuslist.add("H"); //废弃
billStatuslist.add("I"); //关闭
List<QFilter> searchFilterList = new ArrayList<>();
//查询申请人下的今年的探亲差旅单据
searchFilterList.add(new QFilter("applier", QCP.equals, applierId));
searchFilterList.add(new QFilter( "zcgj_is_visit", QCP.equals, true));
searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));
searchFilterList.add( new QFilter("bizdate", QCP.large_equals, firstDayOfMonth));
searchFilterList.add(new QFilter("bizdate", QCP.less_equals, lastDayOfMonth));
//DynamicObject[] load = BusinessDataServiceHelper.load("er_dailyreimbursebill", "id,billno,zcgj_kccbdays as kccbdays,bizdate," +
// "zcgj_holiday_start_time,zcgj_holiday_end_time," +
// "zcgj_homemx.zcgj_startdate,zcgj_homemx.zcgj_enddate", searchFilterList.toArray(new QFilter[]{}));
DataSet dateSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"er_dailyreimbursebill",
"id,billno,zcgj_kccbdays as kccbdays,bizdate," +
"zcgj_holiday_start_time,zcgj_holiday_end_time," +
"zcgj_homemx",
searchFilterList.toArray(new QFilter [] {}), null
);
List<QFilter> searchFilterList1 = new ArrayList<>();
//查询申请人下的今年的探亲差旅单据
searchFilterList1.add(new QFilter("applier", QCP.equals, applierId));
searchFilterList1.add(new QFilter( "zcgj_is_home", QCP.equals, true));
searchFilterList1.add(new QFilter("billstatus", QCP.in, billStatuslist));
searchFilterList1.add( new QFilter("bizdate", QCP.large_equals, firstDayOfMonth));
searchFilterList1.add(new QFilter("bizdate", QCP.less_equals, lastDayOfMonth));
//DynamicObject[] load = BusinessDataServiceHelper.load("er_dailyreimbursebill", "id,billno,zcgj_kccbdays as kccbdays,bizdate," +
// "zcgj_holiday_start_time,zcgj_holiday_end_time," +
// "zcgj_homemx.zcgj_startdate,zcgj_homemx.zcgj_enddate", searchFilterList.toArray(new QFilter[]{}));
DataSet dateSet1 = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"er_dailyreimbursebill",
"id,billno,zcgj_kccbdays as kccbdays,bizdate," +
"zcgj_homemx.zcgj_startdate,zcgj_homemx.zcgj_enddate",
searchFilterList1.toArray(new QFilter [] {}), null
);
return dateSet;
}
/**
* java.util.Date 转换为 java.time.LocalDate
* @param date java.util.Date
* @return java.time.LocalDate
*/
public static LocalDate dateToLocalDate(Date date) {
if (date == null) {
throw new IllegalArgumentException("日期不能为 null");
}
return date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
}
// 获取某年份的最后一天
public static LocalDate getLastDayOfYear(int year) {
return LocalDate.of(year, 12, 31);
}
// 获取某年份的第一天
public static LocalDate getFirstDayOfYear(int year) {
return LocalDate.of(year, 1, 1);
}
} }

View File

@ -23,7 +23,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 职员出差天数统计台账 * 职员扣除餐补天数统计台账
* 报表取数插件 * 报表取数插件
*/ */
public class EmpTravelRptQueryPlugin extends AbstractReportListDataPlugin { public class EmpTravelRptQueryPlugin extends AbstractReportListDataPlugin {
@ -67,14 +67,14 @@ public class EmpTravelRptQueryPlugin extends AbstractReportListDataPlugin {
DEV_KEY+"_january",DEV_KEY+"_february",DEV_KEY+"_march",DEV_KEY+"_april", DEV_KEY+"_january",DEV_KEY+"_february",DEV_KEY+"_march",DEV_KEY+"_april",
DEV_KEY+"_may", DEV_KEY+"_june", DEV_KEY+"_july",DEV_KEY+"_august", DEV_KEY+"_may", DEV_KEY+"_june", DEV_KEY+"_july",DEV_KEY+"_august",
DEV_KEY+"_september",DEV_KEY+"_october",DEV_KEY+"_november",DEV_KEY+"_december", DEV_KEY+"_september",DEV_KEY+"_october",DEV_KEY+"_november",DEV_KEY+"_december",
DEV_KEY+"_total" DEV_KEY+"_total",DEV_KEY+"_year"
}; };
DataType[] DATATYPES = { DataType[] DATATYPES = {
DataType.LongType,DataType.StringType, DataType.LongType,DataType.StringType,
DataType.StringType, DataType.StringType,DataType.StringType,DataType.IntegerType, DataType.StringType, DataType.StringType,DataType.StringType,DataType.IntegerType,
DataType.StringType, DataType.StringType, DataType.StringType,DataType.StringType, DataType.StringType, DataType.StringType, DataType.StringType,DataType.StringType,
DataType.StringType, DataType.StringType, DataType.StringType,DataType.StringType, DataType.StringType, DataType.StringType, DataType.StringType,DataType.StringType,
DataType.StringType DataType.StringType,DataType.StringType
}; };
// 初始化 DataSet // 初始化 DataSet
RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES); RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES);
@ -163,6 +163,7 @@ public class EmpTravelRptQueryPlugin extends AbstractReportListDataPlugin {
tempData[14] = totalDays; tempData[14] = totalDays;
coll.add(tempData); coll.add(tempData);
} }
tempData[15] =String.valueOf(year);
} }
return resultDataSet; return resultDataSet;

View File

@ -407,7 +407,7 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin {
billStatuslist.add("I"); //关闭 billStatuslist.add("I"); //关闭
List<QFilter> searchFilterList = new ArrayList<>(); List<QFilter> searchFilterList = new ArrayList<>();
//searchFilterList.add(new QFilter("applier", QCP.equals, userId)); //searchFilterList.add(new QFilter("applier", QCP.equals, userId));
searchFilterList.add(new QFilter("zcgj_costmanger", QCP.equals, userId));//根据费用归属领导查询 searchFilterList.add(new QFilter("expenseentryentity.zcgj_costmanger_entity", QCP.equals, userId));//根据费用归属领导查询
searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.large_equals, firstDay)); searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.large_equals, firstDay));
searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.less_equals, lastDay)); searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.less_equals, lastDay));
searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));//增加过滤 searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));//增加过滤