lb:自营出口(一般)模板(抬头+商品+财务) 表单插件

This commit is contained in:
bang 2025-02-19 19:13:46 +08:00
parent 668098781b
commit f5368a453e
2 changed files with 66 additions and 46 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}
}