Compare commits
4 Commits
72fc3fe0b0
...
c2a9b82dc5
Author | SHA1 | Date |
---|---|---|
|
c2a9b82dc5 | |
|
9547c02b0c | |
|
e087d24de1 | |
|
09119816f2 |
|
@ -0,0 +1,127 @@
|
||||||
|
package zcgj.zcdev.zcdev.fs.plugin.operate;
|
||||||
|
|
||||||
|
import kd.bos.context.RequestContext;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.entity.ExtendedDataEntity;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.validate.AbstractValidator;
|
||||||
|
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||||
|
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预付单单收款信息账户检查
|
||||||
|
*/
|
||||||
|
public class PrepaybillRecAccountCkOp extends AbstractOperationServicePlugIn {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
e.getFieldKeys().add("costcompany");
|
||||||
|
e.getFieldKeys().add("accountentry");
|
||||||
|
e.getFieldKeys().add("billpayertype");
|
||||||
|
e.getFieldKeys().add("billpayerid");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||||
|
super.onAddValidators(e);
|
||||||
|
Long currentUserId = UserServiceHelper.getCurrentUserId();
|
||||||
|
// 当前用户所属组织
|
||||||
|
Long mainOrgId = UserServiceHelper.getUserMainOrgId(currentUserId);
|
||||||
|
//当前切换选择的组织
|
||||||
|
Long currentOrgId = RequestContext.get().getOrgId();
|
||||||
|
//当前所在的组织是属于矿山下的
|
||||||
|
//if(OrgCheckUtils.isKS(currentOrgId)){
|
||||||
|
e.getValidators().add(new ValidatorExt());
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ValidatorExt extends AbstractValidator {
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
|
||||||
|
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
|
||||||
|
Map<Long, Map<String,Object>> allMap = new HashMap<>();
|
||||||
|
//当前提交的探亲单据id集合
|
||||||
|
Map<Long, List<Long>> currentBillIdListMap = new HashMap<>();
|
||||||
|
|
||||||
|
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
|
||||||
|
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
||||||
|
long aLong = dataEntity.getLong("id");
|
||||||
|
//获取报销人
|
||||||
|
DynamicObject applier = dataEntity.getDynamicObject("applier");
|
||||||
|
long applierId = applier.getLong("id");
|
||||||
|
//获取申请日期
|
||||||
|
Object costcompanyObj = dataEntity.get("costcompany");
|
||||||
|
Object costdeptObj = dataEntity.get("costdept");
|
||||||
|
if(costcompanyObj!=null && costdeptObj != null){
|
||||||
|
DynamicObject costcompany = (DynamicObject)costcompanyObj;
|
||||||
|
long costcompanyId = costcompany.getLong("id");
|
||||||
|
if(OrgCheckUtils.isKS(costcompanyId)){
|
||||||
|
String billpayertype = dataEntity.getString("billpayertype"); //往来单位类型
|
||||||
|
if(billpayertype ==null){
|
||||||
|
this.addFatalErrorMessage(extendedDataEntity, String.format("往来类型不能为空"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DynamicObject billpayerid = dataEntity.getDynamicObject("billpayerid");//往来单位
|
||||||
|
String numberVal = null;
|
||||||
|
if(billpayerid!=null){
|
||||||
|
numberVal = billpayerid.getString("number");
|
||||||
|
}else{
|
||||||
|
this.addFatalErrorMessage(extendedDataEntity, String.format("往来单位不能为空"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicObjectCollection accountentry = dataEntity.getDynamicObjectCollection("accountentry");
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for (DynamicObject dynamicObject : accountentry) {
|
||||||
|
i++;
|
||||||
|
String payertype = dynamicObject.getString("payertype");//收款人类型
|
||||||
|
String payeraccountname = dynamicObject.getString("payeraccountname"); //账户名称
|
||||||
|
String accountTxt = dynamicObject.getString("zcgj_account_txt"); //账户名称
|
||||||
|
boolean isOk=true;
|
||||||
|
if("bd_supplier".equals(payertype)){ //供应商
|
||||||
|
DynamicObject supplier = dynamicObject.getDynamicObject("supplier");
|
||||||
|
if(supplier ==null){
|
||||||
|
this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,收款人不能为空!",i));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String name = supplier.getString("name");
|
||||||
|
isOk = payeraccountname.equals(name);
|
||||||
|
if(isOk && "bd_supplier".equals(billpayertype)){
|
||||||
|
String number = supplier.getString("number");
|
||||||
|
isOk = number.equals(numberVal);
|
||||||
|
}
|
||||||
|
}else if("bd_customer".equals(payertype)){ //客户
|
||||||
|
DynamicObject customer = dynamicObject.getDynamicObject("customer");
|
||||||
|
if(customer ==null){
|
||||||
|
this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,收款人不能为空!",i));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String name = customer.getString("name");
|
||||||
|
isOk = payeraccountname.equals(name);
|
||||||
|
if(isOk && "bd_customer".equals(billpayertype)){
|
||||||
|
String number = customer.getString("number");
|
||||||
|
isOk = number.equals(numberVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!isOk && accountTxt.isEmpty()){
|
||||||
|
this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,往来单位、收款人名称和账户名称不一致!请在当前行填写账户不一致说明!",i));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.utils.StringUtils;
|
||||||
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
|
import kd.bos.list.ListShowParameter;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.ec.contract.formplugin.ContractRevisionListingPlugin;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ContractRevisionListingExtPlugin extends ContractRevisionListingPlugin {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeF7Select(BeforeF7SelectEvent beforef7selectevent) {
|
||||||
|
switch (beforef7selectevent.getProperty().getName()) {
|
||||||
|
case "listid":
|
||||||
|
this.beforeListingSelect(beforef7selectevent);
|
||||||
|
break;
|
||||||
|
case "listunitproject":
|
||||||
|
this.beforeUnitProjectSelect(beforef7selectevent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void beforeListingSelect(BeforeF7SelectEvent beforef7selectevent) {
|
||||||
|
ListShowParameter lsp = (ListShowParameter)beforef7selectevent.getFormShowParameter();
|
||||||
|
List<QFilter> qFilters = lsp.getListFilterParameter().getQFilters();
|
||||||
|
this.addContractAndModelFilter(qFilters);
|
||||||
|
this.addNewListingSuperFilter(qFilters);
|
||||||
|
int row = beforef7selectevent.getRow();
|
||||||
|
DynamicObject con = (DynamicObject)this.getModel().getValue("contract");
|
||||||
|
String baseType = BusinessDataServiceHelper.loadSingle(con.getDynamicObject("contracttype").getPkValue(), "ec_conttype").getDynamicObject("contattr").getString("basictype");
|
||||||
|
String subChangeType = (String)this.getModel().getValue("subchangetype", row);
|
||||||
|
/*if (StringUtils.equals(subChangeType, "1") && !"09".equals(baseType)) {
|
||||||
|
qFilters.add(new QFilter("lstsettleqty", "<", "totalqty", true));
|
||||||
|
}*/
|
||||||
|
|
||||||
|
int rowIndex = this.getModel().getEntryCurrentRowIndex("kapianentry");
|
||||||
|
Object listModelId = this.getModel().getValue("listmodelid", rowIndex);
|
||||||
|
lsp.setCustomParam("listmodelid", listModelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addContractAndModelFilter(List<QFilter> qFilters) {
|
||||||
|
int rowIndex = this.getModel().getEntryCurrentRowIndex("kapianentry");
|
||||||
|
Object listModelId = this.getModel().getValue("listmodelid", rowIndex);
|
||||||
|
if (StringUtils.isNotBlank(listModelId)) {
|
||||||
|
qFilters.add(new QFilter("listingmodel", "=", Long.parseLong(listModelId.toString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicObject contract = (DynamicObject)this.getModel().getValue("contract");
|
||||||
|
if (contract != null) {
|
||||||
|
qFilters.add(new QFilter("contractid", "=", contract.getLong("id")));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addNewListingSuperFilter(List<QFilter> qFilters) {
|
||||||
|
for(DynamicObject entry : this.getModel().getEntryEntity("entryentity")) {
|
||||||
|
if (!"3".equals(entry.getString("subchangetype")) && !"2".equals(entry.getString("subchangetype"))) {
|
||||||
|
DynamicObject listing = entry.getDynamicObject("listid");
|
||||||
|
if (listing != null) {
|
||||||
|
qFilters.add(new QFilter("id", "<>", listing.getLong("id")));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DynamicObject parent = entry.getDynamicObject("parentgroup");
|
||||||
|
if (parent != null) {
|
||||||
|
boolean isLeaf = parent.getBoolean("isleaf");
|
||||||
|
if (isLeaf) {
|
||||||
|
qFilters.add(new QFilter("id", "<>", parent.getLong("id")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,24 +4,28 @@ import kd.bos.bill.AbstractBillPlugIn;
|
||||||
import kd.bos.bill.BillShowParameter;
|
import kd.bos.bill.BillShowParameter;
|
||||||
import kd.bos.bill.OperationStatus;
|
import kd.bos.bill.OperationStatus;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.entity.datamodel.events.ChangeData;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||||
import kd.bos.permission.api.HasPermOrgResult;
|
import kd.bos.form.field.BasedataEdit;
|
||||||
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
import kd.bos.list.ListShowParameter;
|
||||||
|
import kd.bos.mvc.bill.BillView;
|
||||||
|
import kd.bos.orm.query.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.EventObject;
|
import java.util.EventObject;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1:付款申请单通用插件
|
* 1:付款申请单通用插件
|
||||||
*/
|
*/
|
||||||
public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plugin {
|
public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterBindData(EventObject e) {
|
public void afterBindData(EventObject e) {
|
||||||
|
@ -114,4 +118,51 @@ public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plu
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerListener(EventObject e) {
|
||||||
|
super.registerListener(e);
|
||||||
|
//仅针对矿山下组织下的逻辑
|
||||||
|
BasedataEdit expenseitem = this.getControl("zcgj_expenseitem"); //费用项目
|
||||||
|
if (expenseitem != null) {
|
||||||
|
expenseitem.addBeforeF7SelectListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||||
|
String name = beforeF7SelectEvent.getProperty().getName();
|
||||||
|
String billFormId = ((BillView) this.getView()).getFormId();//单据标识
|
||||||
|
if("ec_paymentapply".equals(billFormId)){//付款申请单
|
||||||
|
if (name.equals("zcgj_expenseitem")) { //科目分类根据科目分类基础资料过滤
|
||||||
|
int row = beforeF7SelectEvent.getRow();
|
||||||
|
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");
|
||||||
|
if (dynamicObjectCollection != null) {
|
||||||
|
String paymenttype = dynamicObjectCollection.get(row).getString("paymenttype");//支付类型
|
||||||
|
if("PREPAYMENT".equals(paymenttype)){
|
||||||
|
QFilter biztypefilter = new QFilter("zcgj_biztype", QCP.equals, "50"); //过滤业务单据为支出财务确认单
|
||||||
|
//分录过滤
|
||||||
|
//使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据
|
||||||
|
//使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据
|
||||||
|
DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee",
|
||||||
|
"zcgj_entryentity.zcgj_fee.number", new QFilter[]{biztypefilter});//费用与科目分类单
|
||||||
|
List<String> numbers = new ArrayList<>();
|
||||||
|
if (accountfeeEntries != null) {
|
||||||
|
for (DynamicObject dynamicObject : accountfeeEntries) {
|
||||||
|
String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_fee.number");
|
||||||
|
if (zcgjAccounttypeNumber != null) {
|
||||||
|
numbers.add(zcgjAccounttypeNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QFilter qFilter = new QFilter("number", QCP.in, numbers);
|
||||||
|
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||||
|
formShowParameter.getListFilterParameter().getQFilters().add(qFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue