Преглед изворни кода

新增供应商银行信息变更操作插件\代码优化

sbtjtserver/zhaoxh пре 5 месеци
родитељ
комит
8c8e6378f7

+ 48 - 0
src/main/java/bamp/basedata/opplugin/SupplierBankChangeOpPlugin.java

@@ -0,0 +1,48 @@
+package bamp.basedata.opplugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+
+/**
+ * 供应商银行信息变更操作插件
+ * 2024-11-08 wangj
+ * 主要功能:供应商银行信息变更单审批通过时,反写更新供应商银行信息
+ */
+public class SupplierBankChangeOpPlugin  extends AbstractOperationServicePlugIn {
+    @Override
+    public void endOperationTransaction(EndOperationTransactionArgs e) {
+        super.endOperationTransaction(e);
+        DynamicObject[] dynamicObjects = e.getDataEntities();
+        for (int i = 0; i < dynamicObjects.length; i++) {
+            DynamicObject bill = dynamicObjects[i];
+            DynamicObject supplier = BusinessDataServiceHelper.loadSingle(
+                    bill.getDynamicObject("nckd_supplierfield").getLong("id"),"bd_supplier");
+            DynamicObjectCollection supplierBankCol = supplier.getDynamicObjectCollection("entry_bank");
+            supplierBankCol.clear();
+            DynamicObjectCollection entryCol = bill.getDynamicObjectCollection("nckd_entry_bank");
+            for(DynamicObject entry : entryCol){
+                DynamicObject supplierEntryInfo = supplierBankCol.addNew();
+                supplierEntryInfo.set("bankaccount",entry.get("nckd_bankaccount"));
+                supplierEntryInfo.set("accountname",entry.get("nckd_accountname"));
+                supplierEntryInfo.set("iban",entry.get("nckd_iban"));
+                supplierEntryInfo.set("bank",entry.get("nckd_bank"));
+                supplierEntryInfo.set("currency",entry.get("nckd_currency"));
+                supplierEntryInfo.set("payeeadmindivision",entry.get("nckd_payeeadmindivision"));
+                supplierEntryInfo.set("payeeaddress",entry.get("nckd_payeeaddress"));
+                supplierEntryInfo.set("payeephone",entry.get("nckd_payeephone"));
+                supplierEntryInfo.set("isdefault_bank",entry.get("nckd_isdefault_bank"));
+                supplierEntryInfo.set("bankaccounttype",entry.get("nckd_bankaccounttype"));
+                supplierEntryInfo.set("settlment",entry.get("nckd_settlment"));
+                supplierEntryInfo.set("commissionbearer",entry.get("nckd_commissionbearer"));
+                supplierEntryInfo.set("liquidationparam",entry.get("nckd_liquidationparam"));
+                supplierEntryInfo.set("agentbankaccount",entry.get("nckd_agentbankaccount"));
+                supplierEntryInfo.set("agentbank",entry.get("nckd_agentbank"));
+            }
+            SaveServiceHelper.save(new DynamicObject[]{supplier});
+        }
+    }
+}

+ 8 - 2
src/main/java/fi/gl/task/AutoSynVoucher.java

@@ -41,6 +41,7 @@ public class AutoSynVoucher extends AbstractTask {
     String SELECTFIELDS = "billno,period,org,createtime,auditdate,bookeddate," +
             "entries,entries.account,entries.creditori,entries.debitori,entries.creditlocal,entries.debitlocal,entries.entrydc,entries.edescription,entries.currency";
 
+    Date beginDate = null;
     @Override
     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
         Connection conn = null;
@@ -66,6 +67,7 @@ public class AutoSynVoucher extends AbstractTask {
                 }
 
                 //查找待同步数据执行插入数据
+                beginDate = getBeginDate();
                 log.info("[凭证反同步用友]同步数据执行插入开始");
                 pstmt1 = conn.prepareStatement("INSERT INTO jf_voucher (" + DB_VOUCHER_FIELDS + ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                 doExecuteNewData(conn,pstmt1,orgMap_numbber,orgMap_name);
@@ -73,7 +75,10 @@ public class AutoSynVoucher extends AbstractTask {
 
                 //清空汇总中间表
                 pstmt2 = conn.createStatement();
-                String deleteSql = "DELETE FROM jf_balance";
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                String yearv = sdf.format(beginDate).substring(0,4);
+                int periodv = Integer.valueOf(sdf.format(beginDate).substring(5,7));
+                String deleteSql = "DELETE FROM jf_balance WHERE yearv='"+yearv+"' AND periodv='"+periodv+"'";
                 int affectedRows = pstmt2.executeUpdate(deleteSql);
                 log.info("[凭证反同步用友]删除中间表记录数:"+affectedRows);
                 conn.commit();
@@ -149,6 +154,7 @@ public class AutoSynVoucher extends AbstractTask {
     * 获取凭证汇总数据集
      */
     private JSONArray getVoucherTotalDatas(Map orgMapNumbber, Map orgMapName) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         String sql = "SELECT TEMP.orgid,TEMP.yearv,TEMP.periodv,TEMP.subjcd,TEMP.subjnm,TEMP.currentid,TEMP.entrydc," +
                 "SUM(TEMP.creditamount) creditamount_total,SUM(TEMP.debitamount) debitamount_total," +
                 "SUM(TEMP.localcreditamount) localcreditamount_total,SUM(TEMP.localdebitamount) localdebitamount_total " +
@@ -163,6 +169,7 @@ public class AutoSynVoucher extends AbstractTask {
                     "LEFT JOIN T_BD_Account ACC ON VOUE.faccountid  = ACC.FID " +
                     "WHERE VOU.fispost='1' " +
                     "AND VOU.fk_nckd_issynyy='1' " +
+                    "AND VOU.Fbookeddate>='"+sdf.format(beginDate)+"'"+
                 ") TEMP " +
                 "GROUP BY TEMP.orgid,TEMP.yearv,TEMP.periodv,TEMP.subjcd,TEMP.subjnm,TEMP.currentid,TEMP.entrydc";
         DataSet ds = DB.queryDataSet(this.getClass().getName(), new DBRoute("fi"), sql, null);
@@ -385,7 +392,6 @@ public class AutoSynVoucher extends AbstractTask {
     }
 
     private DynamicObject[] getVoucherDatas() {
-        Date beginDate = getBeginDate();
         QFilter qFilter_beginDate = new QFilter("bookeddate",QCP.large_equals,beginDate);
         QFilter qFilter_ispost = new QFilter("ispost", QCP.equals,"1");
         QFilter qFilter_issynyy = new QFilter("nckd_issynyy", QCP.equals,"0");