wanwei 7 місяців тому
батько
коміт
8fd7f9405e

+ 0 - 198
src/main/java/fi/cas/opplugin/UnPaymentProcessOpPlugin.java

@@ -1,198 +0,0 @@
-package fi.cas.opplugin;
-
-import com.alibaba.druid.util.StringUtils;
-import dm.jdbc.util.StringUtil;
-import fi.cas.common.SettlementStatusEnum;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
-import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
-import kd.bos.orm.query.QCP;
-import kd.bos.orm.query.QFilter;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.operation.SaveServiceHelper;
-
-import java.math.BigDecimal;
-import java.util.HashMap;
-
-//付款处理单取消付款反写
-public class UnPaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
-    private static String nckd_cas_arbill_gz_l = "nckd_cas_arbill"; //应收挂帐单标识
-    private static String nckd_er_prepaybill_ext = "er_prepaybill"; //预付借款单标识
-    private static String nckd_er_publicreimbur_ext = "er_publicreimbursebill"; //报销单标识
-    private static String er_contractbill = "er_contractbill"; //合同台账单标识
-    private static String nckd_ap_finapbill_gz = "ap_finapbill"; //应付挂账单标识
-    @Override
-    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
-        DynamicObject[] dynamicObjects = e.getDataEntities();
-        for (int i = 0; i < dynamicObjects.length; i++) {
-            //当前单头数据包
-            DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-            //获取源单id
-            Long sourcebillid = info.getLong("sourcebillid");
-            //存储源单分录id和付款处理分录实付金额
-            HashMap<String, BigDecimal> amountMap = new HashMap<>();
-            //循环付款明细分录
-            for (DynamicObject entryentity : info.getDynamicObjectCollection("entry")) {
-                //取当前循环付款明细分录的实付金额
-                BigDecimal expenseamount = entryentity.getBigDecimal("e_actamt");
-                //取当前循环付款明细分录的源单分录id
-                String sourcebillentryid = entryentity.getString("e_sourcebillentryid");
-                amountMap.put(sourcebillentryid,expenseamount);
-            }
-
-            //查询应收挂账单
-            QFilter gzFilter = new QFilter("id", QCP.equals,sourcebillid);
-            DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(nckd_cas_arbill_gz_l,"id",new QFilter[] {gzFilter});
-
-            //查询报销单
-            QFilter bxFilter = new QFilter("id", QCP.equals,sourcebillid);
-            DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load(nckd_er_publicreimbur_ext,"id",new QFilter[] {bxFilter});
-
-            //应收方向的回写
-            if (gzDynamicObjects.length > 0) {
-                for (int c=0;c<gzDynamicObjects.length;c++) {
-                    //应收挂帐单头数据包
-                    DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[i].getPkValue(), gzDynamicObjects[i].getDynamicObjectType().getName());
-                    //获取预付借款单id
-                    Long yfjkId = gzInfo.getLong("sourcebillid");
-                    //存储预付借款单分录id和付款处理分录实付金额
-                    HashMap<String,BigDecimal> yfjkMap = new HashMap<>();
-                    //应收挂帐单头已结算金额
-                    BigDecimal totalSettledamt = BigDecimal.ZERO;
-                    //应收挂帐单头未结算金额
-                    BigDecimal totalUnsettledamt = BigDecimal.ZERO;
-                    //循环应收挂帐单付款明细分录
-                    for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
-                        //获取分录实付金额
-                        BigDecimal expenseamount = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取已结算金额
-                        BigDecimal settledamt = entryentity.getBigDecimal("e_settledamt");
-                        settledamt = settledamt.subtract(expenseamount);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("e_settledamt",settledamt);
-                        entryentity.set("e_unsettledamt",expenseamount);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(expenseamount);
-                        String yfjkSourceBillEntryId = entryentity.getString("e_sourcebillentryid");
-                        yfjkMap.put(yfjkSourceBillEntryId,expenseamount);
-                    }
-                    //结算字段赋值
-                    settleMethod(gzInfo,"settlestatus","settleamount","unsettleamount",totalSettledamt,totalUnsettledamt);
-                    SaveServiceHelper.save(new DynamicObject[]{gzInfo});
-
-                    //查询预付借款单
-                    QFilter nckd_yfjkFilter = new QFilter("id", QCP.equals,yfjkId);
-                    DynamicObject[] yfjkDynamicObjects = BusinessDataServiceHelper.load(nckd_er_prepaybill_ext,"id",new QFilter[] {nckd_yfjkFilter});
-                    //循环数组获取结算状态,已结算金额,未结算金额
-                    for (int d=0;d<yfjkDynamicObjects.length;d++) {
-                        //预付借款单头数据包
-                        DynamicObject yfjkInfo = BusinessDataServiceHelper.loadSingle(yfjkDynamicObjects[i].getPkValue(), yfjkDynamicObjects[i].getDynamicObjectType().getName());
-                        //循环预付借款单预付借款信息分录
-                        for (DynamicObject entryentity : yfjkInfo.getDynamicObjectCollection("expenseentryentity")) {
-                            //获取分录实付金额
-                            BigDecimal expenseamount = yfjkMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:yfjkMap.get(entryentity.getString("id"));
-                            //获取已结算金额
-                            BigDecimal settledamt = entryentity.getBigDecimal("nckd_settleamount_et");
-                            settledamt = settledamt.subtract(expenseamount);
-                            //反写分录已结算金额,未结算金额
-                            entryentity.set("nckd_settleamount_et",settledamt);
-                            entryentity.set("nckd_unsettleamount_et",expenseamount);
-                        }
-                        //结算字段赋值
-                        settleMethod(yfjkInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",totalSettledamt,totalUnsettledamt);
-                        SaveServiceHelper.save(new DynamicObject[]{yfjkInfo});
-                    }
-                }
-            }//应付方向的回写
-            else if (bxDynamicObjects.length > 0) {
-                //循环数组获取结算状态,已结算金额,未结算金额
-                for (int c=0;c<bxDynamicObjects.length;c++) {
-                    //报销单头数据包
-                    DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
-                    Long bxId = bxInfo.getLong("id");
-                    String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid");
-                    //报账类型
-                    String reimbursetype = bxInfo.getString("reimbursetype");
-                    //已结算金额
-                    BigDecimal totalSettledamt = BigDecimal.ZERO;
-                    //未结算金额
-                    BigDecimal totalUnsettledamt = BigDecimal.ZERO;
-                    //循环报销单收款信息分录
-                    for (DynamicObject entryentity : bxInfo.getDynamicObjectCollection("accountentry")) {
-                        //获取分录收款金额
-                        BigDecimal expenseamount = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取已结算金额
-                        BigDecimal settledamt = entryentity.getBigDecimal("nckd_settleamount_et");
-                        settledamt = settledamt.subtract(expenseamount);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("nckd_settleamount_et",settledamt);
-                        entryentity.set("nckd_unsettleamount_et",expenseamount);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(expenseamount);
-                    }
-                    //结算字段赋值
-                    settleMethod(bxInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",totalSettledamt,totalUnsettledamt);
-                    SaveServiceHelper.save(new DynamicObject[]{bxInfo});
-                    //查询应付挂账
-                    QFilter nckd_yfgzFilter = new QFilter("sourcebillid", QCP.equals,bxId);
-                    DynamicObject[] yfgzDynamicObjects = BusinessDataServiceHelper.load(nckd_ap_finapbill_gz,"id",new QFilter[] {nckd_yfgzFilter});
-                    if (yfgzDynamicObjects.length > 0) {
-                        for (int f=0;f<yfgzDynamicObjects.length;f++) {
-                            //应付挂账单
-                            DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(yfgzDynamicObjects[i].getPkValue(), yfgzDynamicObjects[i].getDynamicObjectType().getName());
-                            //结算字段赋值
-                            settleMethod(gzInfo,"settlestatus","settleamount","unsettleamount",totalSettledamt,totalUnsettledamt);
-                            SaveServiceHelper.save(new DynamicObject[]{gzInfo});
-                        }
-                    }
-                    //报账类型等于工程报账回写合同台账单
-                    if (!StringUtils.isEmpty(nckd_sourcebillid)) {
-                        //获取合同台账单id
-                        Long contractbillId = Long.parseLong(nckd_sourcebillid);
-                        //查询合同台账单
-                        QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
-                        DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
-                        for (int j=0;j<htDynamicObjects.length;j++) {
-                            //合同台账单头数据包
-                            DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
-                            //未结算金额
-                            BigDecimal nckd_unsettleamount = htInfo.getBigDecimal("nckd_unsettleamount");
-                            //已结算金额
-                            BigDecimal nckd_settleamount = htInfo.getBigDecimal("nckd_settleamount");
-                            if (nckd_settleamount.compareTo(totalUnsettledamt) > 0) {
-                                nckd_settleamount = nckd_settleamount.subtract(totalUnsettledamt);
-                            }else {
-                                nckd_settleamount = BigDecimal.ZERO;
-                            }
-                            nckd_unsettleamount = nckd_unsettleamount.add(totalUnsettledamt);
-                            htInfo.set("oripayedamount",nckd_settleamount);
-                            htInfo.set("orinotpayamount",nckd_unsettleamount);
-                            //结算字段赋值
-                            settleMethod(htInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",nckd_settleamount,nckd_unsettleamount);
-                            SaveServiceHelper.save(new DynamicObject[]{htInfo});
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /*
-    * 给结算状态,结算金额,未结算金额赋值
-    * */
-    private void settleMethod(DynamicObject object ,String settlestatus ,String settleamount ,String unsettleamount ,BigDecimal totalSettledamt ,BigDecimal totalUnsettledamt) {
-        if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
-            object.set(settlestatus, SettlementStatusEnum.已结算.getValue());
-            object.set(settleamount, totalSettledamt);
-            object.set(unsettleamount, totalUnsettledamt);
-        } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
-            object.set(settlestatus, SettlementStatusEnum.未结算.getValue());
-            object.set(settleamount, totalSettledamt);
-            object.set(unsettleamount, totalUnsettledamt);
-        } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
-            object.set(settlestatus, SettlementStatusEnum.部分结算.getValue());
-            object.set(settleamount, totalSettledamt);
-            object.set(unsettleamount, totalUnsettledamt);
-        }
-    }
-}