From 77c6f1a2463f0d7f6f43053c7a4ce5d1da3bd7b2 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Thu, 16 Oct 2025 16:48:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=80=E6=9D=A5=E5=AE=B6=E5=B1=85=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=95=B0=E6=8D=AE=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/DailyreimbursHomeCheckOp.java | 15 +- .../TripreimbursebillIsHomeCheckOp.java | 186 +++++++++--------- 2 files changed, 106 insertions(+), 95 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursHomeCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursHomeCheckOp.java index f15bb47..e98eaf7 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursHomeCheckOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyreimbursHomeCheckOp.java @@ -91,15 +91,16 @@ public class DailyreimbursHomeCheckOp extends AbstractOperationServicePlugIn { String message = String.format("提交人没有往来居家配置。"); this.addFatalErrorMessage(extendedDataEntity, message); } - int monthTime = 0; + Integer monthTime = null; for (Row row : homeDataSet) { monthTime = row.getInteger("monthTime"); } - if(monthTime != 0){ - DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");// - if(tripentry==null || tripentry.isEmpty()){ - this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细!")); - } + DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");// + if(tripentry==null || tripentry.isEmpty()){ + this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细!")); + } + + if(monthTime != null){ Map homeentityCountMap = new HashMap<>(); int i = 1; boolean isOk=true; @@ -167,6 +168,8 @@ public class DailyreimbursHomeCheckOp extends AbstractOperationServicePlugIn { } } } + }else { + this.addFatalErrorMessage(extendedDataEntity, String.format("往来家居配置有误!")); } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillIsHomeCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillIsHomeCheckOp.java index c981562..06875e9 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillIsHomeCheckOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TripreimbursebillIsHomeCheckOp.java @@ -35,6 +35,7 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug e.getFieldKeys().add("zcgj_is_include_home"); e.getFieldKeys().add("applier"); e.getFieldKeys().add("zcgj_homeentity"); + e.getFieldKeys().add("costcompany"); } @Override @@ -46,9 +47,9 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug //当前切换选择的组织 Long currentOrgId = RequestContext.get().getOrgId(); //当前所在的组织是属于矿山下的 - if(OrgCheckUtils.isKS(currentOrgId)){ + //if(OrgCheckUtils.isKS(currentOrgId)){ e.getValidators().add(new ValidatorExt()); - } + // } } class ValidatorExt extends AbstractValidator { @@ -63,110 +64,117 @@ public class TripreimbursebillIsHomeCheckOp extends AbstractOperationServicePlug for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { DynamicObject dataEntity = extendedDataEntity.getDataEntity(); long aLong = dataEntity.getLong("id"); - //获取报销人 - DynamicObject applier = dataEntity.getDynamicObject("applier"); - long applierId = applier.getLong("id"); - //获取申请日期 - //Date bizdate = dataEntity.getDate( "bizdate"); - //获取是否探亲 - //如果是探亲,则进行逻辑判断 - boolean isHome = dataEntity.getBoolean(prefix + "_is_include_home"); + DynamicObject companyObj = (DynamicObject) dataEntity.get("costcompany");//核算组织(费用承担公司) + if (companyObj != null) { + Long companyId = companyObj.getLong("id"); + if (OrgCheckUtils.isKS(companyId)) { + //获取报销人 + DynamicObject applier = dataEntity.getDynamicObject("applier"); + long applierId = applier.getLong("id"); + //获取申请日期 + //Date bizdate = dataEntity.getDate( "bizdate"); + //获取是否探亲 + //如果是往来家居,则进行逻辑判断 + boolean isHome = dataEntity.getBoolean(prefix + "_is_include_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 - ); - if(homeDataSet == null || homeDataSet.isEmpty()){ - String message = String.format("提交人没有往来居家配置。"); - this.addFatalErrorMessage(extendedDataEntity, message); - } - - int monthTime = 0; - for (Row row : homeDataSet) { - monthTime = row.getInteger("monthTime"); - } - if(monthTime != 0){ - DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");//oa流程分录 - boolean isOk=true; - - Map homeentityCountMap = new HashMap<>(); - int i = 1; - if(tripentry==null || tripentry.isEmpty()){ - this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细数据")); - } - for (DynamicObject dynamicObject : tripentry) { - Date bxmonth = dynamicObject.getDate("zcgj_bxmonth"); - String yearMonth = dateFormat.format(bxmonth); - - String bxmonthStr = dateFormat.format(bxmonth); - String startdateStr = dateFormat.format(dynamicObject.getDate("zcgj_startdate")); - String enddateStr = dateFormat.format(dynamicObject.getDate("zcgj_enddate")); - isOk = checkBelongMonth(bxmonthStr, startdateStr, enddateStr); - if(!isOk){ - this.addFatalErrorMessage(extendedDataEntity, String.format("当前单据中往来居家明细的第%d行,往返日期不在报销归属月中!",i)); - } - // 更新统计次数 - homeentityCountMap.put(yearMonth, homeentityCountMap.getOrDefault(yearMonth, 0) + 1); - i++; - } - // 输出结果 - for (Map.Entry entry : homeentityCountMap.entrySet()) { - if(entry.getValue() > monthTime){ - String message = String.format("当前单据在%s月中提交了%d次往来居家,往来居家次数超限,限制每月%d次!",entry.getKey(),entry.getValue() ,monthTime); - isOk= false; + //判断是否来往家居地 + 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 + ); + if(homeDataSet == null || homeDataSet.isEmpty()){ + String message = String.format("提交人没有往来居家配置。"); this.addFatalErrorMessage(extendedDataEntity, message); } - } - if(isOk){ - for (DynamicObject dynamicObject : tripentry) { - Date bxmonth = dynamicObject.getDate("zcgj_bxmonth"); - DataSet tripreimbursebill = getTripreimbursebill(bxmonth, applierId); - //已用次数 - int goHomeCount = 0; - StringBuilder trSb = new StringBuilder(); - for (Row row : tripreimbursebill) { - goHomeCount++; - String billno = row.getString("billno"); + + Integer monthTime = null; + for (Row row : homeDataSet) { + monthTime = row.getInteger("monthTime"); + } + DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("zcgj_homeentity");//oa流程分录 + if(tripentry==null || tripentry.isEmpty()){ + this.addFatalErrorMessage(extendedDataEntity, String.format("请录入往来居家明细数据")); + } + if(monthTime != null){ + boolean isOk=true; + Map homeentityCountMap = new HashMap<>(); + int i = 1; + + for (DynamicObject dynamicObject : tripentry) { + Date bxmonth = dynamicObject.getDate("zcgj_bxmonth"); + String yearMonth = dateFormat.format(bxmonth); + + String bxmonthStr = dateFormat.format(bxmonth); + String startdateStr = dateFormat.format(dynamicObject.getDate("zcgj_startdate")); + String enddateStr = dateFormat.format(dynamicObject.getDate("zcgj_enddate")); + isOk = checkBelongMonth(bxmonthStr, startdateStr, enddateStr); + if(!isOk){ + this.addFatalErrorMessage(extendedDataEntity, String.format("当前单据中往来居家明细的第%d行,往返日期不在报销归属月中!",i)); + } + // 更新统计次数 + homeentityCountMap.put(yearMonth, homeentityCountMap.getOrDefault(yearMonth, 0) + 1); + i++; + } + // 输出结果 + for (Map.Entry entry : homeentityCountMap.entrySet()) { + if(entry.getValue() > monthTime){ + String message = String.format("当前单据在%s月中提交了%d次往来居家,往来居家次数超限,限制每月%d次!",entry.getKey(),entry.getValue() ,monthTime); + isOk= false; + this.addFatalErrorMessage(extendedDataEntity, message); + } + } + if(isOk){ + for (DynamicObject dynamicObject : tripentry) { + Date bxmonth = dynamicObject.getDate("zcgj_bxmonth"); + DataSet tripreimbursebill = getTripreimbursebill(bxmonth, applierId); + //已用次数 + int goHomeCount = 0; + StringBuilder trSb = new StringBuilder(); + for (Row row : tripreimbursebill) { + goHomeCount++; + String billno = row.getString("billno"); /*String bxmonthStr = dateFormat.format(row.getDate("bxmonth")); String startdateStr = dateFormat.format(row.getDate("startdate")); String enddateStr = dateFormat.format(row.getDate("enddate")); boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/ - trSb.append(billno).append(";"); - } - DataSet dailyreimbursebill = getDailyreimbursebill(bxmonth, applierId); - StringBuilder daSb = new StringBuilder(); - for (Row row : dailyreimbursebill) { - goHomeCount++; - String billno = row.getString("billno"); + trSb.append(billno).append(";"); + } + DataSet dailyreimbursebill = getDailyreimbursebill(bxmonth, applierId); + StringBuilder daSb = new StringBuilder(); + for (Row row : dailyreimbursebill) { + goHomeCount++; + String billno = row.getString("billno"); /* String bxmonthStr = dateFormat.format(row.getDate("bxmonth")); String startdateStr = dateFormat.format(row.getDate("startdate")); String enddateStr = dateFormat.format(row.getDate("enddate")); boolean b = checkBelongMonth(bxmonthStr, startdateStr, enddateStr);*/ - daSb.append(billno).append(";"); - } + daSb.append(billno).append(";"); + } - if(goHomeCount >= monthTime){ - int monthVal = getFirstDayOfMonth(bxmonth).getMonth().getValue(); - String message = String.format("请知悉:您每月共有%d次往来家居地报销次数,在%d月中已进行过%d次来往家居地报销。",monthTime,monthVal,goHomeCount); - if(!StringUtils.isBlank(trSb.toString())){ - message+="已提交的差旅报销单:【"+trSb.toString()+"】 "; + if(goHomeCount >= monthTime){ + int monthVal = getFirstDayOfMonth(bxmonth).getMonth().getValue(); + String message = String.format("请知悉:您每月共有%d次往来家居地报销次数,在%d月中已进行过%d次来往家居地报销。",monthTime,monthVal,goHomeCount); + if(!StringUtils.isBlank(trSb.toString())){ + message+="已提交的差旅报销单:【"+trSb.toString()+"】 "; + } + if(!StringUtils.isBlank(daSb.toString())){ + message+="已提交的费用报销单:【"+daSb.toString()+"】 "; + } + this.addFatalErrorMessage(extendedDataEntity, message); + } } - if(!StringUtils.isBlank(daSb.toString())){ - message+="已提交的费用报销单:【"+daSb.toString()+"】 "; - } - this.addFatalErrorMessage(extendedDataEntity, message); } + }else { + this.addFatalErrorMessage(extendedDataEntity, String.format("往来家居配置有误!")); } } } - } } }