支出合同实际结算乙方插件
This commit is contained in:
parent
ec18a7a57b
commit
74d0352ba4
|
@ -1,122 +0,0 @@
|
||||||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
|
||||||
|
|
||||||
import kd.bos.db.DB;
|
|
||||||
import kd.bos.db.DBRoute;
|
|
||||||
import kd.bos.entity.EntityMetadataCache;
|
|
||||||
import kd.bos.entity.MainEntityType;
|
|
||||||
import kd.bos.ext.fi.ai.AbstractDapWriteBackImpl;
|
|
||||||
import kd.bos.ext.fi.ai.Voucher;
|
|
||||||
import kd.bos.ext.fi.ai.VoucherOperation;
|
|
||||||
import kd.bos.logging.Log;
|
|
||||||
import kd.bos.logging.LogFactory;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 指出合同结算凭证反写插件
|
|
||||||
*/
|
|
||||||
public class EcInContartVoucherPlugin extends AbstractDapWriteBackImpl {
|
|
||||||
|
|
||||||
public static final Log log = LogFactory.getLog(EcInContartVoucherPlugin.class);
|
|
||||||
//采购申请单上,要反写的凭证号字段名
|
|
||||||
public static final String voucherNoFile="fk_zcgj_voucherbillno";
|
|
||||||
@Override
|
|
||||||
protected DBRoute getDBRoute() {
|
|
||||||
// 扩展开发库的分库标识,实际值可以查看mc分库标识
|
|
||||||
DBRoute DBR = DBRoute.of("scm");
|
|
||||||
return DBR;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除凭证写入的值这里是复选框- 布尔false
|
|
||||||
@Override
|
|
||||||
protected Object getVchDisableStatus() {
|
|
||||||
Boolean disRchValue = false;
|
|
||||||
return disRchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 生成凭证时写入的值,这里是复选框- 布尔 true。
|
|
||||||
@Override
|
|
||||||
protected Object getVchEnableStatus() {
|
|
||||||
Boolean rchValue = true;
|
|
||||||
log.info("AbstractDapWriteBackImpl#keySet:getVchEnableStatus---生成凭证时写入的值" );
|
|
||||||
return rchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 要反写的字段,反写的是常量值,反写凭证的一些其他信息回单据只能重写writeBack方法
|
|
||||||
@Override
|
|
||||||
protected String getVchStatusField() {
|
|
||||||
//String vchField = "fisvoucher"; //已经被隐藏
|
|
||||||
String vchField = "fk_zcgj_isvoucher";
|
|
||||||
log.info("AbstractDapWriteBackImpl#keySet:getVchEnableStatus---生成凭证时写入的值:"+vchField );
|
|
||||||
return vchField;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeBack(VoucherOperation operation, String billEntityNumber, Map<Long, Voucher> billToVch) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#keySet:getVchEnableStatus---生成凭证时写入的值billEntityNumber:"+billEntityNumber );
|
|
||||||
MainEntityType mt = EntityMetadataCache.getDataEntityType(billEntityNumber);
|
|
||||||
Set<Long> keySet = billToVch.keySet();
|
|
||||||
log.info("AbstractDapWriteBackImpl#keySet:" + keySet);
|
|
||||||
if (VoucherOperation.Create.equals(operation)) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行生成凭证反写:" + operation);
|
|
||||||
Object vchStatusField = getVchEnableStatus();
|
|
||||||
List<Object[]> params = new ArrayList<>();
|
|
||||||
for (Long me : keySet) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#生成凭证的单据ID:" + me);
|
|
||||||
Voucher voucher=billToVch.get(me);//凭证
|
|
||||||
String voucherNo = voucher.getVoucherNo();
|
|
||||||
//这里处理的是一个单据只有一个凭证的时候,如果是多个凭证,可以先获取已经生成的凭证号,再拼接上字符串。
|
|
||||||
Object[] param = new Object[] { vchStatusField,voucherNo, me };//
|
|
||||||
params.add(param);
|
|
||||||
if (params.size() >= 10000) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行生成凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
log.info("AbstractDapWriteBackImpl#结束执行生成凭证反写SQL");
|
|
||||||
params.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#开始执行生成凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
if (params.size() > 0) {
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#结束执行生成凭证反写SQL");
|
|
||||||
} else if (VoucherOperation.Delete.equals(operation)) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行删除凭证反写:" + operation);
|
|
||||||
Object vchDisableStatus = getVchDisableStatus();
|
|
||||||
List<Object[]> params = new ArrayList<>();
|
|
||||||
for (Long me : keySet) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#删除凭证的单据ID:" + me);
|
|
||||||
//这里处理的是一个单据只有一个凭证的时候,如果是多个凭证,可以先获取已经生成的凭证号,再去掉本凭证之后的凭证号
|
|
||||||
Object[] param = new Object[] {vchDisableStatus, "",me };// getVchDisableStatus
|
|
||||||
params.add(param);
|
|
||||||
if (params.size() >= 10000) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行删除凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
params.clear();
|
|
||||||
log.info("AbstractDapWriteBackImpl#结束执行删除凭证反写SQL");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#开始执行删除凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
if (params.size() > 0) {
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#结束执行删除凭证反写SQL");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -18,6 +18,9 @@ import java.util.ArrayList;
|
||||||
import java.util.EventObject;
|
import java.util.EventObject;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收入合同结算实际结算甲方过滤
|
||||||
|
*/
|
||||||
public class EcInFinalsettleJusCustPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
public class EcInFinalsettleJusCustPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,118 +0,0 @@
|
||||||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
|
||||||
|
|
||||||
import kd.bos.ext.fi.ai.AbstractDapWriteBackImpl;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import kd.bos.db.DB;
|
|
||||||
import kd.bos.db.DBRoute;
|
|
||||||
import kd.bos.entity.EntityMetadataCache;
|
|
||||||
import kd.bos.entity.MainEntityType;
|
|
||||||
import kd.bos.ext.fi.ai.AbstractDapWriteBackImpl;
|
|
||||||
import kd.bos.ext.fi.ai.Voucher;
|
|
||||||
import kd.bos.ext.fi.ai.VoucherOperation;
|
|
||||||
import kd.bos.logging.Log;
|
|
||||||
import kd.bos.logging.LogFactory;
|
|
||||||
/**
|
|
||||||
* 指出合同结算凭证反写插件
|
|
||||||
*/
|
|
||||||
public class EcOutContartVoucherPlugin extends AbstractDapWriteBackImpl {
|
|
||||||
|
|
||||||
public static final Log log = LogFactory.getLog(EcOutContartVoucherPlugin.class);
|
|
||||||
//采购申请单上,要反写的凭证号字段名
|
|
||||||
public static final String voucherNoFile="fk_zcgj_voucherbillno";
|
|
||||||
@Override
|
|
||||||
protected DBRoute getDBRoute() {
|
|
||||||
// 扩展开发库的分库标识,实际值可以查看mc分库标识
|
|
||||||
DBRoute DBR = DBRoute.of("scm");
|
|
||||||
return DBR;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除凭证写入的值这里是复选框- 布尔false
|
|
||||||
@Override
|
|
||||||
protected Object getVchDisableStatus() {
|
|
||||||
Boolean disRchValue = false;
|
|
||||||
return disRchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 生成凭证时写入的值,这里是复选框- 布尔 true。
|
|
||||||
@Override
|
|
||||||
protected Object getVchEnableStatus() {
|
|
||||||
Boolean rchValue = true;
|
|
||||||
return rchValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 要反写的字段,反写的是常量值,反写凭证的一些其他信息回单据只能重写writeBack方法
|
|
||||||
@Override
|
|
||||||
protected String getVchStatusField() {
|
|
||||||
String vchField = "fisvoucher";
|
|
||||||
return vchField;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeBack(VoucherOperation operation, String billEntityNumber, Map<Long, Voucher> billToVch) {
|
|
||||||
MainEntityType mt = EntityMetadataCache.getDataEntityType(billEntityNumber);
|
|
||||||
Set<Long> keySet = billToVch.keySet();
|
|
||||||
log.info("AbstractDapWriteBackImpl#keySet:" + keySet);
|
|
||||||
if (VoucherOperation.Create.equals(operation)) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行生成凭证反写:" + operation);
|
|
||||||
Object vchStatusField = getVchEnableStatus();
|
|
||||||
List<Object[]> params = new ArrayList<>();
|
|
||||||
for (Long me : keySet) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#生成凭证的单据ID:" + me);
|
|
||||||
Voucher voucher=billToVch.get(me);//凭证
|
|
||||||
String voucherNo = voucher.getVoucherNo();
|
|
||||||
//这里处理的是一个单据只有一个凭证的时候,如果是多个凭证,可以先获取已经生成的凭证号,再拼接上字符串。
|
|
||||||
Object[] param = new Object[] { vchStatusField,voucherNo, me };//
|
|
||||||
params.add(param);
|
|
||||||
if (params.size() >= 10000) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行生成凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
log.info("AbstractDapWriteBackImpl#结束执行生成凭证反写SQL");
|
|
||||||
params.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#开始执行生成凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
if (params.size() > 0) {
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#结束执行生成凭证反写SQL");
|
|
||||||
} else if (VoucherOperation.Delete.equals(operation)) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行删除凭证反写:" + operation);
|
|
||||||
Object vchDisableStatus = getVchDisableStatus();
|
|
||||||
List<Object[]> params = new ArrayList<>();
|
|
||||||
for (Long me : keySet) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#删除凭证的单据ID:" + me);
|
|
||||||
//这里处理的是一个单据只有一个凭证的时候,如果是多个凭证,可以先获取已经生成的凭证号,再去掉本凭证之后的凭证号
|
|
||||||
Object[] param = new Object[] {vchDisableStatus, "",me };// getVchDisableStatus
|
|
||||||
params.add(param);
|
|
||||||
if (params.size() >= 10000) {
|
|
||||||
log.info("AbstractDapWriteBackImpl#开始执行删除凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
params.clear();
|
|
||||||
log.info("AbstractDapWriteBackImpl#结束执行删除凭证反写SQL");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#开始执行删除凭证反写SQL");
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getAlias()" + mt.getAlias());
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#mt.getVchStatusField()" + getVchStatusField());
|
|
||||||
if (params.size() > 0) {
|
|
||||||
DB.executeBatch(getDBRoute(),
|
|
||||||
"update " + mt.getAlias() + " set " + getVchStatusField() + " = ? , "+voucherNoFile+" = ? where fid = ?", params);
|
|
||||||
}
|
|
||||||
log.info("AbstractDapWriteBackImpl#最后#结束执行删除凭证反写SQL");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||||
|
|
||||||
|
import kd.bos.bill.AbstractBillPlugIn;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.form.field.BasedataEdit;
|
||||||
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
|
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||||
|
import kd.bos.orm.query.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.EventObject;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支出合同结算实际结算乙方过滤
|
||||||
|
*/
|
||||||
|
public class OutContractEcInFinalsettleJusCustPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerListener(EventObject e) {
|
||||||
|
super.registerListener(e);
|
||||||
|
BasedataEdit fieldEdit = this.getView().getControl("zcgj_jscustomer");
|
||||||
|
fieldEdit.addBeforeF7SelectListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeF7Select(BeforeF7SelectEvent arg0) {
|
||||||
|
String name = arg0.getProperty().getName();
|
||||||
|
if(name.equals("zcgj_jscustomer")){
|
||||||
|
Object contractObj = this.getModel().getValue("contract");
|
||||||
|
if(contractObj != null){
|
||||||
|
DynamicObject contract = (DynamicObject)contractObj;
|
||||||
|
QFilter filter = new QFilter("id", "=", contract.getPkValue());
|
||||||
|
DynamicObject contractData = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,ismulticontract,partb,otherpart", new QFilter[]{filter});
|
||||||
|
|
||||||
|
boolean ismulticontract = contractData.getBoolean("ismulticontract");//多方合同
|
||||||
|
DynamicObject partb = contractData.getDynamicObject("partb");
|
||||||
|
List<Long> ids = new ArrayList<>();
|
||||||
|
ids.add(partb.getLong("id"));
|
||||||
|
if(ismulticontract){
|
||||||
|
DynamicObjectCollection otherpart = contractData.getDynamicObjectCollection("otherpart");
|
||||||
|
for (DynamicObject dynamicObject : otherpart) {
|
||||||
|
ids.add(dynamicObject.getLong(2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<QFilter> qFilterList = new ArrayList<>();
|
||||||
|
qFilterList.add(new QFilter("id", QCP.in,ids));
|
||||||
|
arg0.setCustomQFilters(qFilterList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,22 +1,12 @@
|
||||||
package zcgj.zcdev.zcdev.pr.plugin.operate;
|
package zcgj.zcdev.zcdev.pr.plugin.operate;
|
||||||
|
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
||||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
|
|
||||||
import kd.bos.entity.operate.result.OperationResult;
|
import kd.bos.entity.operate.result.OperationResult;
|
||||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||||
import kd.bos.entity.validate.AbstractValidator;
|
import kd.bos.entity.validate.AbstractValidator;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
||||||
import kd.ec.basedata.common.utils.EcDynamicObjectUtil;
|
|
||||||
import kd.bos.orm.query.QFilter;
|
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
||||||
import kd.ec.contract.opplugin.OutContractSettleOp;
|
import kd.ec.contract.opplugin.OutContractSettleOp;
|
||||||
import kd.ec.contract.opplugin.validator.OutContractSettleValidator;
|
import kd.ec.contract.opplugin.validator.OutContractSettleValidator;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class OutContractSettlementOp extends OutContractSettleOp {
|
public class OutContractSettlementOp extends OutContractSettleOp {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue