From a722ae200ba0a199247fcb016c7b53f98f18b8b7 Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Wed, 19 Feb 2025 14:12:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=B4=A2=E5=8A=A1=E5=85=B1=E4=BA=AB=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/CostcompanyDefaultPlugin.java | 2 +- .../plugin/operate/ApprovalCheckFlowOp.java | 25 +- .../operate/DailyreimbursVisitCheckOp.java | 50 +++- .../plugin/report/EmpTravelRptListPlugin.java | 235 +++++++++++++++++- .../report/EmpTravelRptQueryPlugin.java | 7 +- .../report/PositionFeesRptQueryPlugin.java | 2 +- 6 files changed, 288 insertions(+), 33 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/CostcompanyDefaultPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/CostcompanyDefaultPlugin.java index 4353835..b215459 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/CostcompanyDefaultPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/CostcompanyDefaultPlugin.java @@ -186,7 +186,7 @@ public class CostcompanyDefaultPlugin extends AbstractBillPlugIn implements Plu //bos_costcenter QFilter numberFilter = new QFilter("number",QCP.equals,costcompanyObj.getString("number")); 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); } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/ApprovalCheckFlowOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/ApprovalCheckFlowOp.java index 8d038d0..76b513d 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/ApprovalCheckFlowOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/ApprovalCheckFlowOp.java @@ -60,21 +60,22 @@ public class ApprovalCheckFlowOp extends AbstractOperationServicePlugIn { boolean isOk = true; //所有审批记录,从审批记录中获取已经审批过的人 List allApprovalRecords = WorkflowServiceHelper.getApprovalRecords(formid, billId, true); - for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) { - String groupDecisionType = allApprovalRecord.getGroupDecisionType(); - //过滤提交的和待分配的任务 - if("submit".equals(groupDecisionType)){ //获取每个节点的审批类型 提交:submit - Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人 - if(currentUserId.equals(userId) ){//如果审批不是提交人,则可以进行审批操作 - isOk = false; + if(allApprovalRecords!=null){ + for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) { + String groupDecisionType = allApprovalRecord.getGroupDecisionType(); + //过滤提交的和待分配的任务 + if("submit".equals(groupDecisionType)){ //获取每个节点的审批类型 提交:submit + Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人 + if(currentUserId.equals(userId) ){//如果审批不是提交人,则可以进行审批操作 + isOk = false; + } } } + if(!isOk){ + this.addFatalErrorMessage(extendedDataEntity, "当前操作人为单据提交人,无法进行审批操作,请转给他人进行审批!"); + return; + } } - if(!isOk){ - this.addFatalErrorMessage(extendedDataEntity, "当前操作人为单据提交人,无法进行审批操作,请转给他人进行审批!"); - return; - } - } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java index aae9416..112cda9 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java @@ -93,7 +93,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { QFilter[] visitSetFilterArray = new QFilter[1]; visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId); 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_spouse_year as marriedSpouseYear,zcgj_married_spouse_time as marriedSpouseTime," + "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 marriedSpouseDays =dynamicObject.getInt("marriedSpouseDays"); //婚姻状况,1:已婚,2:未婚 int marriedStatus =dynamicObject.getInt("marriedStatus"); //已婚探望父母年限 @@ -125,11 +127,15 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { //未婚探望父母次数 int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime"); - if(visitDays == 0 ){ - this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探亲假天数为空!"); + /*if(visitDays == 0 ){ + this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探父母天数为空!"); return; - } + }*/ if(marriedStatus == 1 ){ // 已婚 + /*if(marriedSpouseDays == 0 ){ + this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置探配偶天数为空!"); + return; + } if(marriedParentsYear == 0 ){ this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望父母年限为空!"); return; @@ -145,7 +151,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { if(marriedSpouseTime == 0 ){ this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置已婚探望配偶次数为空!"); return; - } + }*/ //如果是探望父母 if("1".equals(visitType)){ visitYear = marriedParentsYear; @@ -161,14 +167,14 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { this.addFatalErrorMessage(extendedDataEntity, "未婚状态下探亲类型只能选择探望父母!"); return; } - if(unmarriedParentsYear == 0 ){ + /*if(unmarriedParentsYear == 0 ){ this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母年限为空!"); return; } if(unmarriedParentsTime == 0 ){ this.addFatalErrorMessage(extendedDataEntity, "人员探亲配置未婚探望父母次数为空!"); return; - } + }*/ visitTime = unmarriedParentsTime; visitYear = unmarriedParentsYear; @@ -199,7 +205,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { DataSet dateSet = QueryServiceHelper.queryDataSet( this.getClass().getName(), "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 ); @@ -218,7 +224,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { DataSet dateSetSave = QueryServiceHelper.queryDataSet( this.getClass().getName(), "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 ); dateSet = dateSet.union(dateSetSave) ; @@ -226,6 +232,7 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { //使用请假总天数 int allHolidayCount = 0; + int allHolidayCountPO = 0; //使用请假总次数 int holidayCount = 0; for (Row itemRow : dateSet) { @@ -233,8 +240,14 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { Date startTimeVal = itemRow.getDate("startTime"); Date endTimeVal = itemRow.getDate("endTime"); Integer dayCount = itemRow.getInteger("days"); + String type = itemRow.getString("visitType");//1:探父母。2:探配哦 //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++; System.out.println(string); } @@ -242,12 +255,23 @@ public class DailyreimbursVisitCheckOp extends AbstractOperationServicePlugIn { //剩余次数 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; - 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, - allHolidayCount,remainderDays,days); + dayCount,remainderDays,days); if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - days) >=0)){ //this.getView().showTipNotification(message); //this.addMessage(extendedDataEntity, message); diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptListPlugin.java index a09afcf..e8529bf 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptListPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptListPlugin.java @@ -1,19 +1,42 @@ 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.dataentity.entity.DynamicObject; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.PackageDataEvent; import kd.bos.entity.report.FilterInfo; 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.TreeReportListEvent; import kd.bos.report.plugin.AbstractReportFormPlugin; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; 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 { @@ -29,6 +52,88 @@ public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements 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 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 public void setMergeColums(List columns) { columns.add(MERGECOLUM); @@ -94,4 +199,128 @@ public class EmpTravelRptListPlugin extends AbstractReportFormPlugin implements 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 billStatuslist = new ArrayList<>(); + billStatuslist.add("E"); //审核通过 + billStatuslist.add("F"); //等待付款 + billStatuslist.add("G"); //已付款 + billStatuslist.add("I"); //关闭 + //查询申请人下的今年的探亲差旅单据 + List 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 billStatuslist = new ArrayList<>(); + billStatuslist.add("E"); //审核通过 + billStatuslist.add("F"); //等待付款 + billStatuslist.add("G"); //已付款 + //billStatuslist.add("H"); //废弃 + billStatuslist.add("I"); //关闭 + + List 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 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); + } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptQueryPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptQueryPlugin.java index f374a7d..d2ea151 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptQueryPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/EmpTravelRptQueryPlugin.java @@ -23,7 +23,7 @@ import java.util.*; import java.util.stream.Collectors; /** - * 职员出差天数统计台账 + * 职员扣除餐补天数统计台账 * 报表取数插件 */ 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+"_may", DEV_KEY+"_june", DEV_KEY+"_july",DEV_KEY+"_august", DEV_KEY+"_september",DEV_KEY+"_october",DEV_KEY+"_november",DEV_KEY+"_december", - DEV_KEY+"_total" + DEV_KEY+"_total",DEV_KEY+"_year" }; DataType[] DATATYPES = { DataType.LongType,DataType.StringType, 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 }; // 初始化 DataSet RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES); @@ -163,6 +163,7 @@ public class EmpTravelRptQueryPlugin extends AbstractReportListDataPlugin { tempData[14] = totalDays; coll.add(tempData); } + tempData[15] =String.valueOf(year); } return resultDataSet; diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java index 5a38c09..7df155e 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java @@ -407,7 +407,7 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { billStatuslist.add("I"); //关闭 List searchFilterList = new ArrayList<>(); //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.less_equals, lastDay)); searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));//增加过滤