diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java index ff7805b..60ab7f1 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java @@ -5,12 +5,16 @@ import kd.bos.algo.Row; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.datamodel.IDataModel; +import kd.bos.entity.datamodel.RowDataEntity; +import kd.bos.entity.datamodel.events.AfterAddRowEventArgs; +import kd.bos.entity.datamodel.events.BizDataEventArgs; import kd.bos.entity.operate.Submit; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.sdk.plugin.Plugin; @@ -22,6 +26,7 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.Date; +import java.util.EventObject; import java.util.List; /** @@ -35,247 +40,24 @@ public class DailyreimbursVisitCheckPlugin extends AbstractBillPlugIn implemen private static final String prefix ="zcgj"; @Override - public void beforeDoOperation(BeforeDoOperationEventArgs args) { - try{ - if((args.getSource() instanceof Submit) ){ - Submit source = (Submit)args.getSource(); - if(source.getOperateKey().equals("submit") ){ - IDataModel model = this.getModel(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy"); - //报销人 - DynamicObject applier = (DynamicObject)this.getModel().getValue("applier"); - long applierId = applier.getLong("id"); - //获取休假开始时间 - Date startTime = (Date)model.getValue(prefix + "_holiday_start_time"); - Date endTime = (Date)model.getValue(prefix + "_holiday_end_time"); - //获取是否探亲 - //如果是探亲,则进行逻辑判断 - Boolean isVisit = (Boolean)model.getValue(prefix+"_is_visit"); + public void afterAddRow(AfterAddRowEventArgs e) { + super.afterAddRow(e); + //RowDataEntity[] rowDataEntities = e.getRowDataEntities(); + //for (RowDataEntity rowDataEntity : rowDataEntities) { + // int rowIndex = rowDataEntity.getRowIndex(); + // QFilter nameQFilterAccItem = new QFilter("number",QCP.equals,"FYXM004.999"); + // DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + // this.getModel().setValue("expenseitem",dynamicObjectAccItem,rowIndex); + //} - if(isVisit){ - //探亲类型 1:探望父母,2:探望配偶 - String visitType = (String)model.getValue(prefix + "_visit_type"); + } - //获取当前人的探亲假配置 - 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," + - "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); - if(dynamicObject == null){ - this.getView().showErrorNotification("请设置人员探亲配置信息!"); - //取消提交操作 - args.setCancel(true); - return; - } - - //探亲次数 - int visitTime = 0; - //探亲年限 - int visitYear = 0; - - //总年探亲天数 - int visitDays =dynamicObject.getInt("visitDays"); - //婚姻状况,1:已婚,2:未婚 - int marriedStatus =dynamicObject.getInt("marriedStatus"); - //已婚探望父母年限 - int marriedParentsYear =dynamicObject.getInt("marriedParentsYear"); - //已婚探望父母次数 - int marriedParentsTime =dynamicObject.getInt("marriedParentsTime"); - //已婚探望配偶年限 - int marriedSpouseYear =dynamicObject.getInt("marriedSpouseYear"); - //已婚探望配偶次数 - int marriedSpouseTime =dynamicObject.getInt("marriedSpouseTime"); - //未婚探望父母年限 - int unmarriedParentsYear =dynamicObject.getInt("unmarriedParentsYear"); - //未婚探望父母次数 - int unmarriedParentsTime =dynamicObject.getInt("unmarriedParentsTime"); - - if(visitDays == 0 ){ - this.getView().showErrorNotification("人员探亲配置探亲假天数为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(marriedStatus == 1 ){ // 已婚 - if(marriedParentsYear == 0 ){ - this.getView().showErrorNotification("人员探亲配置已婚探望父母年限为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(marriedParentsTime == 0 ){ - this.getView().showErrorNotification("人员探亲配置已婚探望父母次数为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(marriedSpouseYear == 0 ){ - this.getView().showErrorNotification("人员探亲配置已婚探望配偶年限为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(marriedSpouseTime == 0 ){ - this.getView().showErrorNotification("人员探亲配置已婚探望配偶次数为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - //如果是探望父母 - if("1".equals(visitType)){ - visitYear = marriedParentsYear; - visitTime = marriedParentsTime; - }else - //如果是探望配偶 - if("2".equals(visitType)){ - visitTime = marriedSpouseTime; - visitYear = marriedSpouseYear; - } - }else if (marriedStatus == 2) { // 未婚 - if(!"1".equals(visitType)){ - this.getView().showErrorNotification("未婚状态下探亲类型只能选择探望父母!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(unmarriedParentsYear == 0 ){ - this.getView().showErrorNotification("人员探亲配置未婚探望父母年限为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - if(unmarriedParentsTime == 0 ){ - this.getView().showErrorNotification("人员探亲配置未婚探望父母次数为空!"); - //取消提交操作 - args.setCancel(true); - return; - } - - visitTime = unmarriedParentsTime; - visitYear = unmarriedParentsYear; - } - - Date firstDayOfYear = getFirstDayOfYear(startTime); - //年限开始时间 - LocalDate firstDayYearsAgo = getFirstDayYearsAgo(dateToLocalDate(startTime), visitYear); - Date lastDayOfYear = getLastDayOfYear(startTime); - - List billStatuslist = new ArrayList<>(); - billStatuslist.add("B"); - billStatuslist.add("C"); - billStatuslist.add("D"); - billStatuslist.add("E"); - billStatuslist.add("F"); - billStatuslist.add("G"); - // 查询条件 - QFilter[] filterArray = new QFilter[5]; - //查询申请人下的今年的探亲差旅单据 - filterArray[0] = new QFilter(prefix+"_holiday_start_time", QCP.large_equals, firstDayOfYear); - filterArray[1] = new QFilter(prefix+"_holiday_start_time", QCP.less_equals, lastDayOfYear); - filterArray[2] = new QFilter("applier", QCP.equals, applierId); - filterArray[3] = new QFilter(prefix+"_is_visit", QCP.equals, true); - filterArray[4] = new QFilter("billstatus", QCP.in, billStatuslist); - - 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", - filterArray, null - ); - //使用请假总天数 - long allHolidayCount = 0; - //使用请假总次数 - int holidayCount = 0; - for (Row itemRow : dateSet) { - String string = itemRow.getString("billno"); - Date startTimeVal = itemRow.getDate("startTime"); - Date endTimeVal = itemRow.getDate("endTime"); - //long dayCount = ChronoUnit.DAYS.between(dateToLocalDate(startTimeVal), dateToLocalDate(endTimeVal)); - Integer dayCount = itemRow.getInteger("days"); - allHolidayCount+=dayCount; - holidayCount++; - System.out.println(string); - } - //剩余次数 - int remainderTimes = visitTime-holidayCount; - //剩余天数 - long remainderDays = visitDays-allHolidayCount; - //判断剩余天数和本次请假天数 - long nowDays = ChronoUnit.DAYS.between(dateToLocalDate(startTime),dateToLocalDate(endTime))+1; - - String message = String.format("您在%s年到%s年中已用%d次探亲休假,剩余%d次探亲休假,已用%d天探亲天数,剩余%d天探亲天数。本次休假天数%d天。" - ,firstDayYearsAgo.getYear(),dateFormat.format(startTime),holidayCount,remainderTimes, - allHolidayCount,remainderDays,nowDays); - if((remainderTimes > 0) && (remainderDays >= 0) &&((remainderDays - nowDays) >=0)){ - this.getView().showTipNotification(message); - }else{ - this.getView().showErrorNotification("探亲次数或探亲天数不足!"+message); - //取消提交操作 - args.setCancel(true); - return; - } - } - //判断是否来往家居地 - Boolean isHome = (Boolean)model.getValue(prefix+"_is_home"); - if(isHome){ - //获取当前人的往来家居地配置 - QFilter[] visitSetFilterArray = new QFilter[1]; - visitSetFilterArray[0] = new QFilter(prefix+"_user", QCP.equals, applierId); - DataSet homeDataSet = QueryServiceHelper.queryDataSet( - this.getClass().getName(), - prefix+"_user_home_conf", - "id,zcgj_month_times as monthTime", - visitSetFilterArray, null - ); - Integer monthTime = null; - for (Row row : homeDataSet) { - monthTime = row.getInteger("monthTime"); - } - //获取申请日期 - Date bizdate = (Date)model.getValue( "bizdate"); - - //获取申请人在月份的单据量 - LocalDate firstDayOfMonth = getFirstDayOfMonth(bizdate); - LocalDate lastDayOfMonth = getLastDayOfMonth(bizdate); - QFilter[] filterArray = new QFilter[4]; - //查询申请人下的今年的探亲差旅单据 - filterArray[0] = new QFilter("bizdate", QCP.large_equals, firstDayOfMonth); - filterArray[1] = new QFilter("bizdate", QCP.less_equals, lastDayOfMonth); - filterArray[2] = new QFilter("applier", QCP.equals, applierId); - filterArray[3] = new QFilter(prefix+"_is_home", QCP.equals, true); - DataSet dateSet = QueryServiceHelper.queryDataSet( - this.getClass().getName(), - "er_dailyreimbursebill", - "id,billno,zcgj_holiday_start_time as startTime,zcgj_holiday_end_time as endTime,zcgj_is_home as ishome", - filterArray, null - ); - int goHomeCount = 0; - for (Row row : dateSet) { - Boolean ishome = row.getBoolean("ishome"); - System.out.println(row.getString("billno")); - if(ishome){ - goHomeCount++; - } - } - if(monthTime != null && monthTime != 0){ - int monthVal = firstDayOfMonth.getMonth().getValue(); - String message = String.format("请知悉:您每月共有%d次往来家居地报销次数,在%d月中已进行过%d次来往家居地报销。",monthTime,monthVal,goHomeCount); - //this.getView().showSuccessNotification(message); - this.getView().showTipNotification(message); - } - - } - } - } - - super.beforeDoOperation(args); - }catch (Exception e){ - log.error(e.getMessage()); - this.getView().showErrorNotification("系统异常"); - } + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + QFilter nameQFilterAccItem = new QFilter("number",QCP.equals,"FYXM004.999"); + DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + this.getModel().setValue("expenseitem",dynamicObjectAccItem,0); } /** diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DefaultExpenseItemPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DefaultExpenseItemPlugin.java new file mode 100644 index 0000000..8970465 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DefaultExpenseItemPlugin.java @@ -0,0 +1,66 @@ +package zcgj.zcdev.zcdev.fs.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.org.model.OrgTreeParam; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.org.OrgUnitServiceHelper; +import kd.bos.servicehelper.org.OrgViewType; +import kd.hr.hbp.business.openservicehelper.odc.AdminOrgServiceHelper; +import kd.sdk.plugin.Plugin; +import kd.taxc.common.helper.OrgServiceHelper; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 报销单默认费用项目 + */ +public class DefaultExpenseItemPlugin extends AbstractBillPlugIn implements Plugin { + + @Override + public void afterCreateNewData(EventObject e) { + //中材矿山建设有限公司 10006431 + //中材矿山建设有限公司本部 10006447 + + //中国建筑材料工业建设西安工程有限公司本部 10007186 + //兖州中材建设有限公司本部 10006476 + //中国非金属材料南京矿山工程有限公司本部 10006461 + //天津矿山工程有限公司本部 10006939 + //通过费用承担公司找到行政组织,获取长名称,排除编码为'10006447','10007186','10006476','10006461','10006939'的 + String rootOrgCode = "10006431"; + super.afterCreateNewData(e); + DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany"); + long id = costcompany.getLong("id"); + + List orgNumList = new ArrayList<>(); + orgNumList.add("10006447"); + orgNumList.add("10007186"); + orgNumList.add("10006476"); + orgNumList.add("10006461"); + orgNumList.add("10006939"); + QFilter filterOrgDepId = new QFilter("number", QCP.in,orgNumList); + DynamicObject[] adminOrg1 = BusinessDataServiceHelper.load("bos_org", "number,name,fullname", new QFilter[]{filterOrgDepId}); + Set idSet = Arrays.stream(adminOrg1).map(data -> data.getLong("id")).collect(Collectors.toSet()); + //判断是不是在几家总部 + if(!idSet.contains(id)){ + QFilter filterOrgId = new QFilter("number", QCP.equals,rootOrgCode);//中材矿山建设有限公司 + DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId}); + long orgId = adminOrg.getLong("id"); + List orgIds = new ArrayList<>(1); + //orgIds.add(1692204547985902592L); + orgIds.add(orgId); + List subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, orgIds, true); + Set collect = subOrgIds.stream().filter(data -> !idSet.contains(id)).collect(Collectors.toSet()); + + if(collect.contains(id)){ + QFilter nameQFilterAccItem = new QFilter("number", QCP.equals,"FYXM004.999"); + DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + this.getModel().setValue("expenseitem",dynamicObjectAccItem,0); + } + } + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillAbroadAlertedPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillAbroadAlertedPlugin.java index 86fe33e..4de434d 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillAbroadAlertedPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillAbroadAlertedPlugin.java @@ -10,6 +10,7 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.sdk.plugin.Plugin; +import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashMap; @@ -33,57 +34,65 @@ public class TripreimbursebillAbroadAlertedPlugin extends AbstractBillPlugIn imp IDataModel model = this.getModel(); ChangeData[] changeSet = e.getChangeSet(); DynamicObject newValue = (DynamicObject)changeSet[0].getNewValue(); - long id = newValue.getLong("id"); - //获取地域详细信息 - //bd_admindivision - DynamicObject cityObj = BusinessDataServiceHelper.loadSingle("bd_admindivision", "country", - new QFilter[]{new QFilter("id", QCP.equals,id)}); - if(cityObj!=null){ - DynamicObject country = cityObj.getDynamicObject("country"); - long countryId = country.getLong("id"); - //获取所属国家 - //bd_country - DynamicObject countryObj = BusinessDataServiceHelper.loadSingle("bd_country", "number,name,twocountrycode", - new QFilter[]{new QFilter("id", QCP.equals,countryId)}); - if(countryObj!=null){ - String twocountrycode = countryObj.getString("twocountrycode"); - String countname = countryObj.getString("name"); - if(!"CN".equals(twocountrycode)){ - DynamicObject[] load = BusinessDataServiceHelper.load("zcgj_oversea_stays_limit", - "zcgj_district_f7,zcgj_country,zcgj_currency,zcgj_stays_criteria,zcgj_rate" - , new QFilter[]{new QFilter("zcgj_country", QCP.equals, countryId)}); - BigDecimal otherAmount = BigDecimal.ZERO; - BigDecimal cirtyAmount = BigDecimal.ZERO; - String currencyName = ""; - String currencySign = ""; - if(load == null || load.length<1){ - // this.getView().showTipNotification("当前出差国家为:"+countname+",未设置住宿标准!"); - }else{ - Map map = new HashMap<>(); - for (DynamicObject dynamicObject : load) { - DynamicObject zcgjCountry = dynamicObject.getDynamicObject("zcgj_country"); - DynamicObject zcgjDistrictF7 = dynamicObject.getDynamicObject("zcgj_district_f7"); - DynamicObject zcgjCurrency = dynamicObject.getDynamicObject("zcgj_currency"); - BigDecimal zcgjStaysCriteria = dynamicObject.getBigDecimal("zcgj_stays_criteria"); - BigDecimal zcgjRate = dynamicObject.getBigDecimal("zcgj_rate"); - currencyName = zcgjCurrency.getString("name"); - if(zcgjDistrictF7 ==null ){ - otherAmount = zcgjStaysCriteria.multiply(zcgjRate); - }else if(countryId == zcgjDistrictF7.getLong("id")){ - cirtyAmount = zcgjStaysCriteria.multiply(zcgjRate); + if(newValue!=null){ + long id = newValue.getLong("id"); + //获取地域详细信息 + //bd_admindivision + DynamicObject cityObj = BusinessDataServiceHelper.loadSingle("bd_admindivision", "country", + new QFilter[]{new QFilter("id", QCP.equals,id)}); + if(cityObj!=null){ + long cityId = cityObj.getLong("id"); + DynamicObject country = cityObj.getDynamicObject("country"); + long countryId = country.getLong("id"); + //获取所属国家 + //bd_country + DynamicObject countryObj = BusinessDataServiceHelper.loadSingle("bd_country", "number,name,twocountrycode", + new QFilter[]{new QFilter("id", QCP.equals,countryId)}); + if(countryObj!=null){ + String twocountrycode = countryObj.getString("twocountrycode"); + String countname = countryObj.getString("name"); + if(!"CN".equals(twocountrycode)){ + DynamicObject[] load = BusinessDataServiceHelper.load("zcgj_oversea_stays_limit", + "zcgj_district_f7,zcgj_country,zcgj_currency,zcgj_stays_criteria,zcgj_rate" + , new QFilter[]{new QFilter("zcgj_country", QCP.equals, countryId)}); + BigDecimal otherAmount = BigDecimal.ZERO; + BigDecimal cirtyAmount = BigDecimal.ZERO; + BigDecimal rate = BigDecimal.ZERO; + String currencyName = ""; + String currencySign = ""; + if(load == null || load.length<1){ + // this.getView().showTipNotification("当前出差国家为:"+countname+",未设置住宿标准!"); + }else{ + Map map = new HashMap<>(); + for (DynamicObject dynamicObject : load) { + DynamicObject zcgjCountry = dynamicObject.getDynamicObject("zcgj_country"); + DynamicObject zcgjDistrictF7 = dynamicObject.getDynamicObject("zcgj_district_f7"); + DynamicObject zcgjCurrency = dynamicObject.getDynamicObject("zcgj_currency"); + BigDecimal zcgjStaysCriteria = dynamicObject.getBigDecimal("zcgj_stays_criteria"); + BigDecimal zcgjRate = dynamicObject.getBigDecimal("zcgj_rate"); + rate=zcgjRate; + currencyName = zcgjCurrency.getString("name"); + if(zcgjDistrictF7 ==null ){ + otherAmount = zcgjStaysCriteria.multiply(zcgjRate); + }else if(cityId == zcgjDistrictF7.getLong("id")){ + cirtyAmount = zcgjStaysCriteria.multiply(zcgjRate); + } + } + if(!BigDecimal.ZERO.equals(otherAmount) && BigDecimal.ZERO.equals(cirtyAmount) ){ + this.getView().showTipNotification("当前出差国家为:"+countname+",汇率为:"+rate.setScale(4, RoundingMode.HALF_UP)+",住宿标准每人每天为(人民币):"+otherAmount.setScale(4, RoundingMode.HALF_UP)+"元"); + }else if(!BigDecimal.ZERO.equals(cirtyAmount) ){ + this.getView().showTipNotification("当前出差国家为:"+countname+",汇率为:"+rate.setScale(4, RoundingMode.HALF_UP)+",住宿标准每人每天为(人民币):"+cirtyAmount.setScale(4, RoundingMode.HALF_UP)+"元"); } - } - if(!BigDecimal.ZERO.equals(otherAmount) && BigDecimal.ZERO.equals(cirtyAmount) ){ - //this.getView().showTipNotification("当前出差国家为:"+countname+",币别为:"+currencyName+",住宿标准为:"+otherAmount.setScale(2, RoundingMode.HALF_UP)); - this.getView().showTipNotification("当前出差国家为:"+countname+",住宿标准为(人民币):"+otherAmount.setScale(2, RoundingMode.HALF_UP)+"元"); - }else if(BigDecimal.ZERO.equals(otherAmount) && !BigDecimal.ZERO.equals(cirtyAmount) ){ - //this.getView().showTipNotification("当前出差国家为:"+countname+",币别为:"+currencyName+",住宿标准为:"+cirtyAmount.setScale(2, RoundingMode.HALF_UP)); - this.getView().showTipNotification("当前出差国家为:"+countname+",住宿标准为(人民币):"+cirtyAmount.setScale(2, RoundingMode.HALF_UP)+"元"); } } } } } + + InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("fs.properties"); + System.out.println(); + + } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java similarity index 99% rename from code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckOp.java rename to code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java index 8c37df3..1461dc7 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursVisitCheckOp.java @@ -1,9 +1,8 @@ -package zcgj.zcdev.zcdev.fs.plugin.form; +package zcgj.zcdev.zcdev.fs.plugin.operate; import kd.bos.algo.DataSet; import kd.bos.algo.Row; import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; @@ -12,13 +11,11 @@ import kd.bos.entity.validate.AbstractValidator; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; -import kd.sdk.plugin.Plugin; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.Month; import java.time.ZoneId; -import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.*; diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillUpOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillUpOp.java similarity index 92% rename from code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillUpOp.java rename to code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillUpOp.java index 3551040..cad584e 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TripreimbursebillUpOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillUpOp.java @@ -1,31 +1,17 @@ -package zcgj.zcdev.zcdev.fs.plugin.form; +package zcgj.zcdev.zcdev.fs.plugin.operate; -import kd.bos.algo.DataSet; -import kd.bos.algo.Row; -import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.ExtendedDataEntity; -import kd.bos.entity.datamodel.IDataModel; -import kd.bos.entity.datamodel.events.PropertyChangedArgs; -import kd.bos.entity.operate.Submit; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.validate.AbstractValidator; -import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; -import kd.bos.orm.query.QCP; -import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.QueryServiceHelper; -import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.util.*; /** * 差旅报销单上浮20%控制 diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/ExpenseReport.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/ExpenseReport.java index 47e4299..24a5029 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/ExpenseReport.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/ExpenseReport.java @@ -156,4 +156,25 @@ class ExpenseReport { public void setTotal(BigDecimal total) { this.total = total; } + + public Object[] toRow() { + return new Object[]{ + this.reimburser, + this.billNumber, + this.happenDateStr, + this.businessEntertainment, + this.foreignEntertainment, + this.importantOfficial, + this.accommodation, + this.souvenirs, + this.other, + this.subtotal, + this.travel, + this.abroadTravel, + this.health, + this.correspondence, + this.training, + this.total + }; + } } \ No newline at end of file diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptQueryPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptQueryPlugin.java index 87a01ee..cb15ed0 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptQueryPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptQueryPlugin.java @@ -45,9 +45,9 @@ public class FeeDeductionRptQueryPlugin extends AbstractReportListDataPlugin { } } break; - /*case DEV_KEY+"_query_org": + case DEV_KEY+"_query_org": orgId = (filterItem.getValue() == null) ? null :Long.valueOf(String.valueOf(((DynamicObject) filterItem.getValue()).getPkValue())); - break;*/ + break; case DEV_KEY+"_query_year": queryYear = filterItem.getDate(); break; @@ -76,9 +76,9 @@ public class FeeDeductionRptQueryPlugin extends AbstractReportListDataPlugin { // 日期格式化 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); - /*if(orgId==null ){ + if(orgId==null ){ return resultDataSet; - }*/ + } List searchFilterList = new ArrayList<>(); // 查询条件 @@ -93,6 +93,9 @@ public class FeeDeductionRptQueryPlugin extends AbstractReportListDataPlugin { searchFilterList.add(new QFilter("tripentry.startdate", QCP.large_equals, firstDay)); searchFilterList.add(new QFilter("tripentry.startdate", QCP.less_equals, lastDay)); } + if(orgId!=null){ + searchFilterList.add(new QFilter("company", QCP.equals, orgId)); + } List billStatuslist = new ArrayList<>(); //billStatuslist.add("A"); //暂存 //billStatuslist.add("B"); //已提交 diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptListPlugin.java index c83c9cb..7a2f271 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptListPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptListPlugin.java @@ -68,13 +68,32 @@ public class PositionFeesRptListPlugin extends AbstractReportFormPlugin implemen @Override public void setCellStyleRules(List 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) { + 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.setFieldKey(field);// 字段标识 cellStyleRule.setForeColor("#666666");// 前景色 cellStyleRule.setBackgroundColor("#ffc000");// 背景色 cellStyleRule.setDegree(100);// 透明度 - cellStyleRule.setCondition("shxr_username = '合计'");// 前置条件,值与表达式计算器一致 + cellStyleRule.setCondition("zcgj_username = '合计'");// 前置条件,值与表达式计算器一致 cellStyleRules.add(cellStyleRule); } 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 e665064..5a38c09 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 @@ -47,6 +47,7 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { Set applierId = new HashSet<>(); Long orgId = null; Date queryYear = null; + boolean istax = false; for (FilterItemInfo filterItem : filters) { switch (filterItem.getPropName()) { case DEV_KEY+"_query_users": @@ -63,6 +64,9 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { case DEV_KEY+"_query_org": orgId = (filterItem.getValue() == null) ? null :Long.valueOf(String.valueOf(((DynamicObject) filterItem.getValue()).getPkValue())); break; + case DEV_KEY+"_query_istax": + istax = filterItem.getBoolean(); + break; default: break; } @@ -86,7 +90,16 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { DataType.BigDecimalType,DataType.BigDecimalType,DataType.BigDecimalType, DataType.BigDecimalType }; - + Set 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 RowMeta rowMeta = RowMetaFactory.createRowMeta(FIELDS, DATATYPES); Collection coll = new ArrayList<>(); @@ -107,7 +120,7 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { } LocalDate localDate = dateToLocalDate(queryYear); int year = localDate.getYear(); - + Set userSet = new HashSet<>(); // 用 Map 来按照报销人、单据编号、费用发生日期分组 Map reportMap = new LinkedHashMap<>(); for (Long userId : allUsersOfOrg) { @@ -126,12 +139,21 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { } Date happendate = entry.getDate("happendate");//费用发生日期 String itemNumber = expenseitemObj.getString("number");//费用项目编码 + if(!itemSet.contains(itemNumber)){ + continue; + } String happendateStr = dateFormat.format(happendate);//费用发生日期str - BigDecimal expenseamount = entry.getBigDecimal("expenseamount");//报销金额 + BigDecimal expenseamount = BigDecimal.ZERO; + if(istax){ + expenseamount = entry.getBigDecimal("expenseamount");//报销金额 + }else{ + expenseamount = entry.getBigDecimal("orientryamount");//不含税金额 + } + // 生成唯一的键:报销人 + 单据编号 + 费用发生日期 String key = userId + "-" + billno + "-" + happendateStr; - + userSet.add(userId); // 根据键获取报表对象 ExpenseReport report = reportMap.get(key); if (report == null) { @@ -198,9 +220,15 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { String happendateStr = dateFormat.format(happendate);//费用发生日期str DynamicObjectCollection entryentity = entry.getDynamicObjectCollection("entryentity"); for (DynamicObject object : entryentity) { - BigDecimal orientryamount = object.getBigDecimal("orientryamount");//报销金额 + BigDecimal orientryamount = BigDecimal.ZERO; + if(istax){ + orientryamount = object.getBigDecimal("orientryamount");//报销金额 + }else{ + orientryamount = object.getBigDecimal("notaxamount");//不含税金额 + } // 生成唯一的键:报销人 + 单据编号 + 费用发生日期 String key = userId + "-" + billno + "-" + happendateStr; + userSet.add(userId); // 根据键获取报表对象 ExpenseReport report = reportMap.get(key); if (report == null) { @@ -224,80 +252,134 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { //合计汇总 ExpenseReport totalReport = new ExpenseReport(null, null, null); - ArrayList reportsList = new ArrayList<>(reportMap.values()); - // 打印每一行报表 - for (ExpenseReport report : reportsList) { - Map userInfoByID = UserServiceHelper.getUserInfoByID(report.getReimburser()); - String username = String.valueOf(userInfoByID.get("name"));//报销人 + Set strings = reportMap.keySet(); - Object [] tempData = new Object [FIELDS.length]; - coll.add(tempData); - 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)); - 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; + Map> userIdDataMap = new HashMap<>(); + //根据人员进行汇总 + for (Long userId : userSet) { + for (String string : strings) { + if(string.startsWith(userId+"")){ + if(userIdDataMap.containsKey(userId)){ + Map stringExpenseReportMap = userIdDataMap.get(userId); + stringExpenseReportMap.put(string,reportMap.get(string)); + //userIdDataMap.put(userId,stringExpenseReportMap); + }else{ + Map data= new HashMap<>(); + data.put(string,reportMap.get(string)); + userIdDataMap.put(userId,data); + } + } + } + } - BigDecimal total = subtotal.add(travel).add(abroadTravel).add(health).add(correspondence).add(training); - totalReport.setTotal(totalReport.getTotal().add(total)); - tempData[16] = total; + for (Long userId : userIdDataMap.keySet()) { + Map stringExpenseReportMap = userIdDataMap.get(userId); + ArrayList reportsList = new ArrayList<>(stringExpenseReportMap.values()); + ExpenseReport userTotalReport = new ExpenseReport(null, null, null); + + // 打印每一行报表 + for (ExpenseReport report : reportsList) { + Map userInfoByID = UserServiceHelper.getUserInfoByID(report.getReimburser()); + String username = String.valueOf(userInfoByID.get("name"));//报销人 + + Object [] tempData = new Object [FIELDS.length]; + coll.add(tempData); + 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(); } - Object [] tempData = new Object [FIELDS.length]; - coll.add(tempData); - tempData[1] = "合计"; - tempData[4] = totalReport.getBusinessEntertainment(); - tempData[5] = totalReport.getForeignEntertainment(); - tempData[6] = totalReport.getImportantOfficial(); - tempData[7] = totalReport.getOther(); - tempData[8] = totalReport.getAccommodation(); - tempData[9] = totalReport.getSouvenirs(); - tempData[10] = totalReport.getSubtotal(); - tempData[11] = totalReport.getTravel(); - tempData[12] = totalReport.getAbroadTravel(); - tempData[13] = totalReport.getHealth(); - tempData[14] = totalReport.getCorrespondence(); - tempData[15] = totalReport.getTraining(); - tempData[16] = totalReport.getTotal(); + Object [] tempData = new Object [FIELDS.length]; + coll.add(tempData); + tempData[1] = "合计"; + tempData[4] = totalReport.getBusinessEntertainment(); + tempData[5] = totalReport.getForeignEntertainment(); + tempData[6] = totalReport.getImportantOfficial(); + tempData[7] = totalReport.getOther(); + tempData[8] = totalReport.getAccommodation(); + tempData[9] = totalReport.getSouvenirs(); + tempData[10] = totalReport.getSubtotal(); + tempData[11] = totalReport.getTravel(); + tempData[12] = totalReport.getAbroadTravel(); + tempData[13] = totalReport.getHealth(); + tempData[14] = totalReport.getCorrespondence(); + tempData[15] = totalReport.getTraining(); + tempData[16] = totalReport.getTotal(); return resultDataSet; @@ -324,7 +406,8 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { //billStatuslist.add("H"); //废弃 billStatuslist.add("I"); //关闭 List 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.happendate", QCP.large_equals, firstDay)); searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.less_equals, lastDay)); searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));//增加过滤 @@ -333,7 +416,9 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { DEV_KEY+"_is_business_foreign,"+ "expenseentryentity.happendate," + //费用发生日期 "expenseentryentity.expenseitem," + //费用项目 - "expenseentryentity.expenseamount ", searchFilterList.toArray(new QFilter [] {})); + "expenseentryentity.expenseamount, "+//报销金额(含税) + "expenseentryentity.orientryamount " //不含税金额 + , searchFilterList.toArray(new QFilter [] {})); return load; } @@ -365,8 +450,9 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { "id,description,billno,expenseentryentity," + DEV_KEY+"_is_business_foreign,"+ "id,applier,billno,tripentry.startdate,tripentry.entryentity," + //费用发生日期 - "entryentity.orientryamount", //报销金额 - searchFilterList.toArray(new QFilter [] {})); + "entryentity.orientryamount,"+ //报销金额 + "entryentity.notaxamount", //不含税金额 + searchFilterList.toArray(new QFilter [] {})); return load; }