Browse Source

业务处理单过滤

xuhao 6 months ago
parent
commit
490091f1cf

+ 11 - 1
src/main/java/fi/em/formPlugin/BusinessProcessingConvertPlugIn.java

@@ -13,12 +13,12 @@ public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn imple
     @Override
     public void beforeBuildRowCondition(BeforeBuildRowConditionEventArgs e) {
         //获取页面插件传递过来的操作参数
-        String bdsupplier = this.getOption().getVariableValue("bdsupplier");
         String orgnumber = this.getOption().getVariableValue("orgnumber");
         String jsonArray = this.getOption().getVariableValue("JSONArray");
         JSONArray objects = JSONArray.parseArray(jsonArray);
         String type = this.getOption().getVariableValue("type");//1
         if("drawyfgz".equals(type)){
+            String bdsupplier = this.getOption().getVariableValue("bdsupplier");
             QFilter numberQFilter = new QFilter("ap_finapbill.org.number", QCP.equals, orgnumber);
             numberQFilter.and("ap_finapbill.asstact.id", QCP.equals, Long.valueOf(bdsupplier));
             for(int i=0;i<objects.size();i++){
@@ -28,6 +28,7 @@ public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn imple
             }
             e.getCustQFilters().add(numberQFilter);
         }else if("drawysgz".equals(type)){
+            String bdsupplier = this.getOption().getVariableValue("bdsupplier");
             QFilter numberQFilter = new QFilter("ar_finarbill.org.number", QCP.equals, orgnumber);
             numberQFilter.and("ar_finarbill.asstact.id", QCP.equals, Long.valueOf(bdsupplier));
             for(int i=0;i<objects.size();i++){
@@ -37,6 +38,7 @@ public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn imple
             }
             e.getCustQFilters().add(numberQFilter);
         }else if("drawzlht".equals(type)){
+            String bdsupplier = this.getOption().getVariableValue("bdsupplier");
             QFilter numberQFilter = new QFilter("fa_lease_contract.org.number", QCP.equals, orgnumber);
             numberQFilter.and("fa_lease_contract.leaser.number", QCP.equals, bdsupplier);
             for(int i=0;i<objects.size();i++){
@@ -45,6 +47,14 @@ public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn imple
                 numberQFilter.and("fa_lease_contract.number", QCP.not_equals2, id);
             }
             e.getCustQFilters().add(numberQFilter);
+        }else if("draw-yf".equals(type)){
+            QFilter numberQFilter = new QFilter("er_prepaybill.costdept.number", QCP.equals, orgnumber);
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                numberQFilter.and("er_prepaybill.billno", QCP.not_equals2, id);
+            }
+            e.getCustQFilters().add(numberQFilter);
         }
         super.beforeBuildRowCondition(e);
     }

+ 42 - 0
src/main/java/fi/em/formPlugin/TravelChargePrepaidLoanEditPlugin.java

@@ -0,0 +1,42 @@
+package fi.em.formPlugin;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.exception.KDBizException;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.botp.Draw;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.sdk.plugin.Plugin;
+
+public class TravelChargePrepaidLoanEditPlugin extends AbstractListPlugin implements Plugin {
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        if (args.getSource() instanceof Draw) {
+            Draw draw = (Draw) args.getSource();
+            if (draw.getOperateKey().equals("draw-yf")) {
+//                Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
+                Object nckd_orgv = this.getModel().getValue("costdept");//获取当前单据付款人
+//                DynamicObject dynamicObject = (DynamicObject) value;
+                DynamicObject orgv = (DynamicObject) nckd_orgv;
+                if (orgv == null) {
+                    throw new KDBizException("费用承担公司为空!");
+                }
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_clearloanentry");
+                JSONArray jSONArray = new JSONArray();
+                for(int i=0;i<nckdEntryentity1.size();i++){
+                    JSONObject jsonObject = new JSONObject();
+                    DynamicObject dynamicObject1 = nckdEntryentity1.get(i);
+                    String nckdTextfield7 = dynamicObject1.getString("nckd_billno");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
+                String orgnumber = orgv.getString("number");
+                draw.getOption().setVariableValue("orgnumber", orgnumber);
+                draw.getOption().setVariableValue("type", "draw-yf");
+            }
+        }
+    }
+}

+ 28 - 2
src/main/java/fi/em/opplugin/AmountOpPlugin.java

@@ -1,9 +1,12 @@
 package fi.em.opplugin;
 
+import com.alibaba.fastjson.JSONObject;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.EntityMetadataCache;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
 import kd.bos.exception.KDBizException;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
@@ -11,6 +14,8 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author cjz
@@ -20,8 +25,29 @@ import java.math.BigDecimal;
 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){
+                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){
+                    throw new KDBizException("请上传出差申请附件!");
+                }
+            }
+        }
+    }
 
     @Override
     public void beginOperationTransaction(BeginOperationTransactionArgs e){

+ 40 - 0
src/main/java/fi/em/opplugin/ExpenseAccountFileOpPlugin.java

@@ -0,0 +1,40 @@
+package fi.em.opplugin;
+
+import com.alibaba.fastjson.JSONObject;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+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.servicehelper.BusinessDataServiceHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExpenseAccountFileOpPlugin extends AbstractOperationServicePlugIn {
+
+    @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("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){
+                    throw new KDBizException("请上传费用申请附件!");
+                }
+            }
+        }
+    }
+}