121 lines
5.5 KiB
Java
121 lines
5.5 KiB
Java
package tqq9.lc123.cloud.app.plugin.operate.pm;
|
|
|
|
import kd.bos.dataentity.OperateOption;
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
import kd.bos.dataentity.utils.StringUtils;
|
|
import kd.bos.entity.ExtendedDataEntity;
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
|
import kd.bos.entity.plugin.args.BeforeOperationArgs;
|
|
import kd.bos.entity.validate.AbstractValidator;
|
|
import kd.bos.logging.Log;
|
|
import kd.bos.logging.LogFactory;
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
import kd.sdk.plugin.Plugin;
|
|
import tqq9.lc123.cloud.app.plugin.utils.AutoFixLinkUtil;
|
|
|
|
import java.util.ListIterator;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* 采购退货单保存操作插件
|
|
*/
|
|
|
|
|
|
public class PurRefundApplySaveOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
|
private final static Log logger = LogFactory.getLog(PurRefundApplySaveOpPlugin.class);
|
|
private static String PM_PURREFUNDAPPLYBILL = "pm_purrefundapplybill";//采购退货申请单
|
|
private static String PM_PURORDERBILL = "pm_purorderbill";//采购订单
|
|
private static String billentry = "billentry";//分录标识
|
|
|
|
|
|
@Override
|
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
|
super.onAddValidators(e);
|
|
e.addValidator(new EntryValidator());
|
|
|
|
}
|
|
|
|
class EntryValidator extends AbstractValidator {
|
|
|
|
@Override
|
|
public void validate() {
|
|
for (ExtendedDataEntity dataEntity : this.getDataEntities()) {
|
|
DynamicObjectCollection billentry = dataEntity.getDataEntity().getDynamicObjectCollection("billentry");//采购退货申请分录
|
|
Boolean falg = true;
|
|
for (DynamicObject dynamicObject : billentry) {
|
|
Boolean tqq9_isreturn = dynamicObject.getBoolean("tqq9_isreturn");
|
|
if (tqq9_isreturn) {
|
|
falg = false;
|
|
}
|
|
}
|
|
if (falg) {
|
|
this.addErrorMessage(dataEntity, "请至少选择一行物料明细作为退货物料");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
|
|
super.beforeExecuteOperationTransaction(e);
|
|
DynamicObject[] dataEntities1 = e.getDataEntities();
|
|
logger.info("PurRefundApplySaveOpPlugin-start");
|
|
logger.info("PurRefundApplySaveOpPlugin:单据数量" + dataEntities1.length);
|
|
String operationKey = e.getOperationKey();
|
|
if (dataEntities1.length > 0 && StringUtils.equals("save", operationKey)) {
|
|
DynamicObject dynamicObject = dataEntities1[0];
|
|
logger.info("PurRefundApplySaveOpPlugin:单据号" + dynamicObject.getString("billno"));
|
|
DynamicObjectCollection billentry1 = dynamicObject.getDynamicObjectCollection("billentry");
|
|
if (billentry1.size() > 0) {
|
|
DynamicObject dynamicObject1 = billentry1.get(0);
|
|
String srcbillnumber = dynamicObject1.getString("srcbillnumber");
|
|
DynamicObject pm_purorderbill = BusinessDataServiceHelper.loadSingle(PM_PURORDERBILL, new QFilter[]{new QFilter("billno", QCP.equals, srcbillnumber)});
|
|
DynamicObjectCollection dynamicObjects = new DynamicObjectCollection();
|
|
dynamicObjects.add(pm_purorderbill);
|
|
dynamicObjects.stream().collect(Collectors.toList());
|
|
AutoFixLinkUtil fixLinkHelp = new AutoFixLinkUtil();
|
|
|
|
fixLinkHelp.linkSourceRow(dynamicObject, dynamicObjects.stream().collect(Collectors.toList()), PM_PURREFUNDAPPLYBILL, billentry, "srcbillentryid",
|
|
PM_PURORDERBILL, billentry, "", "billentry_lk");
|
|
logger.info("PurRefundApplySaveOpPlugin:修复关联关系成功");
|
|
|
|
}
|
|
|
|
}
|
|
logger.info("PurRefundApplySaveOpPlugin-end");
|
|
if (StringUtils.equals("save", operationKey)) {
|
|
for (DynamicObject dynamicObject : dataEntities1) {
|
|
DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry");
|
|
ListIterator<DynamicObject> iterator = billentry.listIterator();
|
|
Boolean falg = true;
|
|
while (iterator.hasNext()) {
|
|
DynamicObject next = iterator.next();
|
|
Boolean tqq9_isreturn = next.getBoolean("tqq9_isreturn");
|
|
if (!tqq9_isreturn) {
|
|
iterator.remove();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (StringUtils.equals("submit", operationKey)) {
|
|
for (DynamicObject dynamicObject : dataEntities1) {
|
|
DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry");
|
|
ListIterator<DynamicObject> iterator = billentry.listIterator();
|
|
while (iterator.hasNext()) {
|
|
DynamicObject next = iterator.next();
|
|
Boolean tqq9_isreturn = next.getBoolean("tqq9_isreturn");
|
|
if (!tqq9_isreturn) {
|
|
iterator.remove();
|
|
}
|
|
}
|
|
}
|
|
OperateOption option = this.getOption();
|
|
OperationServiceHelper.executeOperate("save", "pm_purrefundapplybill", dataEntities1, option);
|
|
}
|
|
}
|
|
} |