diff --git a/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java b/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java index f247e75..4a0f402 100644 --- a/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java +++ b/src/main/java/zf47/jdgz1/fi/em/plugin/form/TripPersonCohabitPlugin.java @@ -8,6 +8,8 @@ import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.operate.FormOperate; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.fi.er.business.tripstd.context.StdPreCalContext; import kd.fi.er.business.tripstd.model.TripStandardDetail; @@ -113,7 +115,8 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi if (cohabitPersons.containsKey(travelerI.getLong("id"))) continue; boolean isCohabit = false;//是否同住 - for (int j = i + 1; j < travelers.size(); j++) { + boolean isSpecialStaff = isSpecialStaff(travelerI);//是否为特殊员工 + for (int j = i + 1; j < travelers.size() && !isSpecialStaff; j++) { DynamicObject travelerJ = travelers.get(j).getDynamicObject("fbasedataid"); travelerI = BusinessDataServiceHelper.loadSingle(travelerI.getPkValue(), "bos_user"); travelerJ = BusinessDataServiceHelper.loadSingle(travelerJ.getPkValue(), "bos_user"); @@ -215,4 +218,24 @@ public class TripPersonCohabitPlugin extends AbstractBillPlugIn implements Plugi stdDetail.append("旺季¥").append(highStd).append("/天"); } } + + /** + * 判断是否为特殊员工 + * + * @param staff 员工 + */ + + private boolean isSpecialStaff(DynamicObject staff) { + QFilter statusQF = new QFilter("status", QCP.equals, "C"); + QFilter enableQF = new QFilter("enable", QCP.equals, "1"); + QFilter staffQF = new QFilter("zf47_staff.id", QCP.equals, staff.getPkValue()); + + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("zf47_acc_special_staff", new QFilter[]{statusQF, enableQF, staffQF}); + if (dynamicObject != null) { + String jobLevel = dynamicObject.getString("zf47_job_level"); + return !"3".equals(jobLevel); + } + + return false; + } }