diff --git a/settings.gradle b/settings.gradle index d017ee3..f040422 100644 --- a/settings.gradle +++ b/settings.gradle @@ -46,3 +46,7 @@ project(':yem-wm-es').projectDir = new File('yem-wm/yem-wm-es') project(':yem-wm-is').projectDir = new File('yem-wm/yem-wm-is') // -------------- 引入wm云-ct应用模块 -------------- project(':yem-wm-ct').projectDir = new File('yem-wm/yem-wm-ct') +// -------------- 引入wm云-bd应用模块 -------------- +project(':yem-wm-bd').projectDir = new File('yem-wm/yem-wm-bd') +// -------------- 引入wm云-sex应用模块 -------------- +project(':yem-wm-sex').projectDir = new File('yem-wm/yem-wm-sex') diff --git a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/fagreement/SexFagreementFromPlugin.java b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/fagreement/SexFagreementFromPlugin.java index fdf86d8..067c1aa 100644 --- a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/fagreement/SexFagreementFromPlugin.java +++ b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/fagreement/SexFagreementFromPlugin.java @@ -6,8 +6,7 @@ import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.entity.plugin.annotation.PluginEvent; import kd.bos.form.IFormView; -import kd.bos.form.field.DateEdit; -import kd.sdk.plugin.Plugin; +import kd.bos.form.field.DateTimeEdit; import yem.base.common.utils.YEM; import java.util.Date; @@ -50,12 +49,14 @@ public class SexFagreementFromPlugin extends AbstractBillPlugIn { Date yemExpirationdate = (Date) model.getValue("yem_expirationdate"); if ("yem_startdate".equals(propertyKey)){ if (YEM.isEmpty(yemStartdate)) return; - ((DateEdit) this.getControl("yem_expirationdate")).setMinDate(yemStartdate); + ((DateTimeEdit) view.getControl("yem_expirationdate")).setMinDate(yemStartdate); if (!YEM.isEmpty(yemExpirationdate) && !yemExpirationdate.after(yemStartdate)) model.setValue("yem_expirationdate",null); } else { - if (!YEM.isEmpty(yemExpirationdate) && YEM.isEmpty(yemStartdate)) + if (!YEM.isEmpty(yemExpirationdate) && YEM.isEmpty(yemStartdate)){ this.getView().showErrorNotification("请先选择开始日期!"); + model.setValue("yem_expirationdate",null); + } } } diff --git a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java index 3b17b45..0e4a4c7 100644 --- a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java +++ b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java @@ -39,6 +39,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF ((BasedataEdit) this.getControl("yem_department")).addBeforeF7SelectListener(this); ((BasedataEdit) this.getControl("yem_salegroup")).addBeforeF7SelectListener(this); ((BasedataEdit) this.getControl("yem_operator")).addBeforeF7SelectListener(this); + ((BasedataEdit) this.getControl("yem_material")).addBeforeF7SelectListener(this); } @Override @@ -53,34 +54,25 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF @PluginEvent(enableOverride = true) public void beforeF7Select(BeforeF7SelectEvent evt) { String name = evt.getProperty().getName(); - QFilter filter = null; switch (name){ case "org":// 组织 - filter = setOrgF7Filter(); + setOrgF7Filter(evt); break; case "yem_department":// 部门 - filter = setDeptF7Filter(evt); + setDeptF7Filter(evt); break; case "yem_salegroup": // 业务组 - filter = setGroupF7Filter(evt); + setGroupF7Filter(evt); break; case "yem_operator": // 业务员 - filter = setOperatorF7Filter(evt); + setOperatorF7Filter(evt); break; case "yem_material": // 商品 - filter = setMaterialF7Filter(evt); + setMaterialF7Filter(evt); break; default: break; } - // 设置过滤条件 - if (filter == null) return; - ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter(); - List qFilters = showParameter.getListFilterParameter().getQFilters(); - for (QFilter f : qFilters){ - filter = filter != null ? filter.and(f) : f; - } - showParameter.getListFilterParameter().setFilter(filter); } @Override @@ -160,7 +152,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF DynamicObjectCollection entryentity = yemOperator.getDynamicObjectCollection("entryentity"); List deptIds = entryentity.stream().map(x -> x.getDynamicObject("dpt").getLong("id")).collect(Collectors.toList()); - if (deptIds.contains(yemDepartment.getLong("id"))){ + if (!deptIds.contains(yemDepartment.getLong("id"))){ model.setValue("yem_operator",null); } } @@ -188,7 +180,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF Map orgSubUserDeptInfo = getOrgSubUserDeptInfo(org, yemOperator); if (!YEM.isEmpty(yemDepartment)){ // 判断是否合规 - if (orgSubUserDeptInfo.containsKey(yemDepartment.getLong("id"))){ + if (!orgSubUserDeptInfo.containsKey(yemDepartment.getLong("id"))){ yemDepartment = null; } } @@ -199,14 +191,15 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF for (Long id : deptIds){ if (aFalse){ if (!orgSubUserDeptInfo.get(id)){ - model.setValue("yem_department",id); + yemDepartment = BusinessDataServiceHelper.loadSingle(id,"bos_adminorg"); break; } } else { - model.setValue("yem_department",id); + yemDepartment = BusinessDataServiceHelper.loadSingle(id,"bos_adminorg"); break; } } + model.setValue("yem_department",yemDepartment); } // 销售组 @@ -289,6 +282,8 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF if (!YEM.isEmpty(unitRate)){ model.setValue("yem_baseqty", unitRate.multiply(yemQty),rowIndex); return; + } else { + this.getView().showErrorNotification("没有找到对应的单位转换率,请检查后重试!"); } } model.setValue("yem_baseqty",BigDecimal.ZERO,rowIndex); @@ -303,9 +298,11 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF */ private boolean isOrgSubDept(DynamicObject org,DynamicObject dept){ DynamicObjectCollection structure = dept.getDynamicObjectCollection("structure"); - List parentOrgIds = structure.stream() - .map(x->x.getDynamicObject("viewparent").getLong("id")) - .collect(Collectors.toList()); + List parentOrgIds = new ArrayList<>(); + for (DynamicObject entry : structure){ + DynamicObject viewparent = entry.getDynamicObject("viewparent"); + if (!YEM.isEmpty(viewparent))parentOrgIds.add(viewparent.getLong("id")); + } return parentOrgIds.contains(org.getLong("id")); } @@ -325,7 +322,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF DynamicObjectCollection entryentity = user.getDynamicObjectCollection("entryentity"); for (DynamicObject entry : entryentity){ DynamicObject dpt = entry.getDynamicObject("dpt"); - if ("0".equals(dpt.getString("enable"))) continue; // 使用状态为:可用 + dpt = BusinessDataServiceHelper.loadSingle(dpt.getLong("id"),"bos_adminorg"); boolean orgSubDept = isOrgSubDept(org, dpt);// 是否组织下部门 boolean ispartjob = entry.getBoolean("ispartjob");// 是否兼职 if (orgSubDept)result.put(dpt.getLong("id"),ispartjob); @@ -338,16 +335,13 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF * @Description: 根据当前登录人员的过滤可选组织 * @function 功能 :获取当前用户可切换的组织集合,设置过滤条件 * @purposes 用途 组织选择时 - * @return QFilter 过滤条件 */ - private QFilter setOrgF7Filter() { + private void setOrgF7Filter(BeforeF7SelectEvent e) { // 获取当前用户可切换的组织集合 List orgIds = YEM.getUserChangeAbleOrgIds(); // 设置过滤条件 if (orgIds != null){ - return new QFilter("id", QCP.in, orgIds.toArray()); - } else { - return null; + f7SetFilters(e,new QFilter("id", QCP.in, orgIds.toArray())); } } @@ -358,9 +352,8 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF * 销售业务员不为空时:可选 业务员 在该组织下的所有职能部门 * @purposes 用途 部门选择时 * @param e 选择事件参数 - * @return QFilter 过滤条件 */ - private QFilter setDeptF7Filter(BeforeF7SelectEvent e) { + private void setDeptF7Filter(BeforeF7SelectEvent e) { DynamicObject org = (DynamicObject) this.getView().getModel().getValue("org"); if (YEM.isEmpty(org)){ e.setCancel(true); @@ -375,7 +368,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF if (deptIds.length > 0) filter = filter.and(new QFilter("id", QCP.in, deptIds)); } - return filter; + f7SetFilters(e,filter); } /** @@ -384,31 +377,38 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF * 业务组类型为销售组、业务组-业务员分录 未失效、业务组-业务员分录存在当前业务员 * @purposes 用途:业务组选择 * @param e 选择事件参数 - * @return QFilter 过滤条件 */ - private QFilter setGroupF7Filter(BeforeF7SelectEvent e){ + private void setGroupF7Filter(BeforeF7SelectEvent e){ IDataModel model = this.getView().getModel(); DynamicObject org = (DynamicObject) model.getValue("org"); // 组织 DynamicObject yemDepartment = (DynamicObject) model.getValue("yem_department"); // 部门 DynamicObject yemOperator = (DynamicObject) this.getView().getModel().getValue("yem_operator");// 业务员 QFilter filter = new QFilter("operatorgrouptype",QCP.equals,"XSZ");// 业务组类型为销售组 + filter = filter.and(new QFilter("enable",QCP.equals,"1"));// 可用 filter = filter.and(new QFilter("entryentity.invalid",QCP.equals,false));// 未失效 if (!YEM.isEmpty(org) && !YEM.isEmpty(yemDepartment)){ List deptId = queryOrgSub(org); List deptIds = queryOrgSub(yemDepartment); deptIds.addAll(deptId); + // 查询部门下所有人员 +// DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id", +// new QFilter[]{new QFilter("entryentity.dpt.id", QCP.in, +// deptIds.toArray(new Long[0]))}); + if (!deptIds.isEmpty()) - filter = filter.and(new QFilter("entryentity.operator.dpt.id",QCP.in, + filter = filter.and(new QFilter("entryentity.operator.entryentity.dpt.id",QCP.in, deptIds.toArray(new Long[0]))); } else { e.setCancel(true); this.getView().showErrorNotification(YEM.isEmpty(org) ? "请先选择销售组织!" : "请先选择销售部门!"); + return ; } if (yemOperator != null){ filter = filter.and(new QFilter("entryentity.operator.id",QCP.equals, yemOperator.getLong("id"))); } - return filter; + ListShowParameter showParameter = (ListShowParameter) e.getFormShowParameter(); + showParameter.getListFilterParameter().setFilter(filter); } /** @@ -416,9 +416,8 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF * @function 功能 :根据销售组织、销售部门和销售组过滤 * @purposes 用途 业务员选择 * @param e 选择事件参数 - * @return QFilter 过滤条件 */ - private QFilter setOperatorF7Filter(BeforeF7SelectEvent e) { + private void setOperatorF7Filter(BeforeF7SelectEvent e) { IDataModel model = this.getView().getModel(); DynamicObject org = (DynamicObject) model.getValue("org"); // 组织 DynamicObject yemDepartment = (DynamicObject) model.getValue("yem_department"); // 部门 @@ -431,7 +430,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF } else { e.setCancel(true); this.getView().showErrorNotification( "请先选择销售组织!"); - return null; + return; } if (yemDepartment != null){ List deptIds = queryOrgSub(yemDepartment); @@ -440,7 +439,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF } else { e.setCancel(true); this.getView().showErrorNotification( "请先选择销售部门!"); - return filter; + return ; } if (yemSalegroup != null){ // 业务组 的业务员分录 @@ -452,18 +451,24 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF } if (!operatorIds.isEmpty())filter = new QFilter("id",QCP.in,operatorIds.toArray(new Long[0])); } - return filter; + f7SetFilters(e,filter); } - private QFilter setMaterialF7Filter(BeforeF7SelectEvent e){ + /** + * @Description: 描述 商品选择过滤 + * @function 功能 商品选择时 商品分类不能为空 + * @purposes 用途 商品选择 + * @param e 选择事件参数 + */ + private void setMaterialF7Filter(BeforeF7SelectEvent e){ IDataModel model = this.getView().getModel(); DynamicObject yemMaterialtype = (DynamicObject) model.getValue("yem_materialtype", e.getRow()); if (yemMaterialtype == null){ e.setCancel(true); this.getView().showErrorNotification( "请先选择商品分类!"); - return null; + return; } - return new QFilter("group.id",QCP.equals, yemMaterialtype.getLong("id")); + f7SetFilters(e,new QFilter("group.id",QCP.equals, yemMaterialtype.getLong("id"))); } /** @@ -504,4 +509,18 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF return orgIds; } + /** + * @Description: F7 设置过滤条件 + * @function 功能 字段选择是设置过滤条件 + * @param evt 选择事件参数 + * @param filter 业务过滤条件 + */ + private void f7SetFilters(BeforeF7SelectEvent evt , QFilter filter){ + ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter(); + List qFilters = showParameter.getListFilterParameter().getQFilters(); + for (QFilter f : qFilters){ + filter = filter != null ? filter.and(f) : f; + } + showParameter.getListFilterParameter().setFilter(filter); + } }