lb:自营出口(一般)模板(抬头+商品+财务) 表单插件
This commit is contained in:
parent
668098781b
commit
f5368a453e
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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<QFilter> 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<Long> 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<Long, Boolean> 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<Long> parentOrgIds = structure.stream()
|
||||
.map(x->x.getDynamicObject("viewparent").getLong("id"))
|
||||
.collect(Collectors.toList());
|
||||
List<Long> 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<Long> 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<Long> deptId = queryOrgSub(org);
|
||||
List<Long> 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<Long> 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<QFilter> qFilters = showParameter.getListFilterParameter().getQFilters();
|
||||
for (QFilter f : qFilters){
|
||||
filter = filter != null ? filter.and(f) : f;
|
||||
}
|
||||
showParameter.getListFilterParameter().setFilter(filter);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user