Browse Source

业务处理单过滤

xuhao 6 months ago
parent
commit
3343d47d7e

+ 21 - 0
src/main/java/fi/em/opplugin/AmountOpPlugin.java

@@ -16,6 +16,7 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author cjz
@@ -25,6 +26,26 @@ import java.util.List;
 public class AmountOpPlugin extends AbstractOperationServicePlugIn {
 
     private static String er_prepaybill="er_prepaybill";//预付报销单标识
+    @Override
+    public void endOperationTransaction(EndOperationTransactionArgs e) {
+        super.endOperationTransaction(e);
+        //获取当前操作单据数组
+        DynamicObject[] dynamicObjects = e.getDataEntities();
+        for (int i = 0; i < dynamicObjects.length; i++) {
+            JSONObject object = new JSONObject();
+            //当前单头数据包
+            DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+             DynamicObjectCollection writeoffapply = info.getDynamicObjectCollection("writeoffapply");
+            if(writeoffapply.size()<=0){
+                QFilter nckd_orgamountFilter = new QFilter("fbilltype", QCP.equals, "er_publicreimbursebill");
+                nckd_orgamountFilter.and("finterid", QCP.equals, info.getLong("id"));
+                Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_attachment", new QFilter[]{nckd_orgamountFilter});
+                if(nckd_cas_arbilMap.size()<=0){
+                    throw new KDBizException("请上传出差申请附件!");
+                }
+            }
+        }
+    }
 
     @Override
     public void beginOperationTransaction(BeginOperationTransactionArgs e){

+ 8 - 7
src/main/java/fi/em/opplugin/ExpenseAccountFileOpPlugin.java

@@ -7,10 +7,14 @@ import kd.bos.entity.EntityMetadataCache;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
 import kd.bos.exception.KDBizException;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 public class ExpenseAccountFileOpPlugin extends AbstractOperationServicePlugIn {
 
@@ -25,13 +29,10 @@ public class ExpenseAccountFileOpPlugin extends AbstractOperationServicePlugIn {
             DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
             DynamicObjectCollection writeoffapply = info.getDynamicObjectCollection("contractentry");
             if(writeoffapply.size()<=0){
-                DynamicObjectCollection nckdAttachmentpanelsq = info.getDynamicObjectCollection("nckd_attachmentpanelsq");
-                List<Object> threeAttachIdSet = new ArrayList<>();
-                // 获取附件
-                nckdAttachmentpanelsq.forEach(file -> threeAttachIdSet.add(file.getDynamicObject("fbasedataid").getPkValue()));
-                // 提取附件信息
-                DynamicObject[] sourceAttachments = BusinessDataServiceHelper.load(threeAttachIdSet.toArray(), EntityMetadataCache.getDataEntityType("bd_attachment"));
-                if(sourceAttachments.length<=0){
+                QFilter nckd_orgamountFilter = new QFilter("fbilltype", QCP.equals, "er_tripreimburse");
+                nckd_orgamountFilter.and("finterid", QCP.equals, info.getLong("id"));
+                Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_attachment", new QFilter[]{nckd_orgamountFilter});
+                if(nckd_cas_arbilMap.size()<=0){
                     throw new KDBizException("请上传费用申请附件!");
                 }
             }